missiond

Orquestração multiagente para Claude Code - instancie e controle múltiplas instâncias do Claude via MCP

Documentação

missiond

Orquestração local governada por Lisp para Claude Code, Codex, Gemini e workers MissionD — normalize solicitações, revise intenções e planos, despache BoardTasks para slots PTY gerenciados e encerre o trabalho com base em evidências duráveis.

Crates.io License: MIT

O que é missiond?

MissionD é um daemon e superfície de ferramentas que transforma solicitações em artefatos Lisp revisados, planos aprovados, BoardTasks e execução de workers. A autoridade do plano de controle V3 é .missiond/v3/missiond-blueprint.lisp; o JSON gerado em .missiond/v3/runtime/compiled/ é a projeção de máquina. Os caminhos de runtime de produção consomem apenas JSON compilado; o fallback de código-fonte Lisp V3 bruto não é uma saída de escape de runtime. O Postgres é o armazenamento de runtime, o log de eventos e o catálogo de artefatos de runtime; as telas de Board e PTY são projeções sobre esse estado.

Recursos

Núcleo

  • Sessões PTY — Inicie o Claude Code em pseudo-terminais com emulação completa de terminal (via terminal Alacritty)
  • Análise Semântica — Detecção de estado em tempo real (Idle/Thinking/Responding/Confirming/Error), extração de saída de ferramentas, análise de barra de status, análise de diálogos de confirmação
  • Integração MCP — grupos de ferramentas gerados expostos através do Model Context Protocol e da ponte IPC do daemon
  • Gates de Solicitação/Plano — mission_request escreve artefatos Lisp locais à solicitação e exige aprovação explícita de intenção/plano antes da execução no modo humano
  • Despacho de BoardTask — planos aprovados roteiam através de mission_task_delegate, reivindicações de Board, Autopilot e slots PTY gerenciados
  • Contratos Compilados V3 — missiond-lispc emite configuração de runtime com verificação de hash de origem, IR semântico, ABI de contrato, universo de projetos, contratos de workflow e projeções de genoma
  • Sistema de Permissões — Permissões de ferramentas baseadas em papéis (allow/confirm/deny) com correspondência de padrões glob
  • Multiplataforma — macOS, Linux, Windows; sockets de domínio Unix ou IPC de loopback TCP

Ciclo de Vida do Agente

  • Reinício Automático — Reinicia automaticamente slots PTY quando a janela de contexto cai abaixo de 10%
  • Detecção de Travamento — Monitora a atividade JSONL para detectar e recuperar agentes travados
  • Workflow Autônomo — Agentes podem trabalhar autonomamente com salvaguardas de segurança e relatórios de volta ao orquestrador

Conhecimento e Memória

  • Base de Conhecimento (KB) — Memória revisada com suporte do Postgres e projeções FTS/read-model
  • Catálogo de Artefatos de Runtime — arquivos frios .missiond/v3/runtime/** permanecem como caches de diagnóstico e são indexados em runtime_artifacts para visualizações de evidências e governança de retenção
  • Registro de Conversas — Ingere logs locais do provedor nos read models e no fluxo de eventos do Postgres do MissionD
  • Extração de Memória — Pipelines de análise em tempo real e profunda que extraem insights de conversas de agentes
  • Injeção de KB — Injeta automaticamente conhecimento relevante no contexto do agente via instruções do servidor MCP e hooks de UserPromptSubmit

Monitoramento e Dashboard

  • API WebSocket — Anexação PTY em tempo real, eventos de tarefas e monitoramento de sessões
  • UI do Board — Dashboard Next.js com visualizador de conversas, status de slots e gerenciamento de tarefas
  • Observador de Tarefas CC — Monitoramento de tarefas entre sessões observando os arquivos de sessão JSONL do Claude Code
  • Capturas de Tela PTY — Renderiza o estado do terminal como imagens PNG para depuração visual

Ferramentas de Infraestrutura

  • Mission Board — Quadro de tarefas/kanban com notas, tarefas ocultas e status de pular
  • Fila de Perguntas — Agentes podem postar perguntas para revisão humana em vez de bloquear
  • Histórico de Slots — Rastreia o histórico de atribuição de tarefas por slot
  • Roteador de IA — Roteia solicitações de LLM através de backends de modelo configuráveis (para análise de KB)
  • Verificação de Acessibilidade — Sonda endpoints de saúde de servidores configurados
  • Diagnósticos de SO — Monitoramento de recursos do sistema (CPU, memória, disco)

Arquitetura

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

Instalação

Do Cargo (Rust)

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

Do npm (Node.js)

npm install @missiond/core

Binários pré-compilados para:

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

Início Rápido

1. Configure o MCP

Adicione ao ~/.claude/settings.json:

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

2. Configure os Slots

A política de slots de runtime é projetada a partir da configuração da estação de trabalho .missiond/v3/missiond-blueprint.lisp. O ~/.missiond/slots.yaml legado ainda pode existir para compatibilidade, mas novos workers despacháveis devem ser representados em V3.

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 do 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]

Ferramentas MCP

Operações de Tarefas

FerramentaDescrição
mission_submitEnvia tarefa assíncrona ao agente (com direcionamento opcional de slotId)
mission_taskConsulta em lote o status de envio de tarefas
mission_askConsulta especializada síncrona
mission_statusConsulta o status de tarefa/agente
mission_cancelCancela tarefa em execução
mission_spawnCria um novo slot de agente
mission_killEncerra um slot de agente
mission_restartReinicia um slot de agente
mission_agentsLista todos os agentes e seus estados
mission_slotsObtém a configuração do slot
mission_inboxVerifica a caixa de entrada por mensagens

Controle PTY

FerramentaDescrição
mission_pty_spawnInicia sessão PTY
mission_pty_sendEnvia mensagem, aguarda resposta
mission_pty_screenObtém a tela atual do terminal
mission_pty_screenshotRenderiza o terminal como imagem PNG
mission_pty_confirmLida com diálogos de confirmação de ferramentas
mission_pty_interruptEnvia Ctrl+C
mission_pty_killFecha sessão PTY
mission_pty_statusObtém estado e metadados da sessão
mission_pty_historyObtém histórico de mensagens da sessão
mission_pty_logsObtém o conteúdo do arquivo de log PTY

Base de Conhecimento

FerramentaDescrição
mission_kb_rememberArmazena uma entrada de conhecimento
mission_kb_forgetExclui uma entrada de conhecimento
mission_kb_searchPesquisa de texto completo na KB
mission_kb_getObtém entrada por ID
mission_kb_listLista entradas com filtragem
mission_kb_importImportação em massa de entradas
mission_kb_discoverDescobre conhecimento da infraestrutura
mission_kb_gcColeta de lixo de entradas obsoletas
mission_kb_analyzeAnálise de KB com IA (via backend LLM configurável)

Board e Tarefas

FerramentaDescrição
mission_board_listLista tarefas do board
mission_board_createCria uma tarefa no board
mission_board_updateAtualiza uma tarefa no board
mission_board_getObtém detalhes da tarefa
mission_board_deleteExclui uma tarefa do board
mission_board_toggleAlterna a conclusão da tarefa
mission_board_note_addAdiciona uma nota a uma tarefa
mission_board_summaryObtém resumo do board

Monitoramento

FerramentaDescrição
mission_cc_sessionsLista todas as sessões do Claude Code
mission_cc_tasksObtém tarefas para uma sessão
mission_cc_overviewEstatísticas globais de tarefas
mission_cc_in_progressTodas as tarefas em andamento
mission_cc_trigger_swarmAciona coordenação de swarm
mission_slot_historyHistórico de atribuição de tarefas por slot

Conversas e Memória

FerramentaDescrição
mission_conversation_listLista conversas gravadas
mission_conversation_getObtém mensagens de conversa
mission_conversation_searchPesquisa conteúdo de conversas
mission_memory_pendingVerifica fila de memória pendente
mission_memory_pausePausa extração de memória (com TTL de retomada automática)
mission_memory_doneMarca processamento de memória como concluído
mission_token_statsEstatísticas de consumo de tokens

Permissões

FerramentaDescrição
mission_permission_getObtém política de permissão atual
mission_permission_set_roleDefine permissões de papel do slot
mission_permission_set_slotDefine substituições por slot
mission_permission_add_auto_allowAdiciona regras de permissão automática
mission_permission_reloadRecarrega configuração de permissões

Infraestrutura

FerramentaDescrição
mission_infra_listLista infraestrutura configurada
mission_infra_getObtém detalhes da infraestrutura
mission_healthVerificação de saúde do daemon
mission_reachabilitySonda endpoints de saúde do servidor
mission_os_diagnoseDiagnósticos de recursos do sistema
mission_skill_listLista habilidades disponíveis
mission_skill_searchPesquisa habilidades por palavra-chave
mission_context_buildConstrói contexto a partir de habilidades

Fila de Perguntas

FerramentaDescrição
mission_question_createAgente posta uma pergunta para humano
mission_question_listLista perguntas pendentes
mission_question_getObtém detalhes da pergunta
mission_question_answerHumano responde uma pergunta
mission_question_dismissDispensa uma pergunta

Roteador de IA

FerramentaDescrição
mission_router_chatRoteia conclusão de chat através do backend LLM configurado

Jarvis (Registro)

FerramentaDescrição
mission_jarvis_logsConsulta entradas do centro de logs
mission_jarvis_traceRastreia solicitação por ID

Análise Semântica de Terminal

O daemon inclui análise sofisticada de terminal para a TUI do Claude Code:

  • Máquina de Estados — Rastreia estados Idle, Thinking, Responding, ToolRunning, Confirming, Error, SlashMenu com debounce
  • Análise de Diálogo de Confirmação — Extrai nome da ferramenta, parâmetros, caminhos de arquivo de prompts de permissão
  • Análise de Barra de Status — Lê estado do spinner e texto de status das linhas inferiores
  • Extração de Saída de Ferramentas — Analisa saídas de ferramentas em caixa (───) e inline
  • Análise de Título — Monitora mudanças de título do terminal para informações de sessão
pub enum SessionEvent {
    StateChange { new_state, prev_state },
    ConfirmRequired { prompt, info },
    StatusUpdate(ClaudeCodeStatus),
    ToolOutput(ClaudeCodeToolOutput),
    TitleChange(ClaudeCodeTitle),
    TextComplete(String),
}

API WebSocket

Anexação PTY

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

Conecte-se para observar ou interagir com uma sessão PTY em tempo real. Recebe dados de células do terminal para renderização.

Eventos de Tarefas

ws://localhost:9120/tasks

Assine eventos do ciclo de vida de tarefas:

  • cc_tasks_changed — Tarefas atualizadas
  • cc_task_started / cc_task_completed
  • cc_session_active / cc_session_inactive

Cliente Node.js

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();

Configuração

Variáveis de Ambiente

VariávelPadrãoDescrição
MISSIOND_HOME~/.missiondDiretório de configuração
MISSION_PG_URLobrigatórioURL do banco de dados PostgreSQL de runtime
MISSION_SLOTS_CONFIG$MISSIOND_HOME/slots.yamlDefinições de slots
MISSION_IPC_ENDPOINTSocket Unix / TCP (Windows)Endpoint IPC
MISSION_WS_PORT9120Porta WebSocket
MISSION_LOG_LEVELwarnNível de log

IPC Multiplataforma

  • Unix (macOS/Linux): Sockets de domínio Unix (~/.missiond/missiond.sock)
  • Windows: Loopback TCP (127.0.0.1:port)

Permissões

Configure permissões de ferramentas em ~/.missiond/permissions.yaml:

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

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

Roteador de IA (Opcional)

Para usar mission_kb_analyze e mission_router_chat, configure um backend LLM em ~/.missiond/credentials.json:

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

Resolução de Segredos (Opcional)

As variáveis de ambiente de slots suportam sintaxe ${secret:path} que resolve segredos no momento da criação via um comando configurável.

Crates

CrateDescrição
missiond-coreBiblioteca principal: gerenciamento de PTY, análise semântica de terminal, fila de tarefas, base de conhecimento, IPC
missiond-mcpBinário do servidor MCP (mission-mcp) — definições de ferramentas e protocolo JSON-RPC
missiond-daemonBinário do daemon (missiond) — processo principal com todos os subsistemas
missiond-runnerWrapper CLI do Claude para gerenciamento de processos de slots
missiond-attachCLI de anexação PTY (missiond-attach) — conecta-se a sessões em execução
semantic-terminal-napiBindings N-API do Node.js para análise semântica de terminal

Pacotes (npm)

PacoteDescrição
@missiond/coreBiblioteca cliente Node.js com gerenciamento automático de daemon
@missiond/boardDashboard Next.js para monitoramento e gerenciamento
@missiond/semantic-terminalAnalisador semântico de terminal Node.js

Desenvolvimento

# 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

Licença

Licença MIT — veja LICENSE para detalhes.