FAQ
General
Section titled “General”What is BMO?
Section titled “What is BMO?”BMO is an open-source, terminal-native AI coding agent built in Go. It integrates directly into your development workflow — reading, editing, and running code in your local environment.
What models does BMO support?
Section titled “What models does BMO support?”BMO supports Anthropic Claude, OpenAI, Google Gemini/Vertex, AWS Bedrock, Azure OpenAI, Groq, OpenRouter, and any OpenAI-compatible endpoint. See Authentication for setup.
Does BMO send my code to a server?
Section titled “Does BMO send my code to a server?”BMO sends your prompts and file contents to the AI provider you configure (e.g. Anthropic, OpenAI). It does not send data to any BMO-operated backend.
Is BMO free?
Section titled “Is BMO free?”BMO itself is free and open-source. You pay only for the AI provider API usage.
Configuration
Section titled “Configuration”Where is the config file?
Section titled “Where is the config file?”Global config lives in ~/.config/bmo/bmo.toml by default. Project-local
overrides use bmo.toml or .bmo.toml. Existing JSON config files are still
loaded as a fallback, but TOML is the canonical format.
How do I set my API key?
Section titled “How do I set my API key?”export ANTHROPIC_API_KEY=sk-...Or set it in bmo.toml:
[providers.anthropic]api_key = "${ANTHROPIC_API_KEY}"See Authentication.
Can I use different models for different tasks?
Section titled “Can I use different models for different tasks?”Yes. Use Phase Model Routing to configure separate planning and execution models, or configure per-agent models in multi-agent setups.
Tools & Execution
Section titled “Tools & Execution”Can BMO run terminal commands?
Section titled “Can BMO run terminal commands?”Yes — the bash tool runs shell commands. By default, BMO asks for confirmation before running potentially destructive commands. Use Lifecycle Hooks or the Execution Sandbox to restrict what can run.
Does BMO have internet access?
Section titled “Does BMO have internet access?”Yes. The built-in web tools are web_fetch, web_search, and agentic_fetch.
Hide them globally with options.disabled_tools, or remove them from a
specific agent via [agents.<id>.tools].
How do I limit what tools the agent can use?
Section titled “How do I limit what tools the agent can use?”Use the layer that matches what you want to control:
[options]disabled_tools = ["web_search", "sourcegraph"]
[agents.coder.tools]allowed = ["view", "grep", "glob", "bash"]
[permissions]allowed_tools = ["view", "grep"]options.disabled_tools hides built-ins globally. agents.<id>.tools shapes
one agent’s tool set. permissions.allowed_tools skips approval prompts but
does not hide the tools.
Sessions
Section titled “Sessions”How do I continue a previous session?
Section titled “How do I continue a previous session?”Use /session in the TUI to browse and resume prior sessions.
What is the context window limit?
Section titled “What is the context window limit?”BMO uses Context Pruning to automatically trim
older context as a session approaches the model limit. Tune it with
options.pruning.*.
What is MCP?
Section titled “What is MCP?”Model Context Protocol — a standard for connecting AI models to external tools and data sources. BMO can act as both an MCP client (consuming external tools) and an MCP server (exposing its tools to editors like Cursor, VS Code, Zed). See MCP Client and MCP Server.