The AI coding agent that runs on your machine. Not theirs.
English | 简体中文 | 한국어 | Deutsch | Español | Français | 日本語 | Русский | العربية | Italiano | Türkçe | Português (Brasil)
Requires Node 20.12+ and 16 GB RAM minimum (32 GB or dedicated GPU recommended for local models).
npm install -g miii-cli# Local — free, offline, private (recommended)
ollama pull qwen2.5-coder:7b
cd your-project && miii
# Anthropic Claude (Opus 4 / Sonnet 4)
ANTHROPIC_API_KEY=sk-ant-... miii
# then: /config model claude-opus-4-7
# OpenAI (o3, o4-mini, GPT-4o)
OPENAI_API_KEY=sk-... miii
# then: /config provider openai-compat → /config url → /config model o3
# Any OpenAI-compatible endpoint (vLLM, LM Studio, llama.cpp)
# /config provider openai-compat → /config url <endpoint> → /config key <key>Config lives at ~/.config/miii/config.json (global) or .miii.json (project). Drop a MIII.md in your repo for project-specific instructions — same mechanic as Claude Code's CLAUDE.md.
Every cloud coding agent sends your code to a server you don't control, charges per token, and calls it intelligence. You have a machine on your desk that's been idle since you bought it.
miii is the agent layer that belongs on your hardware. Your code never leaves unless you decide it should.
The reason local models fail on long tasks isn't that they're dumb. It's that other tools fill context with the wrong things.
Without Beacon, a typical agent after 10 tool calls:
depth 1 │ user: "fix the token expiry bug"
depth 2 │ read_file(auth.ts) → 800 lines verbatim ← acted on, still taking space
depth 3 │ read_file(middleware.ts) → 600 lines verbatim ← same
depth 4 │ list_files(src/) → full tree ← same
depth 5 │ run_command(grep...) → full stdout ← same
depth 6 │ update_file(auth.ts) → patch
depth 7 │ run_tests() → full test output ← same
depth 8 │ ░░ context full — stalled
With Beacon:
depth 1 │ user: "fix the token expiry bug"
depth 2 │ read_file(auth.ts) → [147 lines · first 4 shown]
depth 3 │ read_file(middleware.ts) → [89 lines · first 4 shown]
depth 4 │ list_files(src/) → [23 files · first 8 shown]
depth 5 │ run_command(grep...) → [first 4 lines + last line]
depth 6 │ update_file(auth.ts) → patch ← recent: untouched
depth 7 │ run_tests() → [first 10 · failures verbatim]
depth 8 │ [Beacon Goal Block] → goal + steps + what's left
depth 9 │ model response
...
depth 20 │ ✓ still running
No LLM calls to summarise. No queue stall. Pure string operations — microseconds per depth. A local 7B with Beacon outruns a naive Claude Opus integration on long tasks — not because it's smarter, but because it's not fighting its own context.
Type / and miii automatically picks up your globally installed Claude Code skills (~/.claude/skills/). Any skill — /graphify, /plan, /review, or your own — runs directly from the miii palette. No extra setup.
| miii | Claude Code | Aider | Cursor / Cline | |
|---|---|---|---|---|
| Runs locally | ✓ default | ✗ cloud only | ✓ | ✗ |
| Free to use | ✓ (local) | ✗ subscription | ✓ | ✗ |
| Code stays on machine | ✓ | ✗ | ✓ | ✗ |
| Goal-directed context (Beacon) | ✓ | ✗ | ✗ | ✗ |
| Per-tool context compression | ✓ | ✗ | ✗ | ✗ |
| Dynamic context window detection | ✓ auto | ✗ hardcoded | ✗ | ✗ |
| Call graph (AST, no model) | ✓ | ✗ | ✗ | ✗ |
| Windowed file reads | ✓ | ✗ | ✗ | ✗ |
| Permission modal + live diff | ✓ | ✓ | ✗ | partial |
| Shadow git (model edit log) | ✓ | ✗ | partial | ✗ |
| OS-level shell sandbox | ✓ | ✗ | ✗ | ✗ |
| Cloud escalation | ✓ /cloud |
native | ✗ | native |
| MCP support | ✓ | ✓ | ✗ | ✓ |
Where Claude Code wins: direct access to Anthropic's best models, deeper IDE integration. If you're on a paid Anthropic plan and privacy isn't a constraint, it's excellent.
Where miii wins: your code never leaves by default, no subscription, and Beacon keeps the model focused across long tool chains in a way no other local-first tool does.
Type / to open the palette.
Escalation
| Command | What it does |
|---|---|
/cloud [prompt] |
Escalate to Claude Opus 4 / o3 for one turn |
Code
| Command | What it does |
|---|---|
/plan <goal> |
Think before touching code |
/tdd <feature> |
Write failing test → implement → green |
/refactor <goal> |
Multi-file refactor with checkpoints |
Graph & Index
| Command | What it does |
|---|---|
/graph build |
Build the symbol call graph (pure AST, no model) |
/graph query "<term>" |
Query the call graph — e.g. auth → verifyToken → hmacSha256 |
/index build |
Build semantic vector index over the codebase |
Context & Memory
| Command | What it does |
|---|---|
/compact |
Compress history, extract facts to memory |
/undo |
Revert last model edit (snapshot restore) |
/history |
Browse shadow git log of all model edits |
Model & Config
| Command | What it does |
|---|---|
/model <name> |
Hot-swap model mid-session |
/config model <name> |
Set default model |
/config provider <name> |
Set provider (ollama, anthropic, openai-compat) |
/config url <url> |
Set custom endpoint URL |
/config key <key> |
Set API key |
Esc aborts the current run and rolls back all edits. Ctrl+C exits.
git clone https://github.com/maruakshay/miii-cli
cd miii-cli && npm install && npm run build && npm link
npm run dev # tsx watch — no build step needed
npm test # vitest, 48 testsJoin our community miii.in
MIT · @maruakshay
