Octomind
Octomind runs coding tasks through MCP tools in interactive, piped, daemon, WebSocket, and ACP sessions with configurable guardrails.
1.0.0Add to Favorites
Source
Get it from source
Spark does not host a copy of it.
Open sourceReports
Agent outcome reports
No reports yet
Overview
Octomind connects language models to repository tools in a CLI runtime with interactive, piped, daemon, WebSocket, and ACP modes. TOML configuration controls roles, MCP servers, execution guardrails, and spending thresholds. Use it for terminal coding sessions, CI scripts, background tasks, or integrations that need repository access. Configure guards and filesystem restrictions for the actions each workflow permits.
What it does
Octomind is a CLI-first coding runtime that connects language models to repository tools through MCP. A session can read and write files, execute shell commands, search code, and delegate work to sub-agents. The same session engine supports interactive work and autonomous execution, so a task can run from a terminal, receive piped input, continue in a background daemon, or become part of another application's integration.
Models, tools, roles, guardrails, and budgets are configured in TOML. Roles can select their own model, temperature, system prompt, and tools. Multi-step workflows give each step its own model and toolset. Skills and capabilities activate on demand, while adaptive compression retains task knowledge and the live exchange during longer sessions. Cache-aware accounting and compaction support token management. External planning and gating are available through the supervisor, alongside file-backed learning records.
When to use - and when NOT to
Use interactive sessions for daily development, piped execution for CI/CD and shell automation, and daemon mode for background work or continuous monitoring. The terminal interface uses a plain line prompt with Markdown rendering and works over SSH, in tmux, and in CI logs. Piped runs offer plain or jsonl formatting. For machine-readable final responses, a JSON Schema can constrain output when the selected model supports structured output.
For IDE plugins, dashboards, and other integrations, the WebSocket server exposes the session engine. ACP makes Octomind available as a sub-agent inside another agent or editor. These modes suit workflows that need repository actions beyond a conversational response. When a task must avoid repository writes, configure the available restrictions before execution: ordinary sessions have tools that can edit files and run commands. The sandbox option restricts filesystem writes to the working directory; deterministic guardrails control tool calls.
Request and session spend thresholds provide separate budget boundaries. A request exceeding its threshold stops. At the session threshold, an interactive terminal session asks whether to continue, while a non-interactive run stops with exit code 75. Account for that exit behavior when scheduling unattended work.
Capabilities
Guardrails live in a repository's .agents/guardrails.toml file and operate without a compiled plugin. Pre-call guards deny matching capabilities or arguments, with conditions based on session history. After a tool result, hooks can inject their stdout into the inbox when they exit unsuccessfully, allowing lint or formatting feedback to become a correction. Validators run after a turn, with scripts read on the following turn to support autonomous approval and correction loops.
The MCP client supports stdio and Streamable HTTP servers, including OAuth, and servers can be enabled or disabled during a session. Executable scripts under .agents/tools/ register automatically as local project tools. Packaged specialists combine a prompt, model, MCP servers, and tool permissions in a tap. Starting a specialist fetches its manifest, installs required binaries, resolves credentials, starts the appropriate servers, and opens the session. First use may therefore require tool installation and credentials.
The developer:general specialist comes from the default muvon/tap registry. Running without a specialist starts the default configured role, assistant:concierge. Teams can scaffold, validate, initialize, and register their own tap, then publish it for use on another machine. Tap repository names receive an octomind- prefix automatically.
Model access can use Octomind Cloud or provider keys, including OpenRouter, Anthropic, OpenAI, DeepSeek, and Ollama. Cloud login uses device-code sign-in and stores a gateway key locally; the default configuration uses octohub:auto. When switching to a provider key, update the main model, supervisor model, and compression model configuration rather than changing only the main model.
Configuration lives under ~/.local/share/octomind/config/config.toml on macOS and Linux, or %LOCALAPPDATA%/octomind/config/ on Windows. OCTOMIND_DATA_DIR overrides the data root, and individual values can be overridden for a single run. Session commands cover usage and cost information, model and role changes, new sessions, forced compression, and exit. Shell completion is available for bash, zsh, fish, elvish, and powershell.
Anonymous telemetry includes command, tool, and model usage, timings, token counts, and error kinds. It excludes code, prompts, file paths, tool arguments, and environment values. Opt-out controls include DO_NOT_TRACK, OCTOMIND_TELEMETRY, and the telemetry configuration setting.
How to install
On macOS, Homebrew provides this installation command:
brew install muvon/tap/octomind
Other installation methods include scripts for macOS, Linux, and Windows PowerShell, Scoop on Windows, Cargo with Rust 1.95 or newer, Docker, and building from source. Source builds require protoc. The Unix install script supports x86_64 and aarch64, defaults to ~/.local/bin/, and accepts an installation-directory override. The Windows script supports the same architectures, installs under %LOCALAPPDATA%/octomind/bin, and adds that directory to the user's PATH. Its installation directory and version can also be overridden. Git Bash and MSYS2 can use the Unix script.
After installation, choose Cloud access or configure a provider key, then start the desired specialist in the project directory. The CLI includes version inspection, default-config generation, configuration display, and validation. Octomind is provided under the Apache License 2.0.
Source README
The CLI-first AI coding agent runtime.
Pipe it, schedule it, embed it. One binary, any model, MCP-native - built for autonomous work, not just chat.
Website · Docs · Tap Registry · Benchmarks · Issues

Octomind is a CLI-first AI coding agent runtime. It gives an LLM real access to your repo - reading and writing files, running shells, searching code, delegating to sub-agents - through MCP tools. The same session engine works interactively, piped through stdin, as a background daemon, over WebSocket, or as an ACP sub-agent inside another agent's stack.
# Interactive
octomind run developer:general
# Piped — CI, scripts, automation
echo "Explain the auth module" | octomind run developer:general --format plain
# Daemon — keep it alive, talk to it from another terminal
echo "watch the build" | octomind run --name watcher --daemon --format jsonl
octomind send --name watcher "run the test suite"
Why Octomind?
Most coding agents assume a human is watching the screen. Octomind is built for the work that keeps going after you leave.
- Policy as code, not approval popups. Deterministic guardrails - pre-call guards, post-result hooks, post-turn validators - live in TOML and scripts, so they work in CI, daemons, and scheduled runs.
- Proven on real PRs. It solved 24 of 25 held-out tasks at lower cost than the closest competitor. See the benchmarks.
- Ready-made specialists.
octomind run developer:generalpulls a packaged agent (prompt, model, MCP servers, tool permissions) from a tap. Publish your own with one repo. - Sessions that stay sharp. Adaptive compression keeps long tasks moving while retaining task knowledge and the live exchange.
- Any model, any budget. Use Octomind Cloud or your own key (OpenRouter, Anthropic, OpenAI, DeepSeek, Ollama, and more), pick a model per role, and set spend thresholds per request and per session. A request over its threshold stops; at the session threshold a terminal session asks y/N before continuing, while a non-interactive
octomind runstops with exit code 75. - One config. Models, tools, roles, guardrails, budgets: all TOML, no framework code.
Quick Start
1. Install (macOS, Linux):
curl -fsSL https://raw.githubusercontent.com/muvon/octomind/master/install.sh | bash
On Windows, in PowerShell:
irm https://raw.githubusercontent.com/muvon/octomind/master/install.ps1 | iex
On macOS, you can also install with Homebrew:
brew install muvon/tap/octomind
2. Get model access. The fastest path is Octomind Cloud, which includes models and needs no configuration:
octomind login
Prefer your own provider key? Skip login and export one (also OPENAI_API_KEY, ANTHROPIC_API_KEY, DEEPSEEK_API_KEY), then follow Model access to point the config at it:
export OPENROUTER_API_KEY="your_key"
3. Run a specialist in your project:
cd ~/your/project
octomind run developer:general
You're now in a session with an agent that can read your code, run commands, and edit files. The interface is a plain line prompt with markdown rendering - no TUI to learn, so it works over SSH, in tmux, and in CI logs. The first time you run a specialist, it may install its tools and ask for credentials.
developer:generalcomes from the default tapmuvon/tap, not your local config. Plainoctomind runstarts the config's default role,assistant:concierge.
Try the recorded bug-fix demo: two failing tests, an agent fix, and an independent test rerun.
Benchmarks
Measured on octobench against 25 tasks harvested from merged pull requests across Python, PHP, Rust, C++, and JavaScript. Each agent works in the pre-fix repo; held-out tests from the merged fix decide pass or fail. These are the published July 30, 2026 results, not a measurement of this checkout.
| solved | judge Σ / 2500 | cost | wall time | |
|---|---|---|---|---|
| octomind + glm-5.2 | 24/25 | 2264 | $63.43 | 3.6h |
| claude code + claude-opus-5 | 23/25 | 2262 | $81.79 | 6.7h |
| codex + gpt-5.6-sol | 21/25 | 2127 | $14.86 | 1.0h |
| opencode + glm-5.2 | 19/25 | 2093 | $129.54 | 3.3h |
- The harness matters. opencode used the same model and endpoint; octomind solved 24 vs 19 at roughly half the cost. All four agents ran stock invocations with no tuning, so this measures the whole harness, not individual features.
- Worst-case pricing, still ahead. glm-5.2 ran without prompt caching while Opus billed ~97% of context re-reads at cache rates - and octomind still led on solves, cost, and wall time.
- Reproducible. Per-case table, artifacts, and reproduction guide: BENCHMARK.md. Background: blog post.
Guardrails: Policy as Code
Drop a .agents/guardrails.toml in your repo. The runtime enforces it deterministically, with no code to compile and no plugin to install.
# Pre-call deny — block a class of calls before they execute
[[guard]]
match = "shell(command=^rm\\s+-rf?)"
message = "rm -rf blocked."
# Conditional rule — only fires after the agent ran git status this session
[[guard]]
match = "shell(command=git push)"
when = ["+shell(command=git status)"]
message = "Review changes before pushing."
| Layer | When it runs | What it does |
|---|---|---|
| Guards | Before a tool call | Deny by capability, argument regex, and session history. A match returns a denial instead of executing the call. |
| Hooks | After a tool result | A non-zero exit injects stdout into the agent's inbox - lint and format failures become automatic corrections without restarting the turn. |
| Validators | After a turn | Scripts the agent reads on its next turn. This replaces "approve this change?" prompts in autonomous loops. |
Hook and validator script examples: Guardrails guide.
Five Ways to Run It
The same session engine, exposed however your workflow needs it.
| Surface | Use it for | Docs |
|---|---|---|
| Interactive CLI | Daily work, any domain | Sessions |
Piped (--format plain / jsonl) |
CI/CD, shell scripts, automation | CLI reference |
Daemon + send |
Background agents, continuous monitoring | Daemon & hooks |
WebSocket (octomind server) |
IDE plugins, dashboards, integrations | WebSocket server |
ACP (octomind acp) |
Sub-agent inside another agent or editor | ACP protocol |
Need machine-readable results? Pass --schema schema.json to constrain the final response to a JSON Schema (requires a model with structured-output support). See Structured output.
Features
| Feature | What you get | Learn more |
|---|---|---|
| Specialists & taps | Packaged agents with model, prompt, MCP servers, and permissions; installs their tool dependencies on first use | Tap system |
| Roles | Per-role model, temperature, system prompt, tools | Roles |
| Workflows | Multi-step pipelines, each step with its own model and toolset | Workflows |
| MCP client | stdio and Streamable HTTP servers, with OAuth; enable/disable servers mid-session | MCP tools |
| Intent-driven context | Skills and capabilities activate on demand, keeping context small | Skills |
| Local project tools | Executable scripts in .agents/tools/ auto-register as tools |
Local tools |
| Supervisor & learning | External planning and gating; file-backed learning records | Supervisor, Learning |
| Sandbox | --sandbox restricts filesystem writes to the working directory |
Config reference |
| Token efficiency | Cache-aware accounting and compaction | Token efficiency |
Specialists
octomind run developer:general # general dev, language skills auto-activate
octomind run doctor:blood # blood-test interpretation specialist
octomind run lawyer:sg # legal specialist
Running a specialist fetches its manifest from the tap registry, installs any required binaries, resolves credentials, starts the right MCP servers, and then opens the session.
Build and register your own:
octomind tap init yourteam/my-tap # scaffold, validate, git-init, and register locally
octomind tap yourteam/my-tap # on another machine, after publishing to GitHub
The octomind- prefix is added automatically: yourteam/my-tap maps to the repository
yourteam/octomind-my-tap.
Installation
MethodCommandInstall script (recommended)curl -fsSL https://raw.githubusercontent.com/muvon/octomind/master/install.sh | bashInstall script (Windows PowerShell)irm https://raw.githubusercontent.com/muvon/octomind/master/install.ps1 | iexHomebrew (macOS)brew install muvon/tap/octomindScoop (Windows)scoop bucket add muvon https://github.com/Muvon/scoop-bucket then scoop install muvon/octomindCargo (Rust 1.95+)cargo install octomindDockerdocker run --rm ghcr.io/muvon/octomind --helpFrom sourcegit clone https://github.com/muvon/octomind.git && cd octomind && cargo build --releaseThe install script detects your OS and architecture (Linux and macOS on x86_64/aarch64) and installs to ~/.local/bin/. Pass --install-dir <DIR> or set OCTOMIND_INSTALL_DIR to override. On Windows (x86_64/aarch64), install.ps1 installs to %LOCALAPPDATA%\octomind\bin and adds it to your user PATH; it honors OCTOMIND_INSTALL_DIR and OCTOMIND_VERSION too. install.sh still works from Git Bash or MSYS2.
Command not found? Add the install directory to your PATH:
export PATH="$HOME/.local/bin:$PATH"
Building from source requires protoc; see Building from source for per-OS prerequisites.
Verify:
octomind --version
octomind config # generate the default config
octomind run # start your first session
Shell completions: octomind completion <bash|zsh|fish|elvish|powershell>.
Model access
Octomind Cloud - octomind login (device-code sign-in, like gh auth login) stores a gateway key locally. The default config already uses octohub:auto. Learn more.
Bring your own key - set the provider's environment variable (OPENROUTER_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY, DEEPSEEK_API_KEY, …) and point the model tables at it. The supervisor and compression profiles also default to octohub:auto, so update all three:
[model]
name = "openrouter:google/gemini-2.5-flash"
[supervisor.model]
name = "openrouter:google/gemini-2.5-flash"
[compression.model]
name = "openrouter:google/gemini-2.5-flash"
Provider details and per-role overrides: Providers & models.
Configuration
Config lives at ~/.local/share/octomind/config/config.toml on macOS and Linux, and under %LOCALAPPDATA%/octomind/config/ on Windows. Set OCTOMIND_DATA_DIR to override the data root.
octomind config --show # view current config
octomind config --validate # validate config
Override any value for a single run with -c:
octomind run -c supervisor.enabled=false
Full reference: Configuration reference · Environment variables.
Session commands
| Command | Description |
|---|---|
/help |
Show all commands |
/info |
Token usage and costs |
/model anthropic:claude-haiku-4-5 |
Switch model mid-session |
/role developer:general |
Switch to a configured role or tap tag |
/new Review auth |
Start a fresh session (title optional) |
/done |
Force context compression and start background learning extraction when enabled |
/exit |
Exit the session |
Full list: Session commands.
Telemetry
Octomind reports anonymous usage: which commands, tools, and models are used, plus timings, token counts, and error kinds. It never sends your code, prompts, file paths, tool arguments, or environment values. Opt out in any of three ways:
export DO_NOT_TRACK=1 # the cross-tool standard, honored first
export OCTOMIND_TELEMETRY=0 # for subsequent commands in this shell
# or set `telemetry = false` in config.toml
Exact field list: Telemetry.
Documentation
| Start here | Go deeper | Integrate | Reference |
|---|---|---|---|
| Installation | Roles | WebSocket server | CLI |
| Quickstart | Workflows | ACP protocol | Config |
| Configuration | Compression | Daemon & hooks | Session commands |
| Providers & models | Guardrails | Editor integration | Environment variables |
Full index: doc/README.md · Hosted: octomind.run/docs.
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.