Anvil — AI Coding Assistant

2.2.33 — The Org Chat Release

The AI coding assistant that
doesn't lock you in.

Your providers. Your credentials. Your data. Your cost. Anvil runs in your terminal, drives from your browser, and remembers across sessions — with a mind map of everything it's thinking.

35 providers · encrypted vault · 138 commands · zero telemetry

01 In your terminal the TUI — full-screen, keyboard-driven
anvil — main
SESSIONS
● main
AGENTS (GLOBAL)
none active
STATUS (ALL TABS)
running1 tab
pending0 perms
MEMORY
working17t
episodic421
semantic1c·1a
long-termL7
MIND MAP
nodes18
links5
MODEL
claude-opus-4-8
CONTEXT
14k/1M
KEYBINDS
? help · /quit exit
BUILD
2.2.33
● mainF2/F3 switch · Ctrl+T new · /help
DECK: Conversation
[10:41] ◆ Connected to daemon session.
▌ Add a merge_sorted helper to src/utils.rs, with a unit test. Then run the tests.
▎ I'll add merge_sorted (two-pointer, O(n+m)) and a covering test.
◆ read_file {"path":"src/utils.rs"}
◆ edit_file src/utils.rs +18 lines
pub fn merge_sorted(a: &[i32], b: &[i32]) -> Vec<i32> {
let mut out = Vec::with_capacity(a.len()+b.len());
// interleave, then drain the tail…
}
▎ Running the tests to prove it works.
◆ bash cargo test merge_sorted
test result: ok. 1 passed; 0 failed; 0 ignored
Thinking…
Type a message or /command…Send
02 From your browser the web viewer — same live session
English ▾ Connected Disconnect
SESSIONS
● main
AGENTS (GLOBAL)
none active
STATUS (ALL TABS)
running1 tab
pending0 perms
MEMORY
working17t
episodic421
semantic1c·1a
long-termL7
MIND MAP
nodes18
links5
MODEL
claude-opus-4-8
CONTEXT
14k/1M
KEYBINDS
? help · /quit exit
BUILD
2.2.33
DECK: Conversation · drag to copy · End to return to live
You
Add a merge_sorted helper to src/utils.rs that merges two sorted slices, with a unit test. Then run the tests.
Anvil
I'll add a merge_sorted function with a two-pointer merge and a covering test. First, let me look at the file.
read_file {"path":"src/utils.rs"}
edit_file {"path":"src/utils.rs", …}
Anvil
Added merge_sortedO(n+m), stable across duplicates:
RUST/// Merge two already-sorted slices into one sorted `Vec`. pub fn merge_sorted(a: &[i32], b: &[i32]) -> Vec<i32> { let mut out = Vec::with_capacity(a.len() + b.len()); let (mut i, mut j) = (0, 0); while i < a.len() && j < b.len() { if a[i] <= b[j] { out.push(a[i]); i += 1; } else { out.push(b[j]); j += 1; } } out.extend_from_slice(&a[i..]); out.extend_from_slice(&b[j..]); out }
Anvil
Now let me run the tests to prove it works.
bash cargo test merge_sorted
Anvil
running 1 test
test utils::tests::merges_sorted ... ok

test result: ok. 1 passed; 0 failed; 0 ignored

All green — the test covers interleaved values, empty inputs, and duplicates.
Thinking…
Why Anvil

Other assistants come with a leash.
Anvil is the inverse.

Most AI coding tools route through one vendor, hold your keys, and phone home. Anvil hands you the reins — every layer is yours to control.

🔌

Any provider

Anthropic, OpenAI, Gemini, xAI, Ollama, and 30 more. Switch mid-session with /model.

🔑

Your keys

Bring your own API keys, held in a local encrypted vault. Anvil never sees a key it didn't get from you.

🗄️

Your data

Sessions, memory, and your mind map live on your machine as plain files. They travel with you.

🛰️

Zero telemetry

No phoning home. What happens in your terminal stays in your terminal.

New in v2.2.30

One model's answer looks the same
whether it is right or wrong.

So stop asking one. Anvil puts a panel of models on the same question — each through its own client and its own key — and shows you where they disagree instead of averaging it away.

🧠

Ask a panel

/consult asks several models at once and reports agreement, divergence, and what the minority saw that the others missed. It never picks a winner for you.

🔗

Or a chain

/relay hands one problem down a line of models in order, each seeing the real transcript of the work before it — redacted at every vendor boundary.

It refuses to fake it

A consult of one is not a consult. A single model working alone is a normal turn, not a relay. Anvil says so rather than pretending.

💰

See the money first

Every turn priced against a live registry. A budget cap refuses before the provider call — and an unpriceable turn reports unknown, never a comforting $0.

🔐

Use a secret you never see

Paste a credential and Anvil vaults it, leaving a handle it resolves only when a tool actually runs. The model reasons about a name; the transcript keeps a name.

Lend without giving away

Hand a colleague the label of a vault entry for a set number of minutes. They can use it, cannot read it, and cannot lend it onward. It expires on its own.

Identity & teams

Somebody did that.
Anvil knows who.

Several people can work in one live session, each with their own identity, models and permissions — enforced where the work happens, not just hidden in the interface.

👤

Attributed to a person

Actions carry a verified identity — subject, role, capabilities, workspace. A peer's message is labelled as theirs, and tool calls name who caused them on the durable record.

🛡

Nothing unrestricted by omission

An empty scope grants nothing. Whole-machine reach is a flag somebody set on purpose, never an accident of a blank field.

🚪

Refuse, then offer a door

A blocked request can ask for a one-time or permanent increase. It reaches AnvilHub, an admin decides, and the answer returns to the running session.

🏢

Roles you author

Define roles with their own capabilities and workspace scope rather than picking from a fixed menu. The built-in roles stay put and cannot be redefined under you.

🔑

Joining is not handing over

Bringing an Anvil into an organization grants other people access. Ownership stays with one person — by design, not by omission.

📡

Run them all from one place

Claim a deployment from the web: name it, give it a persona, pick its primary agent, watch it live. Install or remove capabilities — applied live when it is online, queued when it is asleep.

Teams & fleet

Expertise that costs nothing
until you actually use it.

A real agent library is dozens of specialists. Telling the model about all of them costs thousands of tokens of roster on every single turn — spent before any work happens, and growing every time you add an agent. Anvil refuses that trade.

🧮

Twelve names, not a roster

The model sees twelve squad names and a one-line brief each — about 300 tokens, and that cost is fixed. No agent names, no counts. Add a hundred specialists and it does not grow by a line.

🎯

Ask for a capability

You ask for security testing, not for a name you had to memorise. The host resolves the concrete specialist from the full roster and loads it for that job — then lets it go.

📦

Grow it without a release

Install a whole new squad from the marketplace and it becomes routable immediately. No Anvil update, no waiting on us to ship a version that knows your team.

An empty squad says so

Ask for a capability nobody on the team has and Anvil refuses — rather than quietly handing the job to a general-purpose agent and letting you believe a specialist did it.

📡

Every machine you own

/fleet sends one task to every eligible Anvil on your account and collects the answers — routed by capability, so the work lands on a machine that can actually run it.

📋

No silent half fan-out

It names what was sent, what was refused, and who was never eligible — the offline laptop, the host without that capability. A fan-out that reports only its successes looks identical to one that lost half your fleet.

The mind map

It thinks in a map.

A living, force-directed graph of your work — wired into Anvil's memory so it reflects what it's actually learning. Drive it from the browser: drag anything, zoom to the cursor, click any node for its full notes.

anvil · mind mapforce-directed
Product Planning · 18 nodes · 5 links
🌐

Force-directed

Nodes repel so the graph stays readable at hundreds of nodes.

🧠

Memory-aware

Today's memories auto-populate; toggle to a color-coded Memory Graph.

With atmosphere

An ambient starfield drifts behind it — on the web and in the terminal.

Live control

Terminal and browser, one session.

Start in the terminal, hand off to a paired browser tab, and back again — it's the same live session the whole time, never a copy. Nothing is lost in the handoff.

  • Pair a browser with one command; drive the exact session you're running.
  • The web viewer renders like a product — message cards, glowing code panels, real markdown.
  • Hand off without flashing or losing history; wake the terminal and it's all there.
anvil — local control● paired
LIVE SESSION IN BROWSER
session360943
clients1 · local
context14k / 1M
press any key to continue in the TUI
Seven-layer memory

It remembers what matters.

Anvil remembers across sessions — working, episodic, semantic, procedural, reflective, and a long-term knowledge archive. Click any layer to browse what it knows.

  • Every memory is a card with a colored type badge and full text on click.
  • Memories link to each other and to your mind-map thoughts.
  • All local — it's your knowledge, and it stays yours.
anvil — memory
Chose two-pointer merge over sort()
feedbackinputs already sorted → O(n+m)
Ship the onboarding flow before API v2
projectopen task · linked from "This week"
Pricing settled on three tiers
reference↳ knowledge doc "launch-plan"
Prefer named functions over closures here
feedbackreadability in the hot path
By the numbers

Everything, on your terms.

300+ commits since v2.2.5 — SSO, the seven-layer memory, live remote control, the mind map, and now v2.2.33.

35AI Providers
~130slash commands
7native platforms
0telemetry calls
Anthropic ClaudeOpenAIGoogle GeminixAI Grok OllamaMistralDeepSeekGroq+ 27 more
Get Anvil

One command. Seven targets.

Native binaries for every platform your team runs.

install
macOS / Linux  curl -fsSL https://anvilhub.culpur.net/install.sh | bash
Windows        irm https://anvilhub.culpur.net/install.ps1 | iex
macOS
Apple Silicon
native
macOS
Intel · x86_64
native
Linux
x86_64 · gnu
native
Linux
arm64 · gnu
native
Windows
x86_64 · msvc
native
FreeBSD
x86_64
native
NetBSD
x86_64
native

Need a FIPS-validated build for regulated environments? See Anvil FIPS.

Scroll to Top