Agent-CI: Run GitHub Actions on Your Machine

handfuloflight1 pts0 comments

Agent CI — Run GitHub Actions Locally

Run GitHub Actions on your machine.<br>Caching in ~0 ms. Pause on failure. Let your AI agent fix it and retry — without pushing.<br>Quick startCopy agent instructions

agent-ci-terminal

❯ npx @redwoodjs/agent-ci run --workflow .github/workflows/ci.yml<br>Initializing local runner environment...<br>Mounting local workspace: /Users/dev/project<br>Starting job: test-and-build

✓ Run actions/checkout@v4 (0s)<br>✓ Run actions/setup-node@v4 (0s)<br>✓ Run npm install (0s - cached)<br>▶ Run npm run test<br>✖ 1 failing test<br>Error: Expected true to be false

⚠️ Step failed. Runner paused.<br>Container state preserved. Fix the issue and run:<br>npx @redwoodjs/agent-ci retry --name runner-test-and-build

Principles

Principle<br>Instant Feedback

Reality<br>Cloud CI takes minutes to spin up, install dependencies, and run tests. The feedback loop is broken.

Advantage<br>By bind-mounting your local node_modules and tool caches, Agent CI starts in ~0ms. Your first run warms the cache; subsequent runs are instant.

Principle<br>Debug in Place

Reality<br>When a cloud CI job fails, the container is destroyed. You have to guess the fix, push, and wait again.

Advantage<br>Agent CI pauses on failure. The container stays alive with all state intact. Fix the issue on your host, then retry just the failed step.

Principle<br>True Compatibility

Reality<br>Other local runners use custom re-implementations of the GitHub Actions spec, leading to subtle bugs and drift.

Advantage<br>Agent CI emulates the server-side API surface and feeds jobs to the unmodified, official GitHub Actions runner binary.

Architecture Comparison

FeatureGitHub ActionsOther local runnersAgent CIRunner binaryOfficialCustom re-implementationOfficialAPI layerGitHub.comCompatibility shimFull local emulationCache round-tripNetwork (~seconds)Varies~0 ms (bind-mount)On failureStart overStart overPause → fix → retry stepContainer stateDestroyedDestroyedKept alive<br>Runner binary<br>GitHub ActionsOfficial<br>Other runnersCustom re-implementation<br>Agent CIOfficial

API layer<br>GitHub ActionsGitHub.com<br>Other runnersCompatibility shim<br>Agent CIFull local emulation

Cache round-trip<br>GitHub ActionsNetwork (~seconds)<br>Other runnersVaries<br>Agent CI~0 ms (bind-mount)

On failure<br>GitHub ActionsStart over<br>Other runnersStart over<br>Agent CIPause → fix → retry step

Container state<br>GitHub ActionsDestroyed<br>Other runnersDestroyed<br>Agent CIKept alive

In Developers' Own Words

x.com/jessmartin

"Waiting for CI could be the subtitle of the book of the last 3 weeks of my life<br>The Factory Life: Waiting for CI"<br>Jess Martin<br>@jessmartin

x.com/ericclemmons

"An alternative to Act for AI? I'll take it!"<br>Eric Clemmons 🍊☁️<br>@ericclemmons

x.com/cyrusnewday

"Clever dude!"<br>Cyrus<br>@cyrusnewday

x.com/chriszeuch

"Okay this is awesome"<br>Chris 🧑‍🌾<br>@chriszeuch

x.com/EastlondonDev

"I like the look of what you're cooking here 👀"<br>Andrew Jefferson<br>@EastlondonDev

x.com/penberg

"You can run Github actions workflows fully locally with Agent CI. Such a crazy good unlock for coding agents!"<br>Pekka Enberg<br>@penberg

x.com/bebraw

"It's great."<br>Juho Vepsäläinen<br>@bebraw

x.com/MrAhmadAwais

"Oh noice."<br>Ahmad Awais<br>@MrAhmadAwais

Quick Start<br>Copy agent instructions

1. Run<br>Terminal

# Run a specific workflow<br>npx @redwoodjs/agent-ci run --workflow .github/workflows/ci.yml

# Run all relevant workflows for current branch<br>npx @redwoodjs/agent-ci run --all

2. Retry<br>Terminal

npx @redwoodjs/agent-ci retry --name

AI Agent Integration

Install the agent skill — works with Claude Code, Cursor, Codex, and 40+ other agents:<br>Terminal

npx skills add redwoodjs/agent-ci --skill agent-ci

Then add to your agent instructions (CLAUDE.md, .cursorrules, AGENTS.md):<br>Agent Instructions

## CI

Install the agent-ci skill (one-time setup):

```bash<br>npx skills add redwoodjs/agent-ci --skill agent-ci<br>```

Before completing any work, run the `agent-ci` skill to validate<br>your changes locally. If it fails, fix the issue and re-run.<br>Do not report work as done until it passes.

Claude Code: Agent CI also ships a /validate skill. Copy .claude/commands/validate.md into your project for automatic background execution with monitoring and retry.

agent github actions retry redwoodjs local

Related Articles