Your providers. Your credentials. Your data. Your cost.
35 AI providers, one terminal. Switch freely. Own your workflow.
Download • AnvilHub • Changelog • Product Page
Other AI coding assistants come with a leash. One vendor's pipe, one vendor's pricing, one vendor's rate limits — and when that vendor changes something you don't like, you're stuck. Your code, your data, your costs all flow through infrastructure you don't control.
Anvil is the inverse. Pick your provider. Use your own API keys, or run everything locally through Ollama. Switch between models mid-conversation. When one hits a rate limit, fall over to the next. When one gets expensive, change it. When the provider does something you don't like, leave.
No account required. No telemetry. No lock-in. A single ~24–42 MB binary, zero dependencies, 35 providers, seven platforms.
| 🔑 Your providers | 35 providers including Anthropic (Max-plan OAuth supported), OpenAI, Google Gemini (Code Assist OAuth), AWS Bedrock (manual SigV4, no AWS SDK), Cursor Cloud Agents, GitHub Copilot, Azure OpenAI, Ollama (local + cloud), Groq, Fireworks, Mistral, Perplexity, DeepSeek, Together AI, DeepInfra, Cerebras, NVIDIA NIM, HuggingFace, Moonshot, Nebius, Scaleway, STACKIT, Baseten, Cortecs, 302.AI, ZAI, OpenRouter, LMStudio, Chutes, MiniMax. Configure priority chains. Automatic failover when one throttles. Never locked in. |
| 🔒 Your credentials | Typed credential vault — AES-256-GCM encrypted with Argon2id. API keys, SSH keys, TLS certs, TOTP codes, DB URLs. Nothing touches disk unencrypted. |
| 🛡 Your data | Single binary, zero telemetry, local Ollama support. Run air-gapped. Your prompts and code never leave your machine unless you send them. |
| 💰 Your cost | Per-provider budgets. Per-session cost tracking. Hard caps. See what every token costs before you spend it. Run Ollama for zero-cost inference. |
| 📡 Your access | Type /remote-control and hand any session to any browser. Pair with a 6-digit code. Full bidirectional control. Code from your phone. |
| 🏡 Your deployment | Run on your laptop. Run on a server. Share a session across devices. Nothing to install on the browser side. |
- Privacy-conscious developers who don't want every prompt going to a cloud API — and can't afford a $50K local-inference stack
- Consultants and contractors juggling credentials across clients, needing isolation between projects
- Open-source maintainers tired of single-provider lock-in
- Teams who want deployment choice — cloud providers, local Ollama, or a mix
No other AI coding assistant does this.
you@workstation:~$ anvil
> /remote-control
Remote control active: https://passage.culpur.net/viewer#abc123
Pairing code: 847291
Open the URL on any device and enter the code.
Open that URL on your phone, your tablet, a colleague's laptop, or a monitor across the room. Enter the 6-digit code. You're connected.
- Full bidirectional control — type messages, run commands, manage tabs from any device
- Real-time streaming — see AI responses token-by-token in the browser
- Same slash commands as the terminal, with deep autocomplete
- Configure from the browser — swap providers, change models, manage credentials
- Encrypted — secure WebSocket relay with automatic reconnection
Perfect for pair programming, teaching, demos, monitoring long-running tasks, or coding from your phone while your workstation does the heavy lifting.
v2.2.21 is the largest single-release reshape since v2.0. Session execution moves out of the TUI and into the anvild daemon — close your terminal and the session keeps running; reopen anywhere and reattach. A browser can pair to a live session over an encrypted relay and drive it. Underneath, the biggest modularization pass in project history split the codebase into 31 focused crates, three of the planned performance wins landed, and a cluster of P0 daemon bugs were found and fixed under live verification. FreeBSD x86_64 and NetBSD x86_64 now ship as prebuilt binaries.
Session execution now lives in anvild, not the TUI process. The session protocol contract (SessionRequest / SessionEvent) defines the on-wire types; a SessionActor hosts the conversation inside the daemon; the TUI is repointed as a thin viewer over a Unix socket. Close the TUI — the session keeps running. Reopen it, or attach from elsewhere, and you reattach to the same live session. Crash the daemon, restart it, and the session replays from the journal. Multi-client attach means more than one viewer can watch the same session, with peer-attach / peer-detach events.
Daemon sessions became first-class and human-addressable. The session manifest gained a name and last_active_at_ns; a Rename IPC verb carries it on the wire. The TUI drives the full lifecycle — /session list|rename|kill over one-shot IPC, then /session new|open|load|close mapped onto TUI tabs with per-tab daemon routing. The capstone is same-cwd auto-resume: reopen Anvil in a directory that already has a live daemon session and it reattaches instead of starting cold.
anvil routined relay start pairs a browser viewer to a live daemon session over a passage WebSocket and auto-opens it; pairing returns a full PIN. #917 (P0) fixed a daemon-side tool-dispatch name-drift bug where every tool fell through to a stub — daemon-hosted sessions now execute real tools. #919 adds viewer UX (input echo, thinking spinner, live context). #920 wires /permissions end-to-end over the relay. #921 adds a ring recorder so resume/replay carries the actual conversation — a viewer pairing mid-session sees history, not a blank pane.
A shared reqwest::Client across the workspace ends the per-call TLS handshake + DNS lookup and keeps HTTP/2 connections warm (#898). Read-only tools now run in parallel: when the model requests two or more read-only tools in one batch (read_file, grep_search, glob_search, web fetches), they fan out across worker threads and merge back in original order; mutating tools still run sequentially through the permission gate (#899). grep_search is now gitignore-aware and streams — it walks and searches simultaneously, respects .gitignore, and skips binaries, so it no longer drowns in node_modules/ or target/ (#900).
anvil-cli was split into anvil-ollama, anvil-mcp-builder, anvil-tui, and anvil-wizard. Thirteen crates were extracted from runtime across two rounds — anvil-vault, anvil-journal, anvil-permissions, anvil-oauth, anvil-hooks, anvil-mcp, anvil-memory, anvil-curator, anvil-search, anvil-relay, anvil-reflection, anvil-skill-chain-exec, anvil-routines — with intermediate crates breaking the dependency cycles. runtime shrank from roughly 70K to about 57.7K lines; the workspace now has 31 crates. Supporting work: an anvil-e2e integration-test crate and compile-time locale-key drift detection.
The daemon execution path was load-bearing for the first time, and live verification surfaced a cluster of P0s — every one fixed: wiring the real provider runtime into the daemon (#905), connecting the attach forwarder task (#906, with an e2e gate in #910), binding REPL session I/O to the long-lived runtime (#903), reading the correct PID file (#904), and a /heal probe that checks actual process liveness (#902). Auto-compaction now actually compacts (#913). And the security P0: anvild binary downgrade-prevention (#827).
3,926 tests passing, zero failures. Several latent shared-state test races (process-global locale, env-var, and atomic flags that only flaked under specific parallel scheduling) were tracked down and serialized. IPC gained a dual-transport abstraction (Unix sockets + Windows named pipes) so the daemon runs natively on all seven platforms.
v2.2.21 is a drop-in upgrade from v2.2.20. Config, vault, and session formats are forward-compatible — no migration steps required. The daemon-default execution path is opt-in for now: sessions run in-process unless you pass anvil --daemon. If you have stale anvild processes from binaries you've moved or trashed, kill them before upgrading — anvil --update refuses to run while stale daemons are alive and prints the exact PIDs.
Seven platforms, SHA256-verified, single binary, no runtime required.
# Homebrew (macOS & Linux)
brew install culpur/anvil/anvil
# Or download directly
curl -fsSL https://anvilhub.culpur.net/install.sh | bash| Platform | Download |
|---|---|
| macOS ARM (M1/M2/M3/M4) | anvil-aarch64-apple-darwin |
| macOS Intel | anvil-x86_64-apple-darwin |
| Linux x86_64 | anvil-x86_64-unknown-linux-gnu |
| Linux ARM64 | anvil-aarch64-unknown-linux-gnu |
| Windows x86_64 | anvil-x86_64-pc-windows-gnu.exe |
| FreeBSD x86_64 | anvil-x86_64-unknown-freebsd |
| NetBSD x86_64 | anvil-x86_64-unknown-netbsd |
No account. No sign-in. Download, run, configure your providers.
| Provider | Models | Auth |
|---|---|---|
| Anthropic | claude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5 | OAuth (Max plan supported) or API Key |
| OpenAI | GPT-5, o3, o4-mini | API Key |
| OpenAI Codex | codex-mini | API Key |
| Google Gemini OAuth + Antigravity | Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.0 Flash Thinking | Code Assist OAuth (PKCE) |
| AWS Bedrock | Anthropic Claude family, Llama, Mistral, Titan | manual SigV4 (no AWS SDK) |
| Cursor Cloud Agents | claude-4-sonnet-thinking, sonnet-4, sonnet-3-7-thinking | API Key + GitHub repo binding |
| GitHub Copilot | gpt-5, gpt-5-mini, gpt-4.1, gpt-4o, sonnet-4, opus-4.5 | Device flow |
| Azure OpenAI | (deployment-name based) | API Key + api-version |
| xAI | Grok-4, Grok-4-mini, Grok-3 | API Key |
| Ollama (recommended) | Llama, Qwen, Mistral, DeepSeek, Gemma, GPT-OSS | Local — no key needed |
| Ollama Cloud | kimi-k2.6:cloud, gpt-oss:120b-cloud | ed25519 device key (via local daemon) |
| Groq | Llama 3.3 70B, Mixtral, DeepSeek R1 | API Key |
| Fireworks AI | Llama 3.1/3.2 family, Mixtral, DeepSeek | API Key |
| Mistral | Mistral Large, Codestral, Mixtral | API Key |
| Perplexity | sonar, sonar-pro, sonar-reasoning | API Key |
| DeepSeek | deepseek-chat, deepseek-coder, deepseek-r1 | API Key |
| Together AI | Llama, Qwen, Mistral, Mixtral, DeepSeek | API Key |
| DeepInfra | Llama, Qwen, DeepSeek, Mistral | API Key |
| Cerebras | Llama 3.1/3.3, Qwen | API Key |
| NVIDIA NIM | Llama 3.x, Nemotron family | API Key |
| HuggingFace | Inference-API hosted models | API Token |
| Moonshot AI | Kimi K2, moonshot-v1 | API Key |
| Nebius | Llama, Qwen, DeepSeek | API Key |
| Scaleway | Llama, Mistral | API Key |
| STACKIT | Llama 3.1 | API Key |
| Baseten | Llama, Qwen, DeepSeek | API Key |
| Cortecs | Llama, Qwen, Mistral | API Key |
| 302.AI | OpenAI-compatible aggregator | API Key |
| ZAI | OpenAI-compatible aggregator | API Key |
| OpenRouter | 200+ models from every major provider | API Key |
| LMStudio | local OpenAI-compatible server | Local — no key needed |
| Chutes | OpenAI-compatible aggregator | API Key |
| MiniMax | minimax-text, abab models | API Key |
Configure priority chains. Automatic failover when one hits a rate limit. Per-provider budgets. Cost tracking per session. Zero-cost local inference with Ollama or LMStudio. No IDE spoofing, no scraped credentials. Every provider implementation either uses a documented public API or identifies as Anvil honestly in headers.
anvil # Start interactive session
/remote-control # Share via browser
/model claude-opus-4-7 # Switch model
/provider anthropic # Switch provider
/vault add # Store a credential
/ssh myserver # Open SSH tab
/productivity # Session stats
/mcp list # MCP server status
/fork experiment # Branch the conversation
/focus # Distraction-free mode
/export md # Export as Markdown120+ slash commands (including the new /cursor command tree and /memory clean / /cursor stream / anvil agents cross-session monitor). 35 AI providers. 45 built-in tools. MCP integration. Per-tab parallel inference. SSH tabs. Tool-call cards with Ctrl+O expand. Multi-tab sessions. Git integration. Code productivity dashboard. Session history search. 37-widget configurable status line with 16 presets. Vim keybindings. Focus view. File sandbox with permission modes. 7-language i18n. AnvilHub marketplace for skills, plugins, agents, and themes. Web UI with full configuration parity. First-run setup wizard. CC→Anvil migration (anvil import claude-code). anvil(1) manpage. All of it optional. None of it required.
Feature list is in the changelog below and anvilhub.culpur.net/about. The feature list isn't the story. The freedom is.
| 🏠 Product Page | culpur.net/anvil |
| 📦 Marketplace | anvilhub.culpur.net |
| 📖 Full Changelog | anvilhub.culpur.net/about |
| 💬 Issues | github.com/culpur/anvil/issues |
Copyright (c) 2024-2026 Culpur Defense Inc. All rights reserved.
Durable Daemon Sessions, the Relay Bridge, and the Big Modularization.
- ✓ Durable daemon sessions (D.1–D.4, #841–#844) — session execution moves out of the TUI into
anvild.SessionRequest/SessionEventdefine the on-wire contract; aSessionActorhosts the conversation in the daemon; the TUI is a thin viewer over a Unix socket. Close the TUI and the session keeps running; reopen or attach from elsewhere and reattach to the same live session; crash and restart the daemon and the session replays from the journal. Multi-client attach with peer-attach / peer-detach events. - ✓ Named, multi-tab sessions + same-cwd auto-resume (#911) — the session manifest gains
name+last_active_at_ns; aRenameIPC verb carries it./session list|rename|killover one-shot IPC;/session new|open|load|closemapped onto TUI tabs with per-tab daemon routing. Reopen Anvil in a directory with a live daemon session and it reattaches instead of starting cold. - ✓ Relay bridge — attach from the browser (#914, #917, #919–#921) —
anvil routined relay startpairs a browser viewer to a live session over a passage WebSocket and auto-opens it. #917 (P0) fixed a daemon tool-dispatch name-drift bug where every tool hit a stub. #919 viewer UX (input echo, thinking spinner, live context). #920/permissionsend-to-end over the relay. #921 ring recorder so resume/replay carries the actual conversation. - ✓ Performance: shared HTTP client + parallel tools + gitignore search (#898, #899, #900) — one shared
reqwest::Clientends per-call TLS handshakes (#898); read-only tools in a batch fan out across worker threads and merge in original order, mutating tools still gated sequentially (#899);grep_searchwalks-and-searches simultaneously, respects.gitignore, and skips binaries (#900). - ✓ The big modularization — 31 crates (#867, #873–#896) —
anvil-clisplit intoanvil-ollama/anvil-mcp-builder/anvil-tui/anvil-wizard; thirteen crates extracted fromruntime(anvil-vault,anvil-journal,anvil-permissions,anvil-oauth,anvil-hooks,anvil-mcp,anvil-memory,anvil-curator,anvil-search,anvil-relay,anvil-reflection,anvil-skill-chain-exec,anvil-routines) with intermediate crates breaking cycles.runtimeshrank ~70K → ~57.7K lines; workspace now 31 crates. Plus ananvil-e2etest crate and compile-time locale-key drift detection. - ✓ Daemon hardening — P0 fixes (#902–#917, #827) — wire the real provider runtime into the daemon (#905); connect the attach forwarder task (#906, e2e gate #910); bind REPL session I/O to the long-lived runtime (#903); read the correct PID file (#904);
/healchecks actual process liveness (#902); auto-compaction now actually compacts (#913); anvild binary downgrade-prevention (#827, P0 security). - ✓ 3,926 tests passing, zero failures — latent shared-state test races (process-global locale, env-var, atomic flags) tracked down and serialized. IPC gained a dual-transport abstraction (Unix sockets + Windows named pipes) so the daemon runs natively on all seven platforms.
- ✓ Seven platforms — macOS ARM64, macOS Intel, Linux x86_64, Linux ARM64, Windows x86_64, FreeBSD x86_64, NetBSD x86_64. Every binary SHA256-verified.
Signed Provenance, Anti-Skills, Event Routines, A/B Curator, Memory Federation + Forge Screensaver.
- ✓ F1 — Signed skill provenance — every skill carries a signed
provenance.jsonlledger keyed by an ed25519 keypair at~/.anvil/keys/skill_signing.ed25519(0600). The verifier walks the ledger from genesis on every load; a broken chain surfaces as a P0 in/skill why <name>. Trust-on-first-use pins an imported skill's pubkey. Newanvil skill why|pubkey|verify. - ✓ F4 — Anti-skills (negative learning) — the curator records failure modes as
MemoryType::AntiPatternentries with their own retrieval-order block. Anti-skills annotate rather than block; the proposal flow shows a "you tried something similar on YYYY-MM-DD and it scored N% worse" footnote. - ✓ F6 — Event-triggered routines — anvild routines accept FileWatch / Webhook / Process / Log triggers in addition to cron. Webhook listener is axum 0.8, localhost-only by default.
tick_routines()pulled out as a pure function; four integration tests cover fire/GC/Ask/re-arm. - ✓ F3 — Curator A/B evaluation — new skills run an A/B pass against a held-out batch; winners promote, losers go to the anti-skill pool. Additive, escalate-only: a worse candidate cannot replace a better incumbent. Surfaced in
REPORT.md+run.json(ab_decisions). - ✓ F2 — Cross-machine memory federation — x25519 key agreement, HKDF-SHA256 derivation, AES-256-GCM (fresh nonce per call), ed25519 signatures, trust-on-first-use peer pinning.
anvil memory sync|peer add|peer list. - ✓ Forge screensaver — video-driven two-phase animation; the source mp4 is baked once into a 665 KB gzipped cell-grid bundle
include_bytes!-d into the binary, no ffmpeg at build or run time. Falls back to overlay-only if the asset is missing. - ✓ 3,061 tests passing, 0 failing — up from 2,922 at the start of the arc (+139). Three
crates/commands/parallel-test flakes pinned to aserial_test::serialtoken. - ✓ Seven platforms — macOS ARM64, macOS Intel, Linux x86_64, Linux ARM64, Windows x86_64, FreeBSD x86_64, NetBSD x86_64. Every binary SHA256-verified.
18 Languages. Memory Cohesion Complete. The Web-Based MCP Builder.
- ✓ Internationalization — 18 locales — the TUI, wizard, slash-command output, and remote-control viewer all flow through
rust-i18nv4 in Rust and the newviewer.locales.jsruntime in the browser. Tier-1 ships English, Spanish, Simplified Chinese, French, Brazilian Portuguese, Russian, Japanese, German — 264 keys each. Tier-2 adds Korean, Italian, Turkish, Vietnamese, Polish, Indonesian, Dutch, Swedish, Norwegian Bokmål, Ukrainian. Locale selection persists to~/.anvil/config.json, falls back to$LANGon first launch, applies immediately to every wizard step./configuremenu has a Language Picker submenu rendering native scripts (한국어, Русский, 中文). Viewer ships 176 fully-wired keys covering chrome plusvault.*andconfig.*panels; live re-render walker on locale switch with no page reload. - ✓ Seven-layer memory — all GREEN — the 2026-05-21 cohesion audit found Layer 3 (Semantic), Layer 6 (Reflective), and Layer 7 (Cache) still partial. v2.2.19 closes all three. Layer 3:
/memory promote <nomination-id>now actually persists nominated facts to disk — the v2.2.14 stub flipped a status flag without ever callingMemoryManager::save(). Full chain writes the fact and appends provenance comments before marking the nomination accepted. New--target <file>flag. Layer 7: file-cache path-discovery bug fixed;memory_budgetno longer checks a path that doesn’t exist in the project-scoped layout./memory show cacheenumerates file-cache, command-cache, and QMD-cache stats./memory prune cache --dry-runwalks bothFileCacheManagerandCommandCacheManager. Layers 1, 2, 4:/memory layer 1renders a live snapshot viaPromptSectionsExt::iter_by_kind()./memory show episodicunifies daily summaries, history archives, workspace sessions./memory prune episodicadds TTL retention with a trash-bin safety net./memory show proceduralconsolidates GoalManager + skills + CronManager. - ✓ AnvilHub
/buildpage +anvil-mcp-buildermicro-service — the v2.2.18/mcp builderTUI wizard now has a web counterpart. Three endpoints:POST /api/builder/spec(LLM-generated spec from free-text, SSE-streamed),POST /api/builder/generate(turns spec into a base64 tarball — Node.js, TypeScript, or Python templates),POST /api/builder/sandbox(extracts the tarball and runsanvil-sandbox-runnernetwork-cut). Operator OAuth token loaded from the Anvil vault at startup, never from.env. Sandbox endpoint gated on publisher standing — user must be in theanvilhub-publishersAuthentik group OR have at least one HubPackage published. 5-minute Map cache; falls closed on backend error. - ✓ MCP pagination (CC v2.1.144-B6 / v2.1.146-B2) — MCP client now consumes the full
nextCursor/has_morepagination chain fortools/list,resources/list,resources/templates/list,prompts/list. Previously MCP servers with paginated responses had everything beyond page 1 silently dropped. - ✓ Spinner/elapsed-time freeze fix (CC v2.1.145-B3) — TUI render queue wakes from a wall-clock timer in addition to input events. After terminal refocus or resize, the spinner and elapsed-time display no longer freeze until next keypress. New
RedrawReason::TerminalStructuralroutes Resize/FocusGained/FocusLost through the soft draw path (no ANSI clear flash, per the photosensitivity rule from v2.2.17). - ✓ MCP
permissions.allowhonored (CC community #61077 SECURITY) —permissions.allowrules with patterns likemcp__server__toolormcp__server__*are now consulted at MCP tool dispatch time. Previously the allowlist was loaded but the MCP dispatch path bypassed it and always prompted. - ✓ Bash env-var permission bypass (CC v2.1.145-B1 SECURITY) — Bash patterns of the form
KEY=VALUE commandare decomposed and the command portion checked against the allowlist. - ✓ Skill fork-context recursion guard (CC v2.1.145-B4) — a skill cannot transitively invoke itself; recursion check uses the full skill ancestry chain.
- ✓ Resume session model preservation (CC community #61068) —
anvil --resumerestores the model that was active when the session was saved, not the global default. - ✓ CC parity P2 sweep — API startup 15s timeout for side-channel calls (#722), mime-type magic-number fallback in
Read(#723),/branchhistory recovery post-EnterWorktree viaworktree_ops::original_sessions_dir()(#724), MCP image fallback for unsupported MIME — saves to~/.anvil/mcp-images/<sha256>.<ext>(#725), skill watcher FD exhaustion prevention — excludestarget/,node_modules/,.git/,dist/,build/,.cache/,.next/,__pycache__/(#726), theme color reset on first/session renamefixed (#727), EnterWorktree MCP config preservation via snapshot beforeset_current_dir(#728). - ✓
anvildseparate process name across 7 platforms (#766) — the background OAuth-refresh + routines daemon now runs asanvild, notanvil daemon foreground. Newanvild_path_from(anvil_binary)helper rewrites the binary path used by every supervisor unit — macOS LaunchAgent, Linux user-systemd, FreeBSD/NetBSD rc.d, Windows Task Scheduler — plus the in-TUIdaemon::spawn_detachedfallback.ps -ef | grep daemonnow showsanvild.install.shandinstall.ps1create theanvildsymlink (Unix) or hardlink (Windows NTFS) alongside the main binary. - ✓ Wizard P0 bundle — Ollama modal clipping, daemon prompt alt-screen, vertical-split hint (#767, #768, #769) —
ConfirmModalheight now derived from body wrap so Yes/No buttons stay visible regardless of body length; newCtrl+BBack keybind. The “Install anvild as background service?” prompt moved into the alt-screen as Step 8 of 9 (no more drop-to-CLI mid-wizard). New 1-line hint above BUILD section in the rail bottom group:⌥+drag deck onlyon macOS,Alt+drag deck onlyon Linux/Windows/BSD. i18n keys added across all 18 locales. - ✓ Release-pipeline step-gates (#714, #730) —
scripts/release.shnow wraps every phase instep "PN: <description>"+ok "PN"/fail "PN"markers. Newscripts/release-helpers/step-gates.shprovides primitives + JSON status persistence + an EXIT-trap silent-exit detector. Closes the v2.2.18 Phase 6 silent-exit class.scripts/test-release-gates.shruns release.sh in--dry-runand asserts every expected phase fires START + terminal marker exactly once. - ✓ Net +50 tests across the workspace — i18n drift gate + picker invariant + 8 locale-load; +9 episodic / +6 promote / +6 cache / +5 working / +3 procedural for memory cohesion; +35 across all 15 CC-parity fixes; +7 publisher-standing tests in the new micro-service.
- ✓ Seven platforms — macOS ARM64, macOS Intel, Linux x86_64, Linux ARM64, Windows x86_64, FreeBSD x86_64, NetBSD x86_64. Every binary SHA256-verified.
The Web Viewer Lands. Autocompact Gets Honest. Mouse Capture Off by Default.
- ✓ Web viewer — full TUI parity (#680, #681, #683, #692, #695, #696) —
passagerelay and AnvilHub viewer get a tab-routing rewrite matching the TUI’s per-tab architecture./tab new,/tab rename,/tab switch,Ctrl+T. Per-tabuser_messageandslash_resultrouting (no more cross-tab leakage). Default layoutvertical_split + tabs. Cost-type chip (OAuth / local / cloud) instead of fabricated dollar figures. Cached + broadcastMemorySnapshotso the memory rail populates on reconnect.SessionMetacarriescontext_maxandbuild_sha. Default-allow forwarding for unhandled viewer messages. Collapsible tool cards. Always-visible slash bar withCmd+Kpalette. - ✓ Autocompact threshold fix (#697 CRITICAL) —
maybe_auto_compactwas measuring againstmax_output_tokens(8K–16K) instead ofcontext_window(64K–200K+). Sessions on long-context models were compacting at roughly 6K input tokens. Now readssession.context_windowand ignoresmax_output_tokensentirely. New OTel spananvil.autocompact.thresholdemitscontext_window,used_tokens,threshold_pct,triggered./compact whyprints the full threshold calculation. - ✓ Mouse capture default OFF (#696 P4) — mouse capture disabled by default on all platforms, restoring terminal copy-paste (Cmd+C / Ctrl+Shift+C / Ctrl+C) for users who hadn’t opted in. One-time first-run toast shows
/config mouse_capture trueand--mouse.mouse_capture_default_off_regressiontest asserts the default at the type level. - ✓ Bracketed paste in textarea modals (#685) — multi-line paste now works inside
/mcp builderand other wizard textareas. Wirestui::paste::handle_pasteinto the textarea event loop with→normalization. - ✓ Per-tab relay routing (#696) —
relay::user_messageandrelay::slash_resultroute to activeTab.idrather than broadcasting. Concurrent inference in two tabs no longer leaks between them. - ✓ OAuth / local / cloud cost label (#696 P1) — TUI status footer shows a semantic cost-type chip instead of a fabricated dollar amount for providers where per-token cost is not knowable.
- ✓
MemorySnapshotrail parity (#695) — vertical-split rail useslayouts::commonhelpers instead of a hand-rolled draw path. Same fidelity as the classic inline view. - ✓ Alt-screen raw mode restore (#688) —
restore_alt_screenre-enables raw mode on return from inline operations. Was the root cause of “keyboard stops working after/mcp buildercancel” in v2.2.17. - ✓
FORCE_FULL_REDRAWconsumption (#688) — consumed insidehandle_repl_command_tuiso the blank-screen-after-cancel regression cannot recur. - ✓ Mouse capture + alt-screen pairing (#688) — mouse capture state is paired with alt-screen state. Enabling mouse capture outside the alt-screen no longer leaves the terminal inconsistent after exit.
- ✓ Force full redraw after inline-op restore (#687) — any inline operation that restores the alt-screen forces a full redraw. Eliminates partial-frame artifacts.
- ✓ Textarea keybinds corrected (#686) —
Entersubmits,Ctrl+Ninserts a newline. Previously inverted. - ✓
/mcp builderlong-description textarea (#684) — long-description field is now a multi-line textarea modal instead of a single-line input. - ✓ PermissionPrompt round-trip regression test (#677) — end-to-end test fires a tool call that requires a permission prompt, verifies the prompt renders, sends the approval, asserts the turn completes. Guards permission-prompt state from desyncing with the turn loop.
- ✓ Release-pipeline Phase 6 silent-exit guard (#654) —
scripts/release.shPhase 6 wraps every SSH hop in an explicit|| { echo "Phase 6 SSH failed"; exit 1; }guard. Previously a failed remote call could terminate the script with exit 0, leaving subsequent surface updates unrun. - ✓ anvil-release MCP host targeting fix (#698 CRITICAL) —
anvilhub_pm2_hostreverted todev0001after#655incorrectly routed pm2 ops to CT 113 (which is dead). Apache vhost has always proxiedanvilhub.culpur.nettodev0001:3100. - ✓ Seven platforms — macOS ARM64, macOS Intel, Linux x86_64, Linux ARM64, Windows x86_64, FreeBSD x86_64, NetBSD x86_64. Every binary SHA256-verified.
The Setup Wizard, Reflection, Sandboxing, and the Source Viewer.
- ✓ New first-run wizard — welcome card → nine modal steps → vault unlock → main TUI, all in one alt-screen. Per-step descriptions explain why each question is asked. OAuth waits poll on 100 ms and stream the elapsed counter live. Step 9 is CC migration in-modal. Brighter grey font for modal text.
- ✓ Autonomous reflection loop — stuck-detector switches strategy and writes a multi-attempt scratchpad when a turn loops without progress.
- ✓
anvil-sandbox-runnercompanion binary — hub-install detonation runs in an isolated binary, shipped alongsideanvilon all seven platforms. - ✓ AnvilHub source viewer — every one of the 558 HubPackages has a viewable source archive; 547 packages got synthesized
Documentationtabs from DB columns. - ✓ Vertical-split rail-stays-painted fix (#648) — ratatui
swap_bufferscontract violation in the#574region-gated repaint surfaced as blank/garbage rails after wizard exit. All three layouts now always paint every region every frame. - ✓ TUI flash eliminated on Gnome Terminal/alacritty (#622, #629) — full-screen
Clear()is now gated onDirtyRegions::ALLandcommit_pending_redrawno longer routesTextDeltathroughterminal.clear(). Photosensitivity hazard during streaming output resolved. - ✓ Wizard mouse-capture default OFF (#623) — native text selection now works cross-platform. Banner is no longer Mac-only.
- ✓
/agent compose+/agent traitsrewired (#624) — no moreprintln!corrupting the alt-screen. 23 BUG sites fixed in the broader println audit (#626), with#![deny(clippy::print_stdout, clippy::print_stderr)]on every TUI-touching file and a regression test to block future drift. - ✓ In-TUI ConfirmModal + PasswordModal — vault unlock for returning users is now a modal in the existing alt-screen, not a CLI prompt; ConfirmModal supports two-button destructive-action confirmation.
- ✓ Vertical-split Shift+drag deck-only selection (#625) — rail no longer comes along when you select conversation text.
- ✓ Vertical-split rail keybinds wired (#634) — g / d / s / a / Ctrl+R now work in the rail, with a drift gate to keep them wired.
- ✓ Reactive compaction sizes from actual overflow (#564) — summary-size budget is now seeded from the real overflow delta, not a fixed guess.
- ✓
ANVIL_STOP_HOOK_BLOCK_CAP(#566) — caps Stop-hook blocking to prevent infinite-loop runaway if a hook mis-fires. - ✓ Session auto-titling wired (#580) —
derive_title_from_first_message()now actually drives the trigger. - ✓ Hook PWD refresh after worktree switch (#561) — PWD-relative hooks no longer go stale when
EnterWorktreeruns. - ✓ Welcome banner names active provider for 3P users (#562) — no more hardcoded Anthropic when you're on Groq/Bedrock/etc.
- ✓
release-surfaces.yamlenforcement gate (#614) — one manifest is the single source of truth for every public surface;scripts/verify-release-surfaces.shis the gate. - ✓ AnvilHub
/sha256/2.2.17.txtpublished — out-of-band checksum manifest for primary-source SHA256 verification. - ✓
install.sh+install.ps1rebuilt — live versions onanvilhub.culpur.netupdated to the proper/api/version-aware variants. Fixes thetag_nameregex breakage (#619) and the hardcodedwindows-msvcWindows target (#612). - ✓ Seven platforms — macOS ARM64, macOS Intel, Linux x86_64, Linux ARM64, Windows x86_64, FreeBSD x86_64, NetBSD x86_64. Every binary SHA256-verified.
The TUI Layout System. Eight live-switchable layout variants on a per-tab TuiLayoutConfig. New default: Vertical Split + Tabs.
- ✓ TUI Layout System — four layout architectures (Vertical Split / Classic / Three-Pane / Journal) × tabs/no-tabs = eight variants, every one a real renderer. Per-tab
TuiLayoutConfig./layout list,/layout <alias>,/layout <alias> --global(writes to~/.anvil/config.json),/layout reset. State-machine contract enforced by integration tests; shared session state (log, input, model) survives the switch; terminal clear on switch so previous cells don't bleed. - ✓ New default: Vertical Split + Tabs — persistent left rail (sessions, agents, tools, MEMORY, gate state) next to a swappable right deck. Rail owns all chrome (banner, status, model, cost); deck has input only. Mouse-draggable split anchor. Migration-safe: users with an explicit
tui_layoutsetting keep their value; only upgraders without the key see the change, plus a one-time intro toast. - ✓ Wizard step 7 highlight — first-run setup wizard now defaults to Vertical Split (option
[1]); Classic moves to[2]. New installs that just press Enter land on the rail+deck view. - ✓ Slash-completion popup wired into all renderers — completion works regardless of which layout is active. Every render path also redraws on every keystroke so input is live.
- ✓ Three-pane Insert discoverability — framed hint + ghost input makes the always-on input legible; CONTEXT band uses
Constraint::Fillso it actually fills available height. Vim modal removed — typing always edits the input. - ✓ Paste handling rebuild — consolidated paste handler routes terminal bracketed paste, OSC52, and drag-and-drop file paths. Mouse capture is off by default so native terminal copy works.
ContentBlock::Documentis wired end-to-end for PDF and Office docs — dropping a.pdfattaches it as a document block to the next request. Long-paste placeholder collapses multi-KB pastes to a[Pasted N chars]token in history. Keystroke-burst detection converts drag-and-drop on terminals without OSC52 into a single paste. - ✓ Ctrl+C mid-stream cancel across all 7 providers —
DefaultRuntimeClienthonors the cancel token in every provider implementation.tokio::select!wraps the blocking HTTP read so the connection actually closes when the token fires. New wiremock integration test covers the cancel path end-to-end. - ✓ Vertical-split rail polish — uppercase section headers, cross-tab status aggregates, tool-call boxes close cleanly, markdown styled, cost rendered to 2 decimals, QMD folded into MEMORY, agent tab-binding, split-anchor draggable.
- ✓ AnvilHub verification gate —
/hub statusships all 8 axes,HubPackagecarries verified-badge structs,require_verifiedconfig gate,/plugin update REVOKEDguard, update probe prefers anvilhub/api/versionand falls back to GitHub Releases. - ✓ TUI correctness long tail —
/vault unlockretries up to 3 times and pre-fills the prompt on failure; welcome banner names the active provider, not hardcoded Anthropic; session-title heuristic skips a bare URL as first message; 5xx errors name the configured provider/gateway; spinner color warms warm-green→amber→red on elapsed time;Readoffset accepts string forms with whitespace/+prefix;ANVIL_MCP_TOOL_TIMEOUTenv override per request; asyncfetch_all_configured_modelswith timeout + Ctrl+C cancel; strict RFC 6749 token-exchange parser + startup validator; lenient scopes deserializer prevents OAuth lockout;ProviderLoginModalfor in-TUI OAuth/API-key flows; layout-switch terminal clear prevents stale-cell ghosting. - ✓ Seven platforms — macOS ARM64, macOS Intel, Linux x86_64, Linux ARM64, Windows x86_64, FreeBSD x86_64, NetBSD x86_64. Every binary SHA256-verified.
The largest release in Anvil's history. 121 commits over v2.2.13. Supersedes the corrupted v2.2.14 tag (never published).
- ✓ Provider catalog 5 → 31 — AWS Bedrock (manual SigV4, no AWS SDK), Google Gemini OAuth + Antigravity (Code Assist OAuth with honest Anvil identification — not VS Code spoofing), GitHub Copilot (device flow), Azure OpenAI (deployment-name + api-version), Cursor Cloud Agents (repo-bound), plus 24 OpenAI-compatible providers: Groq, Fireworks, Mistral, Perplexity, DeepSeek, Together AI, DeepInfra, Cerebras, NVIDIA NIM, HuggingFace, Moonshot, Nebius, Scaleway, STACKIT, Baseten, Cortecs, 302.AI, ZAI, OpenRouter, LMStudio, Chutes, MiniMax, OpenCode, OpenCode-Go.
- ✓
/cursorfirst-class command tree — six TAB-completable subcommands (launch,list,get,cancel,artifacts,stream) for Cursor's public Cloud Agents API. Repo-bound by design —git remote get-url originis mandatory. - ✓
/modelcross-provider unified picker — one TAB-completable list across every configured provider, provider-prefixed (anthropic/claude-4.5-sonnet,groq/llama-3.3-70b,cursor/claude-4-sonnet-thinking). Atomic switch updates routing + system prompt identity + TUI chrome together. Live-fetched from each provider's/modelsendpoint; static registry is fallback only. - ✓ Memory Cohesion Arc — the seven-layer memory system from v2.2.5 (Sensory / Working / Episodic / Semantic / Procedural / Reflective / Long-term) cohesion-tested end-to-end. Retrieval-order block in system prompt,
WorkingMemorySnapshotasVec<PromptSection>,PermissionMemorywired into permission gate,/file-cachereal handler, egress allowlist in settings +/policy view,/memory whyinjecting daily summaries. - ✓ Capability Cohesion Arc — every Anvil capability now meets an 8-axis contract (definition / registration / completion / handler / dispatch / rendering / permission gate / OTel + tests). Build-time drift gate enforces it. Slash dispatch unified at one site. Stub messages banned.
- ✓ CC→Anvil migration —
anvil import claude-codebrings prior assistant work forward verbatim with provenance frontmatter. Memory entries getimported_fromstamps. Project instruction files merged without clobbering. Settings get conflict detection. Skills get collision handling. Past sessions (up to ~1,800 JSONL, ~1 GB) optionally summarized into daily records. The day-2 commandanvil memory cleanrewrites entries through a configurable LLM and detects duplicate meanings via Jaccard similarity. First-run wizard offers migration as opt-in. - ✓ CC parity catch-up v2.1.132 → v2.1.139 — 17 features + 7 security/verify items:
ANVIL_PROJECT_DIR/ANVIL_SESSION_ID/ANVIL_DISABLE_ALTERNATE_SCREEN/ANVIL_EFFORTenv propagation, transcript view nav, cross-sessionanvil agentslive monitor,worktree.baseRef,autoMode.hard_denyshort-circuit, hookcontinueOnBlock, hook argsstring[]exec form,/scroll-speedwith live preview,anvil plugin details, subagent OTel headers with parent-agent-id, plus security gates on--resume/--continueunderscore paths, plan-mode + Edit allow rule write blocking, MCP content-block result visibility,Skill(name *)wildcard delimiter check, settings hot-reload on symlinks, stream-idle false-fire elimination, multi-image paste correctness. - ✓ Token economy + reliability — file-fingerprint cache wired into
read_file/write_file/edit_file/system prompt (shipped dormant in v2.2.11). Command-output cache wired intoglob_searchandgrep_search. WebFetch + WebSearch get 5-min and 1-hour TTL caches. Skill-chaining engine depth-3 wired (suggestion engine; executor lands in v2.2.16). Auto-promote engine for/memorynotes active. - ✓ Honesty contract codified — test-suite-enforced contracts: no silent deferral, 8-axis capability contract, CC-only naming, changelog preservation (historical entries byte-immutable), migration instinct (bring everything verbatim-with-flag), live-model-list (not registry), atomic provider/model switch.
- ✓ Seven platforms — macOS ARM64, macOS Intel, Linux x86_64, Linux ARM64, Windows x86_64, FreeBSD x86_64, NetBSD x86_64. Every binary SHA256-verified.
v2.2.14 was tagged internally but never published as binaries due to a release-pipeline incident. All v2.2.14 work is included in v2.2.15 above (Memory Cohesion Arc, Capability Cohesion Arc, CC parity v2.1.132-139, per-tab parallel inference fixes, file-fingerprint cache wiring, auto-promote engine).
Windows is back, BSD joins, routines on disk — seven platforms now.
- ✓ FreeBSD x86_64 + NetBSD x86_64 binaries — first-ever BSD support. Every binary SHA256-verified and signed by the release pipeline, with paired
.sha256manifests at anvilhub.culpur.net/sha256/. - ✓ Windows x86_64 is back — the v2.2.12 hold is fixed. ssh-agent auth is now
#[cfg(unix)]-gated with a clean Windows stub. The rest of the SSH driver (key-file, password, kbd-interactive) works on Windows exactly as on Unix. - ✓ Seven platforms total — macOS ARM64, macOS Intel, Linux x86_64, Linux ARM64, Windows x86_64, FreeBSD x86_64, NetBSD x86_64.
- ✓ Release pipeline hardening — build errors now hard-fail instead of silently producing partial releases (the v2.2.12 incident where the Windows build failed silently and a stale artifact was published).
- ✓ Routines foundation on disk — schedule grammar (duration, interval, cron, ISO timestamp), output archive with
[SILENT]early-stop, and SHA-256 input-hash packet schema. 63 new tests. The v2.2.14 daemon ships on top. - ✓ FreeBSD ARM64 and OpenBSD x86_64 are not in this release — the Rust toolchain does not publish a precompiled standard library for either target. Both are queued for v2.2.14.
- ✓ 1,146 workspace tests passing across every crate. Zero failures. Zero warnings.
Parallel and Transparent — the app gets out of your way.
- ✓ Per-tab parallel inference — each tab owns its own
Arc<Mutex<ConversationRuntime>>and runs turns on dedicated worker threads; fire prompts in multiple tabs simultaneously - ✓ Mid-turn TUI responsiveness — Ctrl+T, F2/F3,
/ssh, and cross-tab submit all respond immediately during streaming; the app is interactive throughout a turn - ✓ Tool-call cards — every Glob/Grep/Read/Write/Edit/Bash/WebSearch/MCP call renders a bordered card with actual input (pattern, path, command) the moment it fires; Ctrl+O expands to full JSON + result
- ✓ SSH tabs —
/ssh hostopens a modal connection form with russh backend, vt100 rendering, Ctrl+B prefix keys; connections saved as vaultHostCredentialaliases - ✓ Tab bar markers —
*(unread),⚠(pending permission),×(clickable close); terminal-friendly navigation (F2/F3/Ctrl+arrow/Alt+digit/click) - ✓ Session continuity —
anvil --continuehonors saved model from.meta.jsonsidecar; Ollama sessions reconnect without credential errors; exit prints resume commands - ✓ Scrollback fix — HISTORICAL VIEW was showing only 1–4 chars per assistant line; pending text growth now invalidates cached scrollback line vectors
- ✓
/quitno longer deadlocks — self-recursive mutex inrecord_dailyfixed - ✓ First-run setup wizard — mouse capture, theme, permission mode opt-ins on first launch;
anvil setup/anvil --first-runto reconfigure - ✓ anvil(1) manpage ships with Homebrew installs
- ✓
/clearclears workspace context across all tabs, not just the active one - ✓ Release pipeline hardening — tag-vs-HEAD pre-flight, build-from-tag, php-lint guard, changelog.json render-time injection on AnvilHub
- ✓ 318 tests passing, ~22 MB binary
Outweigh-them-all release — self-awareness plus ten core surfaces in one cut.
- ✓ System prompt now leads with "You are Anvil v2.2.11" and references the currently loaded model + provider in every turn — no more hallucinating a different identity
- ✓ W1 hook events: PreToolUse, PostToolUse, UserPromptSubmit, SessionStart, SessionEnd, PreCompact, Notification — full CC parity
- ✓ W2 effort slider:
/effort low|medium|high— tune reasoning depth per turn, persisted per session - ✓ W3 goal persistence: per-session goals survive
/clearand reconnect, surfaced in status line - ✓ W4 named profiles: save and switch (provider, model, effort, output style) tuples by name
- ✓ W5 published JSON schema:
settings.jsonfully typed, IDE-completable, served atanvilhub.culpur.net/schema/settings.json - ✓ W6 OpenTelemetry events:
OTEL_EXPORTER_OTLP_ENDPOINTsupport, permission_decision + tool_call + token_usage spans - ✓ W7 custom output styles: define your own
/output-stylenames in settings, ship them as plugins - ✓ W8 reviewer-agent approval gate: optional second-agent review before file writes, configurable threshold
- ✓ W9 anvil mcp-server mode: run Anvil itself as an MCP server — expose agents and tools to any MCP client
- ✓ W10 requirements.toml admin policy floor: enforce minimum versions, required plugins, denied domains org-wide
- ✓ Rename
CLAUDE.md→ANVIL.mdacross user-facing strings + the anvil-md-curator skill - ✓ Build-time fix:
cargo:rerun-if-changednow watches the actual ref file, not just.git/HEAD— GIT_SHA stays current across rebuilds
TUI usability patch.
- ✓ TUI: long lines wrap instead of right-truncating
- ✓ TUI: native terminal selection restored (Shift-drag works again)
- ✓ TUI: tool-result summaries now actually summarize
- ✓ Release pipeline: regenerate sha256 manifests every build + verify-before-release
- ✓ Release pipeline: fix repo target on
gh releasecalls
Claude Code parity catch-up.
- ✓ Claude Code parity:
--print/--agenthonor frontmatter, plugin prune, scroll snap - ✓ Subagent summaries,
/mcptool count, API 400 error surfacing - ✓ OTEL env vars, MCP reconnect summary, worktree HEAD detection
- ✓ Spinner red on errors, theme refresh, env vars (
DISABLE_UPDATES,HIDE_CWD,EFFORT,AI_AGENT) - ✓ Long URL clickability,
/cleartab title cleanup, editor handoff hardening
PAI-inspired composition, learning, and robustness.
- ✓
/agent compose <traits...> "<task>"— trait-based agent composition engine, 30-trait catalogue (expertise × personality × approach), dimension-conflicts hard-error by default. Adapted from Miessler'sPersonal_AI_Infrastructure. - ✓ Skill front-matter
triggerswith suggest-not-auto UX — three bundled reference skills (security-audit,code-review,terse). Never auto-inject (prompt-injection vector); user confirms via/skill load <name>. - ✓ Prompt-type hooks — plugin lifecycle hooks can now inject a string into the next model turn with
{tool_name}/{cwd}/{date}/{model}interpolation. Backward-compatible with bare-string command hooks. - ✓
anvil skill-eval— three-arm evaluation harness (__baseline__/__terse__/<skill>) with honest caveats baked into every report. Adapted fromcaveman. - ✓
/output-style precise|condensed— user-selectable global response style. Precise (default) preserves full sentences; condensed activates the bundledterseskill. Never auto-applies condensed — Auto-Clarity rules still fire for security / irreversible / multi-step / consent contexts even when condensed. - ✓ Plugin loader is forward-compatible — a single bad manifest no longer crashes the entire binary.
PluginLoadDiagnosticsurfaces per-plugin warnings on stderr. - ✓ Bundled plugins are now embedded in the binary via
include_dir— Homebrew users' bundled plugins are visible; developers' installed binaries no longer depend on their live source tree. - ✓ Claude-Code-parity bug fixes: 429
Retry-Afterminimum; 5-min stream dead-air timeout; configurable request timeout (ANVIL_API_TIMEOUT_MS);/modelwarns on mid-conversation switch; DangerFullAccess stability invariants. - ✓ 756 tests passing.
Cross-OS installers, anvil upgrade, shell completions, curated Ollama menu, Windows fixes, release-pipeline hardening.
- ✓
install.sh(macOS/Linux) andinstall.ps1(Windows) with SHA256 verification from anvilhub.culpur.net with GitHub fallback — aborts on dual failure, no unverified binary ever lands - ✓
anvil upgrade,anvil --check,anvil --setup,anvil --uninstall— full lifecycle from the binary itself - ✓ Shell completions for bash, zsh, fish, and PowerShell — all 101 slash commands, subcommands, flags, provider and model names
- ✓ First-run wizard: curated Ollama model menu — Llama 3.x, Qwen 3 / 2.5-Coder, Mistral Nemo, Gemma 3, Phi 4, Code Llama, Codestral, per-model confirmation
- ✓ TUI scrollback + text selection via Shift-drag pass-through to the terminal emulator
- ✓ Windows: correct
HOME/PATH/PATHEXThandling,.exeon respawn, cmd.exe-aware install detection - ✓ QMD cross-platform discovery — no more hard-coded Unix socket paths
- ✓ Ollama tool-use: multi-format parser (Anthropic, OpenAI, XML, JSON-fence, natural language) with fail-loud on ambiguity
- ✓ Remote-control 503 fixed — relay WebSocket process declaration corrected
- ✓ Release pipeline: per-binary embedded-version audit gate — makes the v2.2.6 Windows-exe-labeled-as-2.2.1 class of bug impossible
- ✓ 618 tests passing, zero warnings
Command Parity, Deep Autocomplete, Web Config, AnvilHub Installer.
- ✓ 17 web config panels — vault, notifications, SSH, Docker/K8s, memory, and more
- ✓ Full Status Line editor in browser — 36 widgets, 16 presets, drag-and-drop, live preview
- ✓ AnvilHub installer — search, install, restart prompt — vault-gated, telemetry-tracked
- ✓ Deep hierarchical autocomplete —
/vault store <Tab>→ 21 credential types - ✓ 8 previously-broken TUI handlers now working —
/mcp,/plugins,/session,/daily, and more - ✓ New commands —
/tab,/fork,/share,/audit,/restart - ✓ Self-respawn on macOS/Linux after plugin installs
Intelligent Memory System — six major features.
- ✓ Interactive Status Line Editor — full TUI editor with 6 sub-screens + WebUI drag-and-drop visual editor
- ✓ 37 widgets, 16 presets (8 emoji-rich themes), per-widget category colors
- ✓ Code Productivity Dashboard — live git diff tracking,
/productivitycommand - ✓ MCP Server Manager —
/mcpcommand, live McpStatus widget - ✓ Session History Browser —
/history-archive statswith model breakdown - ✓ Plugin System UI — web viewer management panel with config toggles
- ✓ Agent Panel Expansion — web viewer agent management buttons
Security Hardening + Optimization — 17 audit findings fixed.
- ✓ Constant-time HMAC verification, plugin command injection prevention
- ✓ Path traversal protection, cryptographic session IDs
- ✓ 110 functions made const fn, zero compiler warnings
- ✓ RC widget: live client count with connect/disconnect signals
Six Major Features — interactive editor, productivity, MCP, history, plugins, agents.
- ✓ Interactive Status Line Editor — 37 widgets, 16 presets, visual editor
- ✓ Code Productivity Dashboard — live git diff tracking
- ✓ MCP Server Manager, Session History Browser, Plugin UI, Agent Panel
Customizable Widget-Based Status Line — 8 presets for different workflows.
- ✓ Widget-based status line system — 28 widget types, dynamic rendering
- ✓ 8 presets: default, minimal, developer, token-heavy, git-heavy, compact, cost-focused, streamer
- ✓
/configure statuslinecommand with full tab completion - ✓ Web viewer config panel gains Status Line preset selector
- ✓ Dynamic footer height — 2-line presets maximize content area
URL rendering fix, context-aware vault, CI/CD automation.
- ✓ URL rendering fix — terminal hyperlinks render correctly across all providers
- ✓ Context-aware vault — vault auto-selects credentials based on active project context
- ✓ CI/CD automation —
/cicdcommand scaffolds pipelines for GitHub Actions and GitLab CI
Typed Credential Vault — the vault is now the single source of truth for ALL sensitive data.
- ✓ Typed credential entries —
name,type,value,tags,created_at,rotated_at - ✓ Vault covers API keys, SSH keys, TLS certs, tokens, and environment secrets
- ✓
/vault add— interactive typed credential entry with category selection - ✓
/vault rotate— rotate any credential in-place, preserving audit history - ✓
/vault export— encrypted vault export for backup and migration - ✓
/vault inject— load vault secrets into shell env for any subprocess - ✓ Audit trail v2 — every vault access logged with timestamp, operation, and credential type
Browser configuration panel, Gemini provider, slash command execution in web viewer.
- ✓ Browser-based visual configuration panel
- ✓ Google Gemini as 5th provider
- ✓ Slash commands execute from web viewer
- ✓ 30+ commands with subcommand completions
Edition 2024, dependency modernization, Claude Code parity.
- ✓ Focus view —
/focushides sidebars and agent panels for distraction-free mode - ✓ Context-low warning — proactive alert before auto-compaction fires
- ✓ Stalled stream handling — detects and recovers from stuck token streams
- ✓
/loopand/proactive— recurring prompt loops and proactive agent nudges
Credential scanner, egress control, conversation branching — 16 new features.
- ✓ Credential auto-detection — scans env vars, dotfiles, SSH keys, TLS certs
- ✓ Network egress control — configurable domain allowlist
- ✓ Signed session transcripts — HMAC-SHA256 audit trail
- ✓ Conversation branching —
/forkto snapshot and branch - ✓ Markdown session export —
/export mdwith code blocks - ✓ Remote control browser auto-open
- ✓ Expanded cost tracking — OpenAI, xAI, Ollama pricing
- ✓ Smart context compaction — preserves recent messages and code blocks
Live streaming responses, thinking status indicator, remote control.
- ✓ Live streaming responses — real-time token-by-token rendering
- ✓ Remote control —
/remote-controlto share sessions via browser - ✓ Thinking mode —
/thinkenables extended reasoning
Encrypted vault, file sandbox, modular architecture — security-first release.
Full Claude Code Parity — multi-agent system, TUI tabs, context management.
Multi-agent system — 7 agent types with task orchestration.
VS Code extension, 21 new features, credential vault, 86 commands.
Internationalization — 7 languages, 20 features.
Cross-compilation CI pipeline — 5-platform builds, theme system, QMD documentation.
Initial release. Terminal-native AI coding assistant with credential vault and TUI.
Built by Culpur Defense • AnvilHub • Product Page