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.

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
| Ferramenta | Descrição |
|---|
mission_submit | Envia tarefa assíncrona ao agente (com direcionamento opcional de slotId) |
mission_task | Consulta em lote o status de envio de tarefas |
mission_ask | Consulta especializada síncrona |
mission_status | Consulta o status de tarefa/agente |
mission_cancel | Cancela tarefa em execução |
mission_spawn | Cria um novo slot de agente |
mission_kill | Encerra um slot de agente |
mission_restart | Reinicia um slot de agente |
mission_agents | Lista todos os agentes e seus estados |
mission_slots | Obtém a configuração do slot |
mission_inbox | Verifica a caixa de entrada por mensagens |
Controle PTY
| Ferramenta | Descrição |
|---|
mission_pty_spawn | Inicia sessão PTY |
mission_pty_send | Envia mensagem, aguarda resposta |
mission_pty_screen | Obtém a tela atual do terminal |
mission_pty_screenshot | Renderiza o terminal como imagem PNG |
mission_pty_confirm | Lida com diálogos de confirmação de ferramentas |
mission_pty_interrupt | Envia Ctrl+C |
mission_pty_kill | Fecha sessão PTY |
mission_pty_status | Obtém estado e metadados da sessão |
mission_pty_history | Obtém histórico de mensagens da sessão |
mission_pty_logs | Obtém o conteúdo do arquivo de log PTY |
Base de Conhecimento
| Ferramenta | Descrição |
|---|
mission_kb_remember | Armazena uma entrada de conhecimento |
mission_kb_forget | Exclui uma entrada de conhecimento |
mission_kb_search | Pesquisa de texto completo na KB |
mission_kb_get | Obtém entrada por ID |
mission_kb_list | Lista entradas com filtragem |
mission_kb_import | Importação em massa de entradas |
mission_kb_discover | Descobre conhecimento da infraestrutura |
mission_kb_gc | Coleta de lixo de entradas obsoletas |
mission_kb_analyze | Análise de KB com IA (via backend LLM configurável) |
Board e Tarefas
| Ferramenta | Descrição |
|---|
mission_board_list | Lista tarefas do board |
mission_board_create | Cria uma tarefa no board |
mission_board_update | Atualiza uma tarefa no board |
mission_board_get | Obtém detalhes da tarefa |
mission_board_delete | Exclui uma tarefa do board |
mission_board_toggle | Alterna a conclusão da tarefa |
mission_board_note_add | Adiciona uma nota a uma tarefa |
mission_board_summary | Obtém resumo do board |
Monitoramento
| Ferramenta | Descrição |
|---|
mission_cc_sessions | Lista todas as sessões do Claude Code |
mission_cc_tasks | Obtém tarefas para uma sessão |
mission_cc_overview | Estatísticas globais de tarefas |
mission_cc_in_progress | Todas as tarefas em andamento |
mission_cc_trigger_swarm | Aciona coordenação de swarm |
mission_slot_history | Histórico de atribuição de tarefas por slot |
Conversas e Memória
| Ferramenta | Descrição |
|---|
mission_conversation_list | Lista conversas gravadas |
mission_conversation_get | Obtém mensagens de conversa |
mission_conversation_search | Pesquisa conteúdo de conversas |
mission_memory_pending | Verifica fila de memória pendente |
mission_memory_pause | Pausa extração de memória (com TTL de retomada automática) |
mission_memory_done | Marca processamento de memória como concluído |
mission_token_stats | Estatísticas de consumo de tokens |
Permissões
| Ferramenta | Descrição |
|---|
mission_permission_get | Obtém política de permissão atual |
mission_permission_set_role | Define permissões de papel do slot |
mission_permission_set_slot | Define substituições por slot |
mission_permission_add_auto_allow | Adiciona regras de permissão automática |
mission_permission_reload | Recarrega configuração de permissões |
Infraestrutura
| Ferramenta | Descrição |
|---|
mission_infra_list | Lista infraestrutura configurada |
mission_infra_get | Obtém detalhes da infraestrutura |
mission_health | Verificação de saúde do daemon |
mission_reachability | Sonda endpoints de saúde do servidor |
mission_os_diagnose | Diagnósticos de recursos do sistema |
mission_skill_list | Lista habilidades disponíveis |
mission_skill_search | Pesquisa habilidades por palavra-chave |
mission_context_build | Constrói contexto a partir de habilidades |
Fila de Perguntas
| Ferramenta | Descrição |
|---|
mission_question_create | Agente posta uma pergunta para humano |
mission_question_list | Lista perguntas pendentes |
mission_question_get | Obtém detalhes da pergunta |
mission_question_answer | Humano responde uma pergunta |
mission_question_dismiss | Dispensa uma pergunta |
Roteador de IA
| Ferramenta | Descrição |
|---|
mission_router_chat | Roteia conclusão de chat através do backend LLM configurado |
Jarvis (Registro)
| Ferramenta | Descrição |
|---|
mission_jarvis_logs | Consulta entradas do centro de logs |
mission_jarvis_trace | Rastreia 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ável | Padrão | Descrição |
|---|
MISSIOND_HOME | ~/.missiond | Diretório de configuração |
MISSION_PG_URL | obrigatório | URL do banco de dados PostgreSQL de runtime |
MISSION_SLOTS_CONFIG | $MISSIOND_HOME/slots.yaml | Definições de slots |
MISSION_IPC_ENDPOINT | Socket Unix / TCP (Windows) | Endpoint IPC |
MISSION_WS_PORT | 9120 | Porta WebSocket |
MISSION_LOG_LEVEL | warn | Ní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
| Crate | Descrição |
|---|
missiond-core | Biblioteca principal: gerenciamento de PTY, análise semântica de terminal, fila de tarefas, base de conhecimento, IPC |
missiond-mcp | Binário do servidor MCP (mission-mcp) — definições de ferramentas e protocolo JSON-RPC |
missiond-daemon | Binário do daemon (missiond) — processo principal com todos os subsistemas |
missiond-runner | Wrapper CLI do Claude para gerenciamento de processos de slots |
missiond-attach | CLI de anexação PTY (missiond-attach) — conecta-se a sessões em execução |
semantic-terminal-napi | Bindings N-API do Node.js para análise semântica de terminal |
Pacotes (npm)
| Pacote | Descrição |
|---|
@missiond/core | Biblioteca cliente Node.js com gerenciamento automático de daemon |
@missiond/board | Dashboard Next.js para monitoramento e gerenciamento |
@missiond/semantic-terminal | Analisador 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.