Skip to main content
Octo uses a supervisor pattern — a central agent that receives all user messages and routes them to the right specialist. The supervisor manages task plans, writes memories, schedules tasks, and coordinates between agents.

Agent Types

Project Workers

One per registered project. Wraps claude -p for full codebase access via Claude Code CLI.

Standard Agents

Loaded from AGENT.md files. Get MCP tools + built-in tools. Best for focused tasks.

Deep Research Agents

Powered by deepagents. Persistent workspaces, planning middleware, and summarization.

How Routing Works

The supervisor reads the user’s message and decides which agent to delegate to based on:
  1. Agent descriptions — each agent declares what it’s good at in its AGENT.md
  2. Conversation context — what’s been discussed so far
  3. Available tools — which agent has the right tools for the job
The supervisor can also handle simple requests directly without delegating.

Agent Sources

Agents are loaded from two sources at startup:

Project Agents

Configured via AGENT_DIRS in .env:
AGENT_DIRS=/path/to/project-a/.claude/agents:/path/to/project-b/.claude/agents
Each directory is scanned for */AGENT.md files. These become standard agents with access to MCP tools and built-in tools.

Octo-Native Agents

Stored in .octo/agents/*/AGENT.md. These are managed by Octo itself — create them with the /create-agent wizard or manually.

Built-in Tools

Available to all agents (configurable per agent via tools: in AGENT.md):
ToolDescription
ReadRead file contents
GrepSearch file contents with regex
GlobFind files by pattern
EditEdit files with string replacement
BashExecute shell commands
claude_codeDelegate to Claude Code CLI (claude -p)

Supervisor-Only Tools

The supervisor has additional tools not available to workers:
ToolDescription
write_todos / read_todosTask planning and progress tracking
write_memory / update_long_term_memoryPersistent memory across sessions
update_stateUpdate project STATE.md
schedule_taskSchedule cron jobs
send_fileSend files via Telegram

Direct Agent Access

Skip the supervisor and send a prompt directly to a specific agent:
/<agent-name> your prompt here
List all loaded agents with /agents.

Next Steps