missiond

Multi-agent orchestration for Claude Code - spawn and control multiple Claude instances via MCP

missiond

Multi-agent orchestration for Claude Code — Spawn, control, and coordinate multiple Claude Code instances from a single session via MCP.

Crates.io License: MIT

What is missiond?

missiond is a daemon that turns a single Claude Code session into a multi-agent system. The main Claude Code instance acts as an orchestrator, dispatching tasks to background Claude Code agents running in managed pseudo-terminals (PTY slots). Each slot is a fully independent Claude Code session with its own working directory, role, and permissions.

Features

Core

  • PTY Sessions — Spawn Claude Code in pseudo-terminals with full terminal emulation (via Alacritty terminal)
  • Semantic Parsing — Real-time state detection (Idle/Thinking/Responding/Confirming/Error), tool output extraction, status bar parsing, confirm dialog parsing
  • MCP Integration — 40+ tools exposed through Model Context Protocol for agent control
  • Task Queue — Async task submission (mission_submit) and sync consultation (mission_ask) with automatic slot routing
  • Permission System — Role-based tool permissions (allow/confirm/deny) with glob pattern matching
  • Cross-Platform — macOS, Linux, Windows; Unix domain sockets or TCP loopback IPC

Agent Lifecycle

  • Auto-Restart — Automatically restarts PTY slots when context window drops below 10%
  • Stuck Detection — Monitors JSONL activity to detect and recover stuck agents
  • Autonomous Workflow — Agents can work autonomously with safety guardrails and reporting back to the orchestrator

Knowledge & Memory

  • Knowledge Base (KB) — SQLite-backed knowledge store with FTS5 full-text search, auto-GC, and tiered categories
  • Conversation Logging — Records all Claude Code conversations (including tool_use/tool_result and thinking blocks) into SQLite
  • Memory Extraction — Real-time and deep analysis pipelines that extract insights from agent conversations
  • KB Injection — Automatically injects relevant knowledge into agent context via MCP server instructions and UserPromptSubmit hooks

Monitoring & Dashboard

  • WebSocket API — Real-time PTY attach, task events, and session monitoring
  • Board UI — Next.js dashboard with conversation viewer, slot status, and task management
  • CC Tasks Watcher — Cross-session task monitoring by watching Claude Code's JSONL session files
  • PTY Screenshots — Render terminal state as PNG images for visual debugging

Infrastructure Tools

  • Mission Board — Task/kanban board with notes, hidden tasks, and skip status
  • Question Queue — Agents can post questions for human review instead of blocking
  • Slot History — Track task assignment history per slot
  • AI Router — Route LLM requests through configurable model backends (for KB analysis)
  • Reachability Check — Probe configured server health endpoints
  • OS Diagnostics — System resource monitoring (CPU, memory, disk)

Architecture

┌─────────────────┐     MCP      ┌──────────────┐
│  Claude Code    │◄────────────►│  mission-mcp │
│  (Orchestrator) │              └──────┬───────┘
└─────────────────┘                     │ IPC (JSON-RPC)
                                        ▼
                               ┌──────────────────┐
                               │    missiond       │
                               │    (Daemon)       │
                               ├──────────────────┤
                               │ • Task Queue      │
                               │ • PTY Manager     │
                               │ • Permission Mgr  │
                               │ • Knowledge Base  │
                               │ • Memory Pipeline │
                               │ • WebSocket API   │
                               │ • CC Tasks Watcher│
                               └────────┬─────────┘
                                        │ PTY
              ┌─────────────────────────┼─────────────────────────┐
              ▼                         ▼                         ▼
        ┌───────────┐            ┌───────────┐            ┌───────────┐
        │  slot-1   │            │  slot-2   │            │  slot-N   │
        │  Claude   │            │  Claude   │            │  Claude   │
        │  (coder)  │            │ (research)│            │ (memory)  │
        └───────────┘            └───────────┘            └───────────┘

Installation

From Cargo (Rust)

cargo install missiond-mcp --bin mission-mcp
cargo install missiond-daemon --bin missiond
cargo install missiond-attach --bin missiond-attach

From npm (Node.js)

npm install @missiond/core

Pre-built binaries for:

  • macOS (ARM64, x64)
  • Linux (x64 glibc, x64 musl)
  • Windows (x64)

Quick Start

1. Configure MCP

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "mission": {
      "command": "mission-mcp",
      "args": [],
      "env": { "MISSION_LOG_LEVEL": "warn" }
    }
  }
}

2. Configure Slots

Create ~/.missiond/slots.yaml:

slots:
  - id: coder-1
    role: coder
    description: "Coding specialist"
    cwd: /path/to/projects

  - id: researcher-1
    role: researcher
    description: "Research and documentation"
    cwd: /path/to/docs

3. Use from Claude Code

User: "Spawn an agent to refactor the auth module"

Claude: I'll spawn a coding agent for that task.
[Uses mission_pty_spawn tool]
[Uses mission_pty_send with the refactoring instructions]

MCP Tools

Task Operations

ToolDescription
mission_submitSubmit async task to agent (with optional slotId targeting)
mission_taskBatch query submit task status
mission_askSync expert consultation
mission_statusQuery task/agent status
mission_cancelCancel running task
mission_spawnSpawn a new agent slot
mission_killKill an agent slot
mission_restartRestart an agent slot
mission_agentsList all agents and their states
mission_slotsGet slot configuration
mission_inboxCheck inbox for messages

PTY Control

ToolDescription
mission_pty_spawnStart PTY session
mission_pty_sendSend message, wait for response
mission_pty_screenGet current terminal screen
mission_pty_screenshotRender terminal as PNG image
mission_pty_confirmHandle tool confirmation dialogs
mission_pty_interruptSend Ctrl+C
mission_pty_killClose PTY session
mission_pty_statusGet session state and metadata
mission_pty_historyGet session message history
mission_pty_logsGet PTY log file contents

Knowledge Base

ToolDescription
mission_kb_rememberStore a knowledge entry
mission_kb_forgetDelete a knowledge entry
mission_kb_searchFull-text search across KB
mission_kb_getGet entry by ID
mission_kb_listList entries with filtering
mission_kb_importBulk import entries
mission_kb_discoverDiscover knowledge from infrastructure
mission_kb_gcGarbage collect stale entries
mission_kb_analyzeAI-powered KB analysis (via configurable LLM backend)

Board & Tasks

ToolDescription
mission_board_listList board tasks
mission_board_createCreate a board task
mission_board_updateUpdate a board task
mission_board_getGet task details
mission_board_deleteDelete a board task
mission_board_toggleToggle task completion
mission_board_note_addAdd a note to a task
mission_board_summaryGet board summary

Monitoring

ToolDescription
mission_cc_sessionsList all Claude Code sessions
mission_cc_tasksGet tasks for a session
mission_cc_overviewGlobal task statistics
mission_cc_in_progressAll in-progress tasks
mission_cc_trigger_swarmTrigger swarm coordination
mission_slot_historyTask assignment history per slot

Conversations & Memory

ToolDescription
mission_conversation_listList recorded conversations
mission_conversation_getGet conversation messages
mission_conversation_searchSearch conversation content
mission_memory_pendingCheck pending memory queue
mission_memory_pausePause memory extraction (with auto-resume TTL)
mission_memory_doneMark memory processing complete
mission_token_statsToken consumption statistics

Permissions

ToolDescription
mission_permission_getGet current permission policy
mission_permission_set_roleSet slot role permissions
mission_permission_set_slotSet per-slot overrides
mission_permission_add_auto_allowAdd auto-allow rules
mission_permission_reloadReload permission config

Infrastructure

ToolDescription
mission_infra_listList configured infrastructure
mission_infra_getGet infrastructure details
mission_healthDaemon health check
mission_reachabilityProbe server health endpoints
mission_os_diagnoseSystem resource diagnostics
mission_skill_listList available skills
mission_skill_searchSearch skills by keyword
mission_context_buildBuild context from skills

Question Queue

ToolDescription
mission_question_createAgent posts a question for human
mission_question_listList pending questions
mission_question_getGet question details
mission_question_answerHuman answers a question
mission_question_dismissDismiss a question

AI Router

ToolDescription
mission_router_chatRoute chat completion through configured LLM backend

Jarvis (Logging)

ToolDescription
mission_jarvis_logsQuery log center entries
mission_jarvis_traceTrace request by ID

Semantic Terminal Parsing

The daemon includes sophisticated terminal parsing for Claude Code's TUI:

  • State Machine — Tracks Idle, Thinking, Responding, ToolRunning, Confirming, Error, SlashMenu states with debounce
  • Confirm Dialog Parsing — Extracts tool name, parameters, file paths from permission prompts
  • Status Bar Parsing — Reads spinner state and status text from bottom lines
  • Tool Output Extraction — Parses both boxed (───) and inline tool outputs
  • Title Parsing — Monitors terminal title changes for session info
pub enum SessionEvent {
    StateChange { new_state, prev_state },
    ConfirmRequired { prompt, info },
    StatusUpdate(ClaudeCodeStatus),
    ToolOutput(ClaudeCodeToolOutput),
    TitleChange(ClaudeCodeTitle),
    TextComplete(String),
}

WebSocket API

PTY Attach

ws://localhost:9120/pty/<slot-id>

Connect to watch or interact with a PTY session in real-time. Receives terminal cell data for rendering.

Tasks Events

ws://localhost:9120/tasks

Subscribe to task lifecycle events:

  • cc_tasks_changed — Tasks updated
  • cc_task_started / cc_task_completed
  • cc_session_active / cc_session_inactive

Node.js Client

import { MissionControl } from '@missiond/core';

const mission = new MissionControl();
await mission.connect();  // Auto-starts daemon

// Spawn PTY session
const pty = await mission.pty.spawn('slot-1', 'claude');
pty.on('state', (state) => console.log('State:', state));
pty.on('confirm', (info) => console.log('Confirm:', info));

// Send message and wait for response
const response = await pty.send('Explain this codebase');
console.log(response);

await pty.kill();
mission.close();

Configuration

Environment Variables

VariableDefaultDescription
MISSIOND_HOME~/.missiondConfig directory
MISSION_DB_PATH$MISSIOND_HOME/mission.dbSQLite database
MISSION_SLOTS_CONFIG$MISSIOND_HOME/slots.yamlSlot definitions
MISSION_IPC_ENDPOINTUnix socket / TCP (Windows)IPC endpoint
MISSION_WS_PORT9120WebSocket port
MISSION_LOG_LEVELwarnLog level

Cross-Platform IPC

  • Unix (macOS/Linux): Unix domain sockets (~/.missiond/missiond.sock)
  • Windows: TCP loopback (127.0.0.1:port)

Permissions

Configure tool permissions in ~/.missiond/permissions.yaml:

roles:
  coder:
    allow:
      - "Bash(*)"
      - "Read(*)"
      - "Write(*)"
    confirm:
      - "Edit(*)"
    deny:
      - "Bash(rm -rf*)"

  researcher:
    allow:
      - "Read(*)"
      - "WebSearch(*)"
    deny:
      - "Bash(*)"
      - "Write(*)"

AI Router (Optional)

To use mission_kb_analyze and mission_router_chat, configure an LLM backend in ~/.missiond/credentials.json:

{
  "auth_url": "https://your-llm-api-endpoint.com",
  "api_key": "your-api-key"
}

Secret Resolution (Optional)

Slot environment variables support ${secret:path} syntax that resolves secrets at spawn time via a configurable command.

Crates

CrateDescription
missiond-coreCore library: PTY management, semantic terminal parsing, task queue, knowledge base, IPC
missiond-mcpMCP server binary (mission-mcp) — tool definitions and JSON-RPC protocol
missiond-daemonDaemon binary (missiond) — main process with all subsystems
missiond-runnerClaude CLI wrapper for slot process management
missiond-attachPTY attach CLI (missiond-attach) — connect to running sessions
semantic-terminal-napiNode.js N-API bindings for semantic terminal parsing

Packages (npm)

PackageDescription
@missiond/coreNode.js client library with auto-daemon management
@missiond/boardNext.js dashboard for monitoring and management
@missiond/semantic-terminalNode.js semantic terminal parser

Development

# Build all crates
cargo build

# Run daemon
cargo run --bin missiond

# Run MCP server
cargo run --bin mission-mcp

# Build Node.js packages
cd packages/node-client && pnpm build
cd packages/board && pnpm build

License

MIT License — see LICENSE for details.

Máy chủ liên quan

NotebookLM Web Importer

Nhập trang web và video YouTube vào NotebookLM chỉ với một cú nhấp. Được tin dùng bởi hơn 200.000 người dùng.

Cài đặt tiện ích Chrome