GitHub Actions
CCCFreemiumCI/CD in the repository; the only path to production in an agent-run codebase.
What it is
GitHub Actions runs workflows defined in YAML files under .github/workflows in response to repository events: a pull request opened, a push to main, a tag, a schedule, or a manual workflow_dispatch with inputs. Jobs run on hosted Linux, macOS and Windows runners or your own machines, and a marketplace of reusable actions covers checkouts, caching, language setups and deploys. Environments add required reviewers and scoped secrets, so "production" can require a human click while "staging" deploys automatically.
For public repositories minutes are free; private repositories get a monthly allowance on free and paid plans and pay per minute beyond it.
Where it fits in the AI OS
Build, the gate between an agent's branch and a live system. When several agents open pull requests a day, the pipeline is the reviewer that never gets tired: lint, type check, build, smoke test, deploy to staging. In the Work OS view, it is also where the deploy decision becomes a recorded event rather than a laptop command.
Insider notes
membersHow Serge's stack uses it
The rule in the project is "deploy = GitHub Actions, never wrangler
deploy by hand from a laptop." .github/workflows/ci.yml runs checks on every PR; a push to main deploys to staging on stage.bulaev.ai and runs a smoke check; production is a workflow_dispatch with a vX.Y.Z tag, run only after staging is verified. Secrets (Cloudflare API token and account id) live in GitHub secrets, and a Linear issue moves to Done only after the deploy is verified against the live site, not when the build goes green.
Setup in 5 minutes
- Create
.github/workflows/ci.ymlwithon: [pull_request, push]and one job:actions/checkout@v4,actions/setup-node@v4with cache,npm ci,npm run lint,npm run build. - Push a branch and open a PR; watch the check appear.
- Add a second job gated on
github.ref == 'refs/heads/main'that runsnpx wrangler deploywithCLOUDFLARE_API_TOKENfrom secrets. - Create a
productionenvironment with a required reviewer and aworkflow_dispatchtrigger that takes ataginput. - Turn on branch protection for
main: require the check, require a PR.
Alternatives
- GitLab CI — the same idea if your code lives on GitLab.
- Cloudflare Workers Builds — Cloudflare's own git-connected builds; fewer knobs, no matrix jobs.
- Buildkite / CircleCI — when you outgrow hosted runners.
- Woodpecker / Gitea Actions — for self-hosted git backends.