The harness where agents are forged.
A terminal coding agent in Rust — fast to start, light on memory, and yours to run.
Status: early development.
0.0.xis a walking skeleton, and it runs: a session streams, six tools work, permission is asked for, and the transcript is kept. Flags, session files and config are unstable for the whole 0.0.x line. See Releases for what is tagged today.
A coding agent you drive from a terminal. It reads and edits files, runs commands, searches a tree, and streams a model's reasoning inline — in the scrollback you already have, not in a full-screen buffer that replaces it.
It is provider agnostic. A provider is a wire protocol; how you authenticate is a separate axis, so an API key today and a subscription login later are two independent choices rather than one coupled decision.
Because the ones that exist are slower and heavier than a terminal tool should be. These are budgets, not aspirations — a change that breaks one is a defect, and the release procedure blocks on them:
| Measure | Budget |
|---|---|
| Time to first frame | ≤ 20 ms p95 |
| Time to first input | ≤ 60 ms p95 |
| Peak RSS after a 20-turn session | ≤ 35 MB |
grep tool vs the rg binary |
≤ 1.25× |
| Render commits under token burst | ≥ 30/s |
Rendering costs nothing as a transcript grows, because it is inline: scrollback belongs to the terminal, not to this process. The transcript itself is held in memory for the life of the session, and is what the peak-RSS figure bounds.
Rust is pinned in rust-toolchain.toml, so rustup fetches the right toolchain
on first build.
git clone https://github.com/augments-labs/crucible-code
cd crucible-code
cargo build --release
./target/release/crucible --versionThere are no published binaries yet; when there are, they will be attached to
the GitHub Release for the tag. Anything past this point —
getting started,
providers, configuration,
permission, sessions — lives in
docs/ rather than here, so there is one copy of it to keep true.
Set a key, start it in the directory you want it to work in, and type.
export ANTHROPIC_API_KEY=...
cd ~/code/my-project
crucible--model takes a model name, optionally qualified by the provider serving it.
Unqualified names go to Anthropic.
crucible --model openai/gpt-5.2 # reads OPENAI_API_KEY
crucible --continue # carry on this directory's last sessionReading never asks. Anything that changes a file or starts a process does:
? bash wants to run: cargo
[y]es [a]lways [n]o ›
Full documentation is in docs/.
Start with CONTRIBUTING.md for the workflow and
CLAUDE.md for the rules the code is held to. One command covers
every gate, and it is what CI runs:
scripts/check.shParticipation is covered by the Code of Conduct. Security
issues go through SECURITY.md, never a public issue.
MIT — see LICENSE.