Plan mode
Explore and plan before touching code. Shift+Tab toggles it live.
A Claude-Code-class agentic CLI that runs on your models, your hardware, your rules.
Point it at a local, uncensored model on your own box — or a cloud frontier model when you want one. Plan mode, tools, MCP, skills, sub-agents. Nothing leaves the machine but the calls you choose to make.
Single self-contained binary · macOS & Linux · Windows via WSL · we auto-detect your OS.
Open beta — live now, updated daily. Beta closes Jul 2 · full 1.0 release Jul 4.
❯ shadow why
Why Shadow
Send your code, your terminal, and your context to someone else's servers. Run whatever model they currently allow. Trust that it'll still be there tomorrow. Then watch models get restricted, filtered, or pulled — and find yourself stranded on a workflow you no longer control.
Shadow is the other path. Because it's MIT and fully open, nobody can reach in and take it away. The openness is the freedom.
❯ shadow --help
The Arsenal
A tool-calling runtime that loops until the task is done — and always terminates. Claude Code harness parity, so capable models run with no feature surprises.
Explore and plan before touching code. Shift+Tab toggles it live.
read / write / edit, grep / glob, run_shell with background shells, plus web fetch & search.
Spin up isolated-context sub-loops — optionally in their own git worktree and in the background.
Connect Model Context Protocol servers over stdio or HTTP; their tools auto-register into the loop.
Drop a SKILL.md in skills/ for progressive-disclosure injection.
pre / post tool-use shell hooks (JSON on stdin). A non-zero pre-hook denies the call.
Ink HUD: streaming output, inline approvals, todo / plan panels, an 18-command slash menu.
manual → auto-read → auto-edit → full, plus per-tool rules. A catastrophic-command denylist always confirms.
Append-only redacted session logs, /export · /resume · /rewind, and a memory tool that survives restarts.
❯ shadow /model
The Kicker
No more saving a session and reloading when you change model or service. Go from a local model to Anthropic to OpenRouter in the same session — the conversation and everything it knows comes with you.
ONE SESSION · ZERO MEMORY LOST
Runs your models
Uncensored local builds with zero capability loss — exec-verified on hard tasks. Speaks both Anthropic and OpenAI wire formats, recovers tool calls emitted as plain text, and round-trips three signature regimes.
_____ _ _ _____ ______ __ / ____| | | | /\ | __ \ / __ \ \ / / | (___ | |__| | / \ | | | | | | \ \ /\ / / \___ \| __ | / /\ \ | | | | | | |\ \/ \/ / ____) | | | |/ ____ \| |__| | |__| | \ /\ / |_____/|_| |_/_/ \_\_____/ \____/ \/ \/
One onboarding · every provider
Sixteen providers behind one first-run prompt — Anthropic, OpenAI, OpenRouter, Groq, DeepSeek, Mistral, xAI, Gemini, Together, Ollama, LM Studio, or a custom endpoint where you supply everything. Masked key entry, a live connection test, per-machine config.
Switch any time. /model swaps provider mid-session — memory intact.
Local needs no key. Ollama & LM Studio connect with nothing but a base URL.
No Shadow account. No signup, no platform login — connect your provider, keys stay on your machine.
The scores
[ EVAL HARNESS · EXEC-VERIFIED ]Scored with Shadow's own eval harness — 50-task breadth + a hard subset that is exec-verified (every hard task graded by running the model's actual artifact, so a stub fails). Self-hosted rows run entirely local on 4× RTX PRO 6000 — roughly the bare minimum to self-host a flagship; nothing leaves the box. Cloud row for reference. Live-API benchmarks expand tomorrow.
❯ shadow --security
Boundaries on by default
Shadow can run uncensored models and execute shell, file, and network tools — so the boundaries are real, and on by default in the public build.
Every path resolves inside the workspace root. .. traversal, absolute-outside paths, and symlink escapes are rejected — even for not-yet-created files.
macOS seatbelt / Linux bubblewrap wrap run_shell: writes confined to workspace + /tmp, credential-store reads denied.
Web tools block non-http schemes and any host on loopback / private / link-local / cloud-metadata, pin to the validated IP (defeats DNS rebinding), and treat fetched content as untrusted data.
Keys come from env / the credential store only. Project config can't override security-critical fields, and session logs are value-redacted.
No analytics, no crash reporting, no phone-home. The only outbound traffic is the provider you chose and the explicit web tools the agent invokes. Ever.
The explicit guardrails-off flag — full autonomy, no jail, no sandbox, denylist bypassed. It exists for trusted, throwaway boxes, and it warns you. A loaded gun, by design. Your call to make.
THE MANIFESTO · INDEPENDENCE DAY
I served to defend a set of ideas — independence, self-determination, the right to own what's yours.
Shadow is me handing some of that back, in software. No lock-in, no phone-home, no permission slips. The best models keep getting restricted, filtered, or pulled — so I built a harness that points at whatever model you choose and runs it on hardware you own.
It's MIT and fully open. You can read every line, fork it, and own your stack end to end. Nobody can reach in and take it away. That's the whole point.
Your models. Your hardware. Your rules.
❯ clear
SESSION WIPED · THE DARK SIDE SAID ITS PIECE
🌑 shadow→☀ lumix
The clean one. The aligned one. The one purpose-built to drive the harness.
A 4B that feels like a 70B — and fits any machine.
A clean, safety-aligned coding and reasoning model that's small enough to run locally — and capable enough to genuinely drive an agent. Purpose-built to pair with the Shadow harness.
Best paired with Shadow.
❯ lumix why
Why Lumix
A 4B model shouldn't be this capable. It reasons, it drives, it behaves — and it fits on a laptop.
Every Lumix response carries an explicit <think> trace — it reasons out loud before it answers, so a small local model works through hard problems like something much larger.
On the Shadow drivability harness: 7/8 tasks · 100% valid tool-call JSON · 0 bad calls. Most 4B models can't emit valid tool JSON at all — Lumix does it cleanly, then executes.
Guardrails intact: helpful on real coding and reasoning work, declines harmful requests with a brief reason and a safe alternative. The deliberate counterpart to Shadow's uncensored freedom — the light to its dark.
Fits any machine. GGUF quants from 2.3 GB (Q3_K_M) to 8.4 GB (f16) — comfortable on a laptop. Use ≥16K context for agent / tool use.
Serve and drive
Lumix speaks the OpenAI-compatible wire format natively. Serve it with llama.cpp, point Shadow's custom endpoint at the URL, and you've got a fully private agent stack — model and harness, both yours, nothing leaving the box.
The bridge
Pull a GGUF, run llama-server, point Shadow at http://localhost:8080/v1. The harness drives the model; the model drives the tools. Nothing leaves your machine but the calls you choose to make.
under the hood: 4B dense · unified vision-language · 256K context · GGUF Q4–Q8
Two commands. Two installs. One fully private stack — the harness and the model, both yours, end to end.
INSTALL SHADOW
Single self-contained binary · macOS & Linux · Windows via WSL · auto-detects your OS.
DARK AND LIGHT · THE HARNESS AND THE MODEL · BOTH YOURS