The criticism leveled at vibe coding — "AI slop," fragile codebases, looks good on the surface but fractured underneath — is not anti-AI. It is anti-fragility. Anvil targets the older problem.
Anvil is not competing with Codex, Claude Code, Cursor, or any other AI coding agent on the axis of "better AI coding agent." That is a losing race against the model providers.
Anvil competes on a different axis: AI coding done correctly. The competitive question reframes from "which AI tool is best?" to "which workflow produces shippable code?" On that axis, Anvil's competitors are not other AI tools — they are the absence of process.
The coder is a real agent — it reads, writes, and edits files and runs commands itself, the way Claude Code, Cursor, or Aider do. What Anvil adds is discipline at exactly two human gates, so a long vibe-coding session doesn't quietly drift off the rails. The human is the gate; the coder does the work.
Rebuilt from the ground up: a single Rust binary — no sidecar, no protobuf. A full ratatui TUI drives a real agentic coder that works directly in your repo, and two cross-family reviewers supply a genuine second opinion at each gate. (The previous multi-crate + Go sidecar + protobuf design is archived under archive/old-v1/.)
anvilpoint it at your reporeviewer-a / reviewer-bplan.md; at the phase gate they critique the actual git diff. Findings appear in chat and are written to REVIEW_*.md. No R3+./v1/models or Ollama's /api/tags. Local-first or hosted frontier — any model with tool-calling can be the coder.Everything between the gates is ordinary agentic chat — the coder reads, edits, and runs commands directly in your repo. Discipline kicks in at exactly two human gates: the plan gate and the phase gate. You approve at each; two cross-family reviewers supply the second opinion.
/accept-plan records the plan hash and unlocks phase work.reviewer-a and reviewer-b are two different model families critiquing the same locked artifact — the plan, then each phase's diff. No R3+: two diverse opinions, not a committee.run_command waits for your /y or /n, and any path that escapes the project root is rejected.No speculative infrastructure. Each feature is traceable to a specific class of fragility in AI-assisted development.
plan.md itself, then builds phase by phase. You approve each gate. Everything between is ordinary agentic chat — so a long session doesn't quietly drift off the rails.reviewer-a and reviewer-b — critique the plan, then each phase's git diff. A genuine second opinion, not the coder grading itself. Findings land in REVIEW_*.md. No R3+./ command palette, focused review cards, and per-session JSONL logs. A CLI covers headless use.*_API_KEY env var and writes it to a project-local .anvil/.env — auto-loaded on every future run, no shell-profile changes on any platform. OS keyring is supported as a secondary option.
Install with Cargo, create the project files, and launch the TUI. On the first bare anvil a fast interactive wizard walks you through providers and role assignment — or picks live local Ollama models in a single step.
anvil.toml providers · model bindings · roles
.anvil/.env auto-loaded secrets
plan.md
REVIEW_plan_R1.md · REVIEW_plan_R2.md
REVIEW_P*_R1.md · REVIEW_P*_R2.md
One binary you build with Cargo. The interactive surface is a ratatui TUI; providers are reached directly over their own HTTP APIs with live model enumeration. The previous multi-crate + Go + gRPC design is archived.
read_file, write_file, edit_file, list_dir, grep, run_command). Build with cargo build --release./ command palette, multiline input, review cards, and per-session JSONL logs in .anvil/. A CLI covers headless and scripting use./v1/models or Ollama's /api/tags. The agent needs a model with tool/function calling — all hosted frontier models qualify; many small local models don't.*_API_KEY env var and written to a project-local .anvil/.env that future runs auto-load — no shell-profile edits on bash, zsh, fish, PowerShell, WSL, Docker, or CI. OS keyring is a secondary option.Anvil has been rebuilt from the ground up: a single Rust binary, a real agentic coder, a full ratatui TUI, and two cross-vendor human review gates — cross-provider, local or hosted. The old multi-crate + Go sidecar + protobuf design is archived. Apache-2.0, building in the open.