Springfield
Agent Orchestrator · Local-first · Open source

Springfield

Queue a plan. Walk away. Review the evidence.

Drives Claude Code · Codex · Gemini Isolates a git worktree per run Records per-step evidence v0.13 · early / pre-1.0
The problem

Coding agents are powerful, and you
still have to babysit them.

AI coding agents can do real work. The workflow around them is still manual, fragile, and unrecorded. Three pains, specifically:

01

One task at a time

You feed the agent a step, watch it, feed the next. A multi-step plan is a string of supervised sessions. You are the for-loop.

02

The rate-limit wall

Your agent hits a usage limit mid-task and you're stuck, even though another capable agent is sitting right there, idle.

03

No record of what happened

The reasoning, the exact prompt, the changes: all of it scrolls off in a terminal. Nothing auditable, nothing to hand to a teammate.

What it is

An orchestrator that drives the agents.
It doesn't write the code itself.

Think of a CI runner: it doesn't compile your code, it runs the steps that do, in order, and keeps the logs. Springfield is that, for AI coding agents. You hand it a plan; it runs each piece through an agent in an isolated worktree, and keeps the evidence.

Phase-ordered batches

A plan compiles into a batch of work units grouped into phases that run in declared order — parallel phases run their units concurrently — each with its own stories and acceptance criteria.

Drops into your tools

Homebrew installs the CLI; one slash-command in Claude Code or Codex installs the skills. Teammates pick it up in minutes.

Local-first

State lives in project-local .springfield/. No global machine state, and nothing outbound from Springfield itself.

How it works

Plan in. A branch of vetted commits out.

A plan compiles into a batch of units, each with user stories. Springfield runs them phase by phase in declared order — parallel phases run concurrently in per-plan-branches mode — each in its own worktree, tracking story-level completion as the agent reports it.

IN

Plan

Units → stories → acceptance criteria.

COMPILE

Batch

plan validates & compiles it.

RUN

Worktree runs

Auto-branch off main; each unit in isolation.

OUT

Branch + evidence

Commits on a feature branch; full trail on disk.

Inside one unit: the iteration engine

For each unit, Springfield runs a loop: build the prompt, run an agent, scan the output for completion markers. Not done? Iterate. Agent rate-limited? Fall sideways to the next agent. All stories pass? Merge and bank the evidence.

PLAN stories + AC Build prompt header · context · story Run agent Scan output <story-pass> Unit complete COMPLETE ✓ all pass Claude → Codex → Gemini rate-limited → fall to next agent story not done → re-dispatch, next iteration Merge → springfield/batch-… the agent's commits land on a feature branch evidence: prompt · events · response · verdict
vs a Ralph bash loop

"Isn't this just a while-loop around an agent?"

A Ralph loop (while …; do claude -p "$PROMPT"; done) is a great hack and the right ancestor to credit. Springfield is that loop, made durable, multi-agent, and shareable.

DimensionRalph bash loopSpringfield
Unit of workOne prompt, looped until you stop itA batch of units, each with tracked stories
IsolationRuns in your working treeDedicated git worktree per run
BranchingYou manage it by handAuto-cuts a feature branch off main, switches back when done
CompletionYou eyeball output / grep for a stringStructured markers tracked to pass/fail per story
EvidenceTerminal scrollback onlyPer-iteration prompt, events, response & verdict on disk
Multi-agentOne agent; hard stop on limitPriority chain Claude → Codex → Gemini, lateral fallback
ResumeRe-run from scratchResumes from saved progress, so finished units aren't redone
StateAd-hoc / in your headProject-local .springfield/, no global state, nothing outbound

A Ralph loop gets one agent through one prompt; Springfield gets a plan through a fleet, with a paper trail.

When an agent hits a limit

Fallback is lateral, not temporal.

When the active agent is rate-limited, Springfield doesn't sit and wait for the limit to reset. It stamps a cooldown and tries the next agent in your priority chain, so the batch keeps moving. With several agents configured, a usage limit becomes a transparent hiccup instead of a hard stop.

With a single agent there's no lateral move, so the unit parks, and the batch resumes where it left off when you re-run, with finished work preserved. The cooldown is in-memory, never persisted, so a fresh run cleanly re-attempts rather than honoring a stale guess.
Evidence

Every iteration is on disk and auditable.

This is the biggest jump over a bash loop. For each unit, Springfield writes a per-iteration record plus a rollup, so "what did the agent actually do?" has a real answer.

# per unit
.springfield/execution/plans/<id>/evidence/
  iter-1/
    prompt.txt           # the exact prompt the runner built
    events.jsonl         # full dispatched event stream
    assistant_text.txt   # the agent's raw response
    meta.json            # verdict: agent, exit_code, timing
  iter-2/ … iter-N/
  summary.json           # iteration_count, terminal_status, exit_reason

Surfaced through springfield status. The files are there when you need to prove what happened.

Get started

Two pieces. A few minutes.

Springfield ships as a CLI (the binary that does the work) and a plugin (the skills and slash-commands your agent runs). Install both.

1 · Install the CLI

$brew install brentguistwite/tap/springfieldmacOS
$springfield versionconfirm it's on PATH

Linux or Windows: grab a tarball from Releases, or run go install . from source (Go 1.26+).

2 · Install the plugin

Same skills either way: /springfield:plan, /springfield:status, and /springfield:recover. Install on whichever host CLI you use, or both.

Claude Code

/plugin marketplace add brentguistwite/springfield
/plugin install springfield@brentguistwite

Codex

$codex plugin marketplace add brentguistwite/springfield --sparse .agents/plugins
$codex
/plugins

An interactive menu opens. Pick the Brent Guistwite marketplace, then install springfield.

3 · Run a batch

$springfield initscaffold config + state
$springfield doctorcheck which agents are available
$springfield plan --prd plan.jsoncompile a batch
$springfield startrun it

Requirements

A git repo, and at least one supported agent CLI installed and authenticated: Claude Code, Codex, or Gemini.

Upgrading

brew upgrade springfield is the upgrade you'll actually run. The plugin is a thin shim over the CLI verbs, so plugin updates are manual and rare. Run one only when a skill tells you to.

FAQ

Questions you're probably asking.

Which agents do I need?
At least one of Claude Code, Codex, or Gemini, installed and authenticated. Configure more than one and Springfield falls through them in priority order when a run is rate-limited.
Does my code leave my machine?
Nothing leaves via Springfield. It's local-first: no telemetry, no data collection, nothing outbound from the tool itself. State stays in project-local .springfield/. (The agents themselves still call their own provider APIs, but that's the agent, not Springfield.)
Will it mess with my git history or working tree?
No. Each run happens in an isolated git worktree. Starting from main/master, Springfield auto-cuts a local springfield/batch-<id> branch and switches you back when it finishes. It never pushes, so opening PRs stays your call.
Does it run agents in parallel?
Yes, within a phase. A plan groups units into phases that run in declared order; a phase marked parallel runs its units concurrently in per-plan-branches mode (up to [project] max_parallel, default 3), while consolidate mode stays sequential. Mark a phase parallel only when its units touch disjoint files and share no test resources.
The agent runs with broad permissions. Is that safe?
The default profile lets agents work without per-action prompts so an unattended batch isn't blocked. The mitigations: worktree isolation (blast radius is a throwaway branch), the evidence trail (every action recorded), and you review the diff before merging. It's a setting in springfield.toml, not a hardcode.
Does Springfield write the code?
No. It's the conductor, not the orchestra. It builds prompts, dispatches the agent, watches for completion markers, classifies errors, and records evidence. The editing is done by Claude Code / Codex / Gemini.
Is it production-ready?
It's early, pre-1.0 (currently v0.13). It works and it's in active use, but interfaces may still shift before 1.0. Treat it accordingly and pin a version if you depend on it.
Does it have a plugin or extension API?
No. The Claude Code / Codex plugin ships only the skills and slash-commands; the CLI itself installs via Homebrew (or a tarball, or go install). Springfield doesn't expose a plugin or extension API of its own.