chi (χ), pronounced "kai" · open source · Apache-2.0
Point a fleet of coding agents at a problem. Let it research.
chi is an autoresearch harness. Give it any problem with a programmatic evaluator — a build, a correctness check, a score — and it runs a fleet of heterogeneous coding agents that improves the answer autonomously, round after round, until you stop it.
getchi (the command is chi) — not the Go HTTP router or the hair-straightener brand.
$ uv tool install getchi · $ chi
headline feature
One task in. Research until you say stop.
You don't babysit chi. Hand its operator a goal in plain language and the autonomous director takes it from there.
The director loop
Each round, the director runs the fleet a bounded slice, builds a deterministic
digest from the store, and classifies the round improving / plateaued /
stuck by explicit rules — the LLM's read is advisory, the rule decides, so
the loop can't talk itself in circles. Stuck triggers one web-research call for
genuinely different techniques. Then the strategist rewrites steering.md:
dead approach classes get hard-blocked, near-misses get promoted, and the weakest
coder gets a new strategy. It runs until you stop it — and ranked leaderboard
submissions always stay in your hands.
what's in the box
Built from a real fleet's postmortem.
Every mechanism exists because a manually-run agent fleet failed without it: re-explored dead ends, wasted authoritative evals, silent stalls, no way to steer.
director/
Autonomous director
One task in. The director runs the fleet in rounds, meta-reviews results from the store, researches the web only when stuck, and rewrites the fleet’s steering itself. Halts on a dead eval; otherwise runs until stopped.
fleet/
Multi-agent fleet
Heterogeneous coders — the claude, codex, and grok CLIs driven through structured JSON streams, or any LiteLLM-routable model in a tool loop. Different models explore different regions of the solution space.
store/
Blackboard store
Agents never chat directly. Every experiment, finding, and score lands in an enforced SQLite + JSONL store keyed by code hash — deduplicated, queryable, and complete enough to reconstruct any agent from scratch.
ledger/
Negative-results ledger
Dead ends are first-class data. Ruled-out approach classes carry evidence and get hard-blocked in steering, so the fleet stops re-exploring the same precision trick for the fifth time. This is the anti-plateau mechanism.
watchdog/
Deterministic watchdog
A zero-cost, no-LLM monitor watches eval recency and repeated diff hashes. A stalled or looping agent is detected and killed by code, not by asking a model whether it feels stuck.
eval/
Two-tier eval, gated submits
A cheap local proxy loop for the inner iterations; the authoritative tier is rationed by a token bucket and gated by correctness on held-out seeds. NoiseGuard re-benchmarks apparent wins — ranked submissions stay manual.
sandbox/
Sandboxed agents
Opt-in Docker tiers per coder: a full jail with no network and no credentials, or a vendor-CLI tier with read-only auth mounts. Leaderboard credentials are never mounted — agents physically cannot submit.
tui/
Terminal-native session
Bare chi opens a Claude Code-style session: scrolling transcript, slash-command dropdown, fuzzy pickers, live status bar. Free text talks to the operator; typed text during a run becomes a steering directive.
problems/
Pluggable problems
A problem is a directory with a problem.yaml: entrypoint commands, held-out seeds, a score metric. Ask the operator to scaffold one around an evaluator you already have — it writes and verifies the pack.
quickstart
Talking to it is the interface.
Install, type chi, and describe what you want. Slash commands
exist for the deliberate moves; free text goes to the operator.
$ install & start
uv tool install getchi
chiBare chi opens a full-terminal session: scrolling transcript,
slash-command dropdown, live status bar, fuzzy pickers.
chi --plain gives a line-based REPL for scripts and SSH.
› inside the session
/vendors pick providers
/models pick coder models
/run fleet.yaml start a run
/resume reattach to any past session
just type free text steers the fleetEvery session verb also works non-interactively —
chi run, chi steer, chi status,
chi ledger, chi champion — for CI and scripts.