Wizard
One line. Your sovereign agent. Self-extending. Bring any model.

curl -fsSL https://raw.githubusercontent.com/teddytennant/wizard/main/install.sh | bash
One command installs the wizard binary. The first run asks which provider you want and sets up the rest. Pick Local and Wizard sizes a Qwen 3 GGUF to your hardware and runs llama.cpp's llama-server itself, no API key needed. Or sign in with an xAI or ChatGPT account, or bring a key for xAI, OpenAI, Anthropic, Google Gemini, DeepSeek, Groq, Mistral, Moonshot, Z.AI, MiniMax, Together, Fireworks, Cerebras, OpenRouter, Cloudflare Workers AI, or any OpenAI-compatible endpoint, and switch live with /provider. It's one fast Rust binary on Linux and macOS; everything it learns is plain TOML under ~/.wizard/ that you can edit or delete.
Other ways to install: local-stack preinstall, minimal, bring-your-own-model, Nix, macOS, plus a first-run walkthrough, all in Getting started.
What it does
- Any model, switchable live. Speaks the OpenAI-compatible chat API (streaming + native tool calls, with a prompt-based JSON fallback), so xAI, OpenAI, Anthropic, Gemini, DeepSeek, Groq, Mistral, Moonshot, Z.AI, MiniMax, Together, Fireworks, Cerebras, OpenRouter, Cloudflare Workers AI, Ollama, and any OpenAI-compatible endpoint (vLLM, LM Studio, …) all work.
/providerswitches the live agent between them; keys live in env vars or~/.wizard/credentials.toml(mode 0600), never in plaintext config. → Providers - Runs models locally, fully managed. Pick Local and Wizard downloads a GGUF sized to your VRAM, then starts, supervises, and reuses
llama-serverfor you, including a Metal build on Apple Silicon. → Model tiers · Bring your own model - Model fusion (
/fusion). Run a panel of your providers as a debate — the members critique each other's drafts — and synthesize one tool-capable answer. → Fusion - Mixture of agents (
/ultra). Fan a turn out to N read-only subagents on the model you're already using (each with a different lens, each reading the actual repo), have a judge compare their drafts, then execute from the verdict. → Ultra - Self-extension (
/evolve), powered by LuaJIT. Add skills, MCP servers, scripted tools, and subagents as plain files that go live on/reload. Scripted tools default to embedded LuaJIT — the just-in-time compiler runs your glue in-process, no external interpreter onPATH. Gated by a cleancargo buildand a smoke test, Wizard can also rebuild its own binary. Every change is logged, and the prior binary is kept onemvfrom rollback. → Self-extension - Runtime MCP, both directions. stdio and HTTP MCP servers merge into the tool registry without a rebuild: the path for computer use, browser control, and databases. Wizard also serves its own tools over stdio (
wizard mcp-serve), so any MCP client can call them. → MCP - Editor embedding (ACP).
wizard acpruns Wizard as an Agent Client Protocol agent, so ACP editors (Zed, Neovim, Emacs) drive it as their coding agent, streaming assistant text, reasoning, and tool calls into the editor. → ACP - Genie / Sovereign modes, plus
--continuous. An interactive direct-action TUI (genie), headless autonomous runs (sovereign), or a perpetual mission (--continuous) that compacts its own context and self-heals through outages. → Modes - Agent-managed context. Sessions are JSONL under
~/.wizard/sessions/; auto-compaction keeps long runs inside the window; the agent is instructed to/compact(viarun_command) when a thread is bloated, to save durable facts withmemoryand compact when the task changes, and to keep tool output lean so history stays useful. → Agent-managed context - Browser GUI and a desktop app (preview).
wizard guiserves the same agent core as the TUI on 127.0.0.1: the transcript, a subagent rail you can open a running agent from, and a git panel whose changed files open their diff.wizard appputs that in a native window through the system webview (no bundled Chromium, ~10MB rather than ~200MB), andwizard app --installadds Wizard to your launcher. Still settling; the TUI remains the surface everything ships to first. → Desktop app - Persistent memory. The agent keeps what it learns as plain markdown under
~/.wizard/memory/<project>/: typed (user/feedback/project/reference), linked with[[name]], indexed into the system prompt each session./memoryreads it back; it is your file, not a black box. → Memory - Harness evolution (AHE). The shipped defaults were improved offline by an evaluate→analyze→improve loop (80% → 100% pass@1 on a Terminal-Bench sample). The old local
wizard benchtrajectory runner is gone — AHE superseded it. → Self-extension / harness - Messaging gateway. Run headless as a bot you talk to from your phone (Telegram), each inbound message a sovereign agent turn in your project. → Gateway
- Make it your own. After a deep evolve modifies its source,
/publishforks upstream to your GitHub and hands out a one-line installer for your variant. → Fork and distribute
Smaller attack surface by construction. A single memory-safe Rust binary with an embedded LuaJIT for self-extension — not a garbage-collected app runtime, not a separate interpreter process to inject into. Every install also converges on a different /evolve loadout, so there's no uniform tool surface to target. Read SECURITY.md before autonomous runs; tools execute with your privileges.
haha suckers
You thought you needed an interpreter and to write your TUI in bloated TypeScript. No. Just have the just-in-time compiler for LuaJIT. Wizard is Rust + Ratatui for the surface, and when it extends itself the glue is Lua that the JIT compiles — in-process, fast, no Node, no Electron, no shipping a second runtime next to the binary. Self-extension without the bloat tax.
Limitations
- Platforms. Linux (x86_64, aarch64) and macOS (Apple Silicon and Intel). Windows isn't supported; run it under WSL2. The installer downloads a prebuilt binary for your platform and builds from source when one isn't published yet.
- Small local models are worse than frontier models. A 9B–36B quantized Qwen will misformat tool calls, miss context, and need more steering than Claude- or GPT-class models. Wizard mitigates with native tool-call probing, a JSON fallback, and retry prompts; the 27B+ tiers make much better agents than the 9B tier.
- No sandbox. Tools run with your privileges, with no per-action approval gate in either mode. Read SECURITY.md before running on anything you don't trust, and prefer a container/VM for autonomous or continuous work.
- Context windows are finite. Wizard searches and reads selectively rather than ingesting the whole repo, auto-compacts older history, and instructs the agent to compact / reset deliberately when the task changes, but long sessions still eventually push out early detail. → Agent-managed context
Docs
- Getting started: install (all flavors, Nix, macOS), tiers, providers, first run, in-place updates (
wizard update), troubleshooting - Usage: slash commands,
wizard agents, the subagent rail, token usage and cost, todos, project instructions - Desktop app:
wizard app, the GUI in a native window, plus the launcher entry (WIZARD_APP=1to install) - Gateway: run Wizard as a Telegram bot
- Modes: genie, sovereign, and continuous
- Self-extension:
/evolvetiers, gates, rollback - Fusion: the
/fusiondebate panel - Ultra: the
/ultramixture of agents - Bring your own model: any GGUF, or custom Ollama models
- Custom commands & @files: your own
/commands;@pathfile references - Memory: what Wizard remembers between sessions, and
/memory - Hooks · Tasks · Web · Headless output · Checkpoints
- Doctor & status:
wizard doctordiagnostics,/status - Scheduler: cron-scheduled headless runs
- Fleet: parallel workers over git worktrees
- Sync:
wizard syncmoves config, skills, and custom tooling between machines as a signed bundle - Fork and distribute: publish your evolved Wizard
- Architecture: how it's built
- Security: threat model
- WIZARD.md: the agent's bundled behavioral charter, inherited and editable by every fork
Development
Rust 2024, Ratatui, Tokio, embedded LuaJIT (mlua). Single binary, < 60 MB stripped.
git clone https://github.com/teddytennant/wizard
cd wizard
cargo build --release
./target/release/wizard
There's also a Nix flake: nix run github:teddytennant/wizard, or nix develop for a shell with the Rust toolchain and llama-cpp.
Acknowledgements
Local inference is powered by llama.cpp (ggml-org): Wizard installs its llama-server when you pick the local option. Ollama is a first-class supported provider.
License
MIT; see LICENSE.
Author
Teddy Tennant (github.com/teddytennant)
No comments yet
Be the first to share your take.