SPAVN is a sovereign, model-agnostic terminal coding agent built in pure Rust (rustls). Connect your own local Apple Silicon / CUDA GPU cluster (llama-swap, llama.cpp, Ollama) or bring your own API keys—paired with a Zero-Stop Compiler Gate, Fuzzy Self-Heal Edits, Stale-File Guard, and a zero-flicker TUI.
lto=thin)?2026h Synced TUI
Pinned bottom dock stays anchored during live thinking & tool execution — featuring atomic iTerm2 vision pills ([🖼️ ...]), inline queued message previews (📥 #1), and Shift+←/→ visual selection.
Every subsystem in SPAVN is written from scratch in Rust—eliminating garbage collection pauses, terminal scrollback corruption, and vendor lock-in.
Wrapped in DEC ?2026h synchronized frame batches. Drop any screenshot into your terminal: SPAVN renders an inline iTerm2 preview (OSC 1337) and collapses the path into an atomic [🖼️ arch.png (184KB)] token that skips or deletes with a single Backspace.
llama-swap) + Model-Agnostic BYOK
Zero subscriptions or middleman markup. Auto-discovers local llama.cpp / llama-swap / Ollama / LM Studio endpoints alongside your own OpenAI-compatible or custom gateway keys—with automatic 1.5s local warm-up retry.
/compact & Prune
Scales compaction budgets dynamically to the active model's window (32K local up to 1M+ windows), replaces duplicate file reads with [superseded by later read], and preserves architectural state.
Runs cargo check / tsc --noEmit / py_compile / go vet automatically after edits, and injects live function/struct signatures ([SPAVN LIVE PROJECT SIGNATURES]) to prevent parameter hallucinations.
edit & Stale Guard
Recovers from whitespace/indentation drift, auto-expands off-by-N line ranges (±25 lines), enforces FS_STALE_VERSION mtime checks on disk, and snapshots every write for instant /undo [N] rollback.
Recursively canonicalizes JSON tool arguments (regardless of key ordering) and injects a transparent [SPAVN REPEAT-TOOL BREAKER] intervention after 2 identical calls to eliminate infinite loops.
--rpc)
Launch spavn --rpc to expose an NDJSON stdio server supporting prompt, abort, set_phase, set_model, and live token/tool streaming for spavn-desktop and IDEs.
Prefix any file path or shell command with host:/path (e.g., m3:/opt/app or prod:/etc/nginx). SPAVN edits, searches, and verifies remote servers over SSH Multiplexing (ControlMaster) with zero agent installation.
Identical behavior whether the agent is idle or actively streaming code (Queue / Steer intervention bar).
[🖼️ ...] pillsSAFE → AUTO → 🔥 SOVEREIGNHonest engineering comparison against leading terminal coding harnesses.
| Capability | ⚡ SPAVN v0.2.0 | Oh-My-Pi (OMP) | Claude Code | OpenAI Codex CLI |
|---|---|---|---|---|
| Runtime & Footprint | Native Rust (3.8 MB) | Node.js / TS (~85 MB) | Node.js Bundle (~110 MB) | Rust / Hybrid |
| Cold Startup Latency | 0.8 ms | ~320 ms | ~480 ms | ~15 ms |
Local GPU (llama-swap / GGUF) |
✔ First-Class + Auto-Retry | ✔ Custom Providers | ✖ Anthropic Cloud Only | ◑ Basic OSS Flag |
| Inline Queued Message Preview & Edit | ✔ Live #1 Row + ↑ Edit |
✔ Steer / Follow-up | ◑ Queue Only | ✖ Blocking Input |
Visual Text Selection (Shift+←/→) |
✔ Idle & Busy Parity | ✔ TUI Editor | ✖ Basic Readline | ✖ Basic Readline |
Symmetric Remote SSH (host:/path) |
✔ Native Multiplexed Fleet | ✖ Local Shell Only | ✖ Local Shell Only | ✖ Local Shell Only |
Context Compaction (/compact) |
✔ Budget-Relative + Supersede Prune | ✔ LLM Summarization | ✔ LLM Summarization | ◑ Truncation |
| Zero-Stop Compiler Gate & Stale-File Guard | ✔ Built-in (FS_STALE_VERSION + Arity Map) |
◑ Optional Hook | ◑ Basic Read Check | ✖ None |
Fuzzy Self-Heal edit & Multi-Step /undo |
✔ Whitespace Heal + ±25L Expand + /undo [N] |
◑ Exact Match | ◑ Exact Match | ◑ Patch Only |
| Canonical Repeat-Tool Loop Breaker | ✔ Sorted-JSON Detection + Auto-Hint | ✖ None | ✖ None | ✖ None |
Headless Desktop/IDE Bridge (--rpc) |
✔ Native JSON-RPC 2.0 Stdio | ✔ RPC Mode | ◑ SDK Only | ✖ None |
Method. SPAVN figures are self-measured on an Apple M3 (macOS 15,
warm page cache, hyperfine --warmup 20 over 100 runs). Competitor figures
are published package sizes and a comparable-host cold-start run recorded on
— indicative, not a controlled
cross-machine benchmark. Measure your own stack before switching.