What Codebahn adds to Forgejo
Codebahn runs Forgejo with a managed layer on top. This page lists what that layer abstracts, what it adds, and what it changes. For stock Forgejo features (repositories, the API, user admin, Actions syntax), see the upstream docs.
Runner provisioning
Section titled “Runner provisioning”You pick a runner size in runs-on, we provision an isolated, ephemeral VM on Scaleway in Paris. No runner binary to install, no Docker host to manage, no registration tokens for the common case. Jobs start in about 40 seconds cold, 2 seconds warm. Bring your own runner alongside ours if you want different hardware.
See CI runners for sizes, the pre-cached toolchain, and bring-your-own setup.
GitHub Actions compatibility
Section titled “GitHub Actions compatibility”Workflow files in .codebahn/workflows/, .forgejo/workflows/, .gitea/workflows/, and .github/workflows/ are all read and merged, so GitHub workflows run without renaming the directory. The runner image follows the GitHub Actions layout with pre-cached Go and Node toolchains in the GitHub-style toolcache, so actions/setup-go and actions/setup-node resolve offline. New commits to the same branch auto-cancel in-progress runs on that branch.
See Workflow directories for precedence and de-duplication, and CI runners for the image contents.
Deployment environments
Section titled “Deployment environments”A callback-driven environment system turns PaaS webhooks into commit statuses and PR comments. Create an environment, paste the callback URL into your provider’s webhook settings, and deploy results appear on the commit and pull request. Supports Vercel, Netlify, Render, Railway, Cloudflare Pages, and a generic format.
See Environments for the callback format and provider notes.
Container registry integration
Section titled “Container registry integration”The built-in OCI container registry lives at your instance host. In CI, ${{ github.token }} authenticates automatically, so you push images without creating or storing a PAT. Every image is private; there is no public or anonymous pull.
See Container registry for image naming, storage quota, and cleanup rules.
MCP server and CLI
Section titled “MCP server and CLI”A single binary (codebahn) serves as both an MCP server for AI assistants and a command-line tool for humans. It exposes 51 tools covering repos, branches, issues, pull requests (including reviews), and CI. Works with Claude Code, Cursor, and VS Code.
See Connect an AI assistant for client setup and Command-line tool for terminal usage.
Opinionated defaults
Section titled “Opinionated defaults”Codebahn changes a few Forgejo defaults to match the product’s stance:
- Private-only repositories. No public repos, no anonymous pull. Every image in the container registry is private. Tenant data is never browsable without auth.
- Workflow directory merging. Enabled by default. Upstream Forgejo reads only the first directory found; Codebahn reads all four and merges.
- Auto-cancel on same-branch push. A new commit to a branch cancels in-progress runs on that branch. Override with a
concurrencyblock.
What we leave to upstream Forgejo
Section titled “What we leave to upstream Forgejo”Everything not listed above is stock Forgejo: repository management, the REST API, OAuth providers, package formats beyond OCI, wiki, projects, and admin. We link to the upstream docs and do not re-document it.