How gittan works
Push code. Pipeline runs. Results stream to your terminal. No tabs, no waiting, no ceremony.
GitHub Actions
~90s
overhead before your code even starts running
- Provision VM from scratch
- Pull Docker images every run
- Install dependencies every run
- Sequential step execution
gittan
<1s
from push to first step executing
- Pre-pulled images, warm runners
- Sub-second container start
- Layer caching across runs
- Parallel DAG execution
Pipeline flow
What happens when you run git push origin main
git push
→
gated?
→
pipeline runs
→
green?
yes →
main updated
no →
push rejected
GitHub vs gittan
Ship a change to main.
GitHub
11 steps- Create feature branch
- Push branch to remote
- Open pull request
- Wait for CI to start (~90s)
- CI runs, review requested
- Wait for reviewer
- Address review comments
- Re-request review
- Get approval
- Merge PR
- Delete branch
gittan
1 stepgit push origin main
Pipeline runs during push. If it passes, main is updated. If it fails, push is rejected. Done.
Pipeline config layers
Three layers merge into a single pipeline. Org policies are enforced, team templates provide defaults, repos can add their own steps.
Injected
Org policy
Security gates, license scanning, image signing. Teams cannot remove these steps.
# org-policy.yaml (managed by platform team)
steps:
- name: license-check
image: gittan/license-scanner:20260601
enforced: true
- name: sign-image
image: gittan/cosign:20260601
enforced: trueTerminal feedback
Pipeline results stream to your terminal during git push. No browser needed.
terminal
$ git push origin main
remote: gittan pipeline started
remote:
remote: [license-check] running...
remote: [license-check] passed (0.4s)
remote: [lint] running...
remote: [test] running...
remote: [lint] passed (1.2s)
remote: [test] passed (3.8s)
remote: [build] running...
remote: [build] passed (2.1s)
remote: [sign-image] running...
remote: [sign-image] passed (0.3s)
remote:
remote: Pipeline passed (7.8s total)
remote: main updated: a1b2c3d..f4e5d6a
To gittan.eu:acme/api-service.git
a1b2c3d..f4e5d6a main -> main