Run GitHub Actions on your machine.

Caching in ~0 ms. Pause on failure. Let your AI agent fix it and retry — without pushing.

Quick start
agent-ci-terminal

npx @redwoodjs/agent-ci run --workflow .github/workflows/ci.yml

Initializing local runner environment...

Mounting local workspace: /Users/dev/project

Starting job: test-and-build


✓ Run actions/checkout@v4 (0s)

✓ Run actions/setup-node@v4 (0s)

✓ Run npm install (0s - cached)

▶ Run npm run test

✖ 1 failing test

Error: Expected true to be false


⚠️ Step failed. Runner paused.

Container state preserved. Fix the issue and run:

npx @redwoodjs/agent-ci retry --name runner-test-and-build

Principles

Principle

Instant Feedback

Reality

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

Advantage

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

Debug in Place

Reality

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

Advantage

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

True Compatibility

Reality

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

Advantage

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

Architecture Comparison

Runner binary
GitHub ActionsOfficial
Other runnersCustom re-implementation
Agent CIOfficial
API layer
GitHub ActionsGitHub.com
Other runnersCompatibility shim
Agent CIFull local emulation
Cache round-trip
GitHub ActionsNetwork (~seconds)
Other runnersVaries
Agent CI~0 ms (bind-mount)
On failure
GitHub ActionsStart over
Other runnersStart over
Agent CIPause → fix → retry step
Container state
GitHub ActionsDestroyed
Other runnersDestroyed
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
The Factory Life: Waiting for CI"

Jess Martin

Jess Martin

@jessmartin

x.com/ericclemmons

"An alternative to Act for AI? I'll take it!"

Eric Clemmons

Eric Clemmons 🍊☁️

@ericclemmons

x.com/cyrusnewday

"Clever dude!"

Cyrus

Cyrus

@cyrusnewday

x.com/chriszeuch

"Okay this is awesome"

Chris

Chris 🧑‍🌾

@chriszeuch

x.com/EastlondonDev

"I like the look of what you're cooking here 👀"

Andrew Jefferson

Andrew Jefferson

@EastlondonDev

x.com/penberg

"You can run Github actions workflows fully locally with Agent CI. Such a crazy good unlock for coding agents!"

Pekka Enberg

Pekka Enberg

@penberg

x.com/bebraw

"It's great."

Juho Vepsäläinen

Juho Vepsäläinen

@bebraw

x.com/MrAhmadAwais

"Oh noice."

Ahmad Awais

Ahmad Awais

@MrAhmadAwais

Quick Start

1. Run

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

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

2. Retry

Terminal
npx @redwoodjs/agent-ci retry --name <runner-name>

AI Agent Integration

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

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

Then add to your agent instructions (CLAUDE.md, .cursorrules, AGENTS.md):

Agent Instructions
## CI

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

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

Before completing any work, run the `agent-ci` skill to validate
your changes locally. If it fails, fix the issue and re-run.
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.