The world's a stage, give it a pipeline.
A declarative lifecycle runtime that governs Git as the source of truth, enforcing operator-defined intent across GitOps workflows, Kubernetes, Docker, and CI ecosystems. StageFreight is open-source, self-building, and replaces fragile shell-script CI pipelines with a single Go binary driven by one .stagefreight.yml file. There's a setting for every stage — this is theatre.
You describe intent once in .stagefreight.yml, and StageFreight runs it as a lifecycle — the same five stages whether it's shipping a container image, cutting a cross-forge release, or reconciling a cluster. It even renders your forge's pipeline file for you — stagefreight ci render gitlab writes the .gitlab-ci.yml (also GitHub, Gitea, Forgejo) — so the CI document is a generated artifact StageFreight owns, never hand-maintained.
| Act | What it does | Powered by |
|---|---|---|
| Audition | Prove the change before anything acts on it | lint · tests · policy · config-freshness |
| Perform | The one authoritative build — or, per mode, a reconcile | docker image · binary · gitops · compose |
| Review | Scan what was built, before it can ship | Trivy · Grype · SBOM |
| Publish | The only act that distributes | registries · releases · packages · pages · project metadata |
| Narrate | The report that always runs, even on failure | badges · notifications · run summary |
Git is the source of truth: the acts only enact accepted state — never a merge request, never an unmerged branch. The same binary is both the CI image and your local CLI.
| Detect → Plan → Build | Finds Dockerfiles, resolves tags from git, builds multi-platform images via docker buildx |
| Multi-Registry Push | Docker Hub, GHCR, GitLab, Quay, Harbor, JFrog, Gitea — with branch/tag filtering via regex (! negation) |
| Security Scanning | Trivy + Grype vulnerability scan, Syft SBOM generation, configurable detail levels per branch or tag |
| Cross-Forge Releases | Create releases on GitLab, GitHub, or Gitea with auto-generated notes, badges, and cross-platform sync |
| Cache-Aware Linting | Parallel lint modules, delta-only on changed files, with JUnit reporting for CI |
| Retention Policies | Restic-style tag retention (keep_last, daily, weekly, monthly, yearly) across all registry providers |
| Self-Building | StageFreight builds, scans, and releases itself through its own pipeline — this image is one of its own artifacts |
| Start Here | Quick-Start Scenarios · Full Docs |
| CLI Reference | Full Command Reference |
| Config Reference | Full Config Schema |
| Manifest Examples | Aspirational Example Configs · Quick Examples |
| Roadmap | Full Vision |
| GitLab Components | Publishing GitLab Components |
- Fork the repository
- Submit Pull Requests / Merge Requests
- Open issues with ideas, bugs, or feature requests
The Software provided hereunder is licensed "as-is," without warranties of any kind. The developer makes no promises about functionality, performance, or availability. Not responsible if StageFreight replaces your entire CI pipeline and you find yourself with free time you didn't expect, your retention policies work so well your registry bill drops and finance gets confused, or your release notes become more detailed than the actual features they describe.
Any resemblance to working software is entirely intentional but not guaranteed. The developer claims no credit for anything that actually goes right — that's all you and the unstoppable force of the Open Source community.
Distributed under the AGPL-3.0-only License. See licensing for commercial licensing.
