Stacks / Backend
Woodpecker CI / Forgejo Actions
CI you host. Woodpecker is Apache-2.0 pipelines; Forgejo Actions runs the YAML you already know — CircleCI without the credit pack.
The problem
CircleCI Performance adds users at $15/month and extra credits at $15 per 25,000. You wanted git-push-build. Woodpecker CI is Apache-2.0 (the maintained Drone fork). Forgejo Actions is CI next to the repo if you already run Forgejo. Jenkins is still MIT if you already live there.
Replaces
CircleCI
Estimated SaaS saved
$2,400
per year, small team, before lock-in
Start on RailwayPlaceholder: Woodpecker server + an agent that can run Docker. Forgejo Actions if the git host is already Forgejo. Runners want Docker socket — a VPS is often easier than a single Railway service.
The stack
- Woodpecker CI
Apache-2.0 CI pipelines (Drone fork)
- Forgejo
Self-hosted git plus Actions
Cost table
| You stop paying | Typical / year | Self-host instead |
|---|---|---|
| CircleCI Performance (small team) | $2,400 | Woodpecker + a runner |
Agent setup prompt
Replace CircleCI with Woodpecker CI (preferred) or Forgejo Actions. - Server + at least one agent/runner with Docker. Persist the server DB. Mirror one pipeline from .circleci/config.yml — expect a rewrite, not a converter. - Bind HTTP to 0.0.0.0:$PORT. Lock registration. - Write AGENT_PROMPT.md. Do not nest Docker-in-Docker on Railway unless you have tested it.
Also as markdown: /stacks/woodpecker-ci.md
FAQ
- Will my CircleCI YAML run as-is?
- No. Woodpecker and Forgejo Actions use their own pipeline files. Port the jobs you still run; leave archived workflows alone.