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

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.

1 run 2 review 3 classify 4 research 5 steer

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.

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
chi

Bare 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 fleet

Every session verb also works non-interactively — chi run, chi steer, chi status, chi ledger, chi champion — for CI and scripts.