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.19 closes two long-running arcs. The internationalization commitment that started in v2.2.18 ships in 18 languages with a wizard picker, live runtime switching, OS locale auto-detect on first launch, and a soft drift gate so any locale that diverges from en is visible immediately. The seven-layer memory architecture promised since v2.2.14 finally has every layer wired end-to-end — including the three RED layers (Semantic, Reflective, Cache) that were still stubs. Plus a new web-based MCP Builder lands on AnvilHub at /build, a full Claude Code parity sweep (CC v2.1.144 → v2.1.146) lands 15 concrete fixes including 3 P0 security/correctness items, and the release pipeline grows per-phase START/OK/FAIL gates that catch silent exits like the v2.2.18 Phase 6 incident.
The TUI, wizard, slash-command output, and remote-control viewer all flow through rust-i18n v4 in Rust and the new viewer.locales.js runtime 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 $LANG on first launch, and applies immediately to every wizard step.
The in-TUI /configure menu has a Language Picker submenu rendering all 18 locales in their native script (한국어, Русский, 中文, العربية support is excluded by scope — RTL ships in a future release). The viewer ships 176 fully-wired keys covering chrome plus vault.* (entry forms, master-key modal) and config.* (SSH, Database, Plugins+MCP, Layout, Status-line editor) panels — all routed through data-i18n-key attributes that the live re-render walker translates on locale switch with no page reload.
The 2026-05-21 cohesion audit found that Layer 3 (Semantic), Layer 6 (Reflective), and Layer 7 (Cache) were still partial. v2.2.19 closes all three.
- Layer 3 — Semantic.
/memory promote <nomination-id>now actually persists nominated facts to disk. The v2.2.14 stub flipped a status flag without ever callingMemoryManager::save()— nominated facts never reachedANVIL.md. The full chain now writes the fact and appends provenance comments (# nominated_at,# source: nomination/<id>) before marking the nomination accepted. New--target <file>flag routes a nomination to a specific file with relative, absolute, and~-expanded path support. - Layer 7 — Cache. The file-cache path-discovery bug is fixed: previously
memory_budgetchecked a directory that no longer exists in the project-scoped layout, so cache counts always reported zero. Now usesFileCacheManager::new(cwd)to discover the actual per-project path./memory show cacheenumerates file-cache, command-cache, and QMD-cache stats;/memory prune cache --dry-runwalks bothFileCacheManagerandCommandCacheManagerfor stale candidates without mutating anything. - Layer 1, 2, 4 — live introspection.
/memory layer 1renders a live snapshot of the working-memory inventory viaPromptSectionsExt::iter_by_kind()./memory show episodicunifies daily summaries, history archives, and workspace sessions;/memory prune episodicadds TTL-based retention with a trash-bin safety net so candidates move to~/.anvil/trash/<unix-ts>/...rather than being deleted./memory show proceduralconsolidates GoalManager state, on-disk skills, bundled skills, and CronManager schedule into one view.
Anvil's /mcp builder TUI wizard from v2.2.18 now has a web counterpart. The anvil-mcp-builder micro-service runs at 127.0.0.1:4090 on the AnvilHub host and exposes three endpoints: POST /api/builder/spec (LLM-generated spec from free-text prompt, SSE-streamed response), POST /api/builder/generate (turns spec into a base64 tarball — Node.js, TypeScript, or Python templates), and POST /api/builder/sandbox (extracts the tarball and runs anvil-sandbox-runner network-cut).
Security. The operator OAuth token is loaded from the Anvil vault at startup, never from .env. The service exits 1 if vault is locked or the entry is missing; token is cached in process memory only and redacted from all log output. The sandbox endpoint — which runs npm install / pip install per request — is gated on publisher standing: user must be in the anvilhub-publishers Authentik group OR have at least one HubPackage already published. The check hits AnvilHub's /api/users/<email>/publisher-status with a 5-minute Map cache and falls closed on backend error.
A complete CC parity audit covered the 4-day window since v2.1.143 across 3 CC releases. 15 fixes filed and shipped this release — 3 P0, 5 P1, 7 P2. Highlights:
- P0 — MCP pagination (CC v2.1.144-B6 / v2.1.146-B2). The MCP client now consumes the full
nextCursor/has_morepagination chain fortools/list,resources/list,resources/templates/list, andprompts/list. Previously MCP servers with paginated responses had everything beyond page 1 silently dropped. - P0 — Spinner/elapsed-time freeze (CC v2.1.145-B3). The TUI render queue wakes from a wall-clock timer in addition to input events. After a terminal refocus or resize, the spinner and elapsed-time display no longer freeze until next keypress.
- P0 SECURITY — MCP
permissions.allownot honored (CC community #61077).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. - P1 SECURITY — Bash env-var assignment permission bypass (CC v2.1.145-B1). Bash patterns of the form
KEY=VALUE commandare now decomposed and the command portion checked against the allowlist. - P1 — Skill fork-context recursion guard (CC v2.1.145-B4). A skill cannot transitively invoke itself; the recursion check uses the full skill ancestry chain, not just the immediate parent.
- P1 — Resume session model preservation (CC community #61068).
anvil --resumerestores the model that was active when the session was saved, not the global default.
Plus 7 P2 fixes covering API startup timeout, mime-type fallback in Read, /branch history recovery post-EnterWorktree, MCP image fallback for unsupported MIME, skill watcher FD exhaustion prevention, theme color reset on first /session rename, and EnterWorktree MCP config preservation.
The background OAuth-refresh + routines daemon now runs as anvild, not anvil daemon foreground. A new anvild_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-TUI daemon::spawn_detached fallback. ps -ef | grep daemon now shows anvild rather than masquerading as the foreground TUI binary. install.sh and install.ps1 create the anvild symlink (Unix) or hardlink (Windows NTFS) alongside the main binary.
Three wizard bugs surfaced during preview-binary testing and landed before tag:
- Ollama choice modal clipped (#767).
ConfirmModalhad a hardcoded 9-row height. On the Ollama wizard's "already_running" modal where the body embeds a multi-model list, body wrap consumed all 7 inner rows and the Yes/No buttons + key hint were clipped invisible. Now derivesmodal_hfromwrap_body(body, width).len() + 6so buttons stay visible regardless of body length. NewCtrl+BBack keybind on Choice + Confirm modals. - Daemon-install prompt broke alt-screen (#768). The "Install anvild as background service?" prompt was running as
println!+io::stdin().read_line()fromanvild_bootstrap::ensure_anvild_for_sessionafter the wizard exited its alt-screen, breaking the rule that the wizard never drops to CLI. Newwizard_daemon::run_daemon_stepruns inside the same alt-screen as Step 8 of 9 with three choices (Install / Ask later / Never) and persistsanvild.autostarttoconfig.json. - Vertical-split column selection hint (#769). A normal click-drag in the deck column pulls in left-rail text because terminal emulators select at pixel coordinates with no awareness of Anvil's columns. v2.2.19 renders a 1-line hint above the BUILD section in the rail bottom group:
⌥+drag deck onlyon macOS,Alt+drag deck onlyon Linux/Windows/BSD. i18n keys added across all 18 supported locales.
scripts/release.sh now wraps every phase in step "PN: <description>" + ok "PN" / fail "PN" markers. The new scripts/release-helpers/step-gates.sh provides primitives + JSON status persistence + an EXIT-trap silent-exit detector that marks any RUNNING phase as FAIL on premature script exit. This closes the v2.2.18 Phase 6 silent-exit class of bugs — the set +e / SSH_RC=$? / set -e pattern now wraps every SSH call so heredoc-style remote work surfaces its exit code instead of cascading into a set -e silent kill. scripts/test-release-gates.sh is the regression harness; runs release.sh in --dry-run mode and asserts every expected phase fires START + terminal marker exactly once.
Net +50 tests across the workspace: i18n drift gate + picker invariant + 8 locale-load tests, +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. One pre-existing flake fixed: routines::proposal::drop_pending_only_targets_named_routine now uses tempfile::TempDir for guaranteed per-thread isolation.
v2.2.19 is a drop-in upgrade from v2.2.18. Config, vault, and session formats are forward-compatible — no migration steps required. New locale key in config.json is optional (defaults to $LANG then en). The anvild rename is supervisor-unit-level only; existing daemons keep running until next restart, at which point the new unit definitions take effect.
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.
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\r\n→\nnormalization. - ✓ 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