A tiny coding agent.
One loop, multiple models, six tools, zero config.
Think → call tools → feed results back → repeat.
No plugins, no hooks, no middleware.
Loops until the model stops calling tools. All calls in a single turn run in parallel.
Route to any provider. Run consensus or debate across models. A judge synthesizes the final answer.
Orchestrated providers never get direct tool access.
They ask the main agent for context. Cached, shared, deduplicated.
One loop. Few durable primitives.
Avoid frameworks inside the framework.
If context is needed, gather it. Do not guess.
Orchestrated providers ask for evidence.
They do not get direct tool access.
Simple files, explicit flows, minimal magic.
Fast feedback, clear output, no hidden state.
Prefer one env var or one directive
over a matrix of settings.
Gathered evidence is deduplicated and shared.
Never fetch the same thing twice.
When something fails, return a clear error. Never panic.
read File contentswrite Create or overwriteedit Search-and-replacebash Shell commandsweb_search SearXNG searchskill Load a playbook on demandMarkdown playbooks the model loads on demand.
Not in the system prompt — pulled in only when needed.
The model sees names + descriptions at startup.
It calls skill("name") when the task matches — no user action needed.
Single provider
#!openrouter#! review this code
Model override
#!openrouter model:deepseek/deepseek-v3-0324#! refactor this
Consensus
#!anthropic openai#! should we use X?
Debate + judge
#!debate anthropic openai rounds:2 judge:anthropic#! argue this
request_evidenceSame query = cached result. Shared across all providers.
Shell commands are read-only only (find, grep, git log).
Every message, tool call, and result is appended to a JSONL file.
No mutation, no corruption.
When context nears the model's limit, the agent compacts:
generates a summary, rotates to a new session,
replays recent user messages verbatim.
Triggered at 85% of context window.
A second cheap call distils the summary into memory.md —
durable facts that survive across sessions.
| Retry with fallback | Retries 3×, then offers alternative providers |
| Parallel tools | Multiple calls execute concurrently |
| Output truncation | Large outputs trimmed before re-entering context |
| Stop anywhere | Ctrl+C stops cleanly; session preserved |
| AGENTS.md | Loaded as system prompt if present |
| memory.md | Durable facts appended at compaction, loaded at startup |
| skills/ | Playbooks loaded on demand via the skill tool |
| Language | Files | Lines |
|---|---|---|
| Rust | 25 | 4,542 |
| HTML | 1 | 550 |
| Markdown | 3 | 349 |
| Total | 29 | 5,441 |