missiond

Orquestación multiagente para Claude Code: genera y controla múltiples instancias de Claude a través de MCP.

Documentación

missiond

Orquestación local gobernada por Lisp para Claude Code, Codex, Gemini y workers de MissionD — normaliza solicitudes, revisa intenciones y planes, despacha BoardTasks a slots PTY gestionados y cierra el trabajo a partir de evidencia duradera.

Crates.io License: MIT

¿Qué es missiond?

MissionD es un daemon y una superficie de herramientas que convierte solicitudes en artefactos Lisp revisados, planes aprobados, BoardTasks y ejecución de workers. La autoridad del plano de control V3 es .missiond/v3/missiond-blueprint.lisp; el JSON generado bajo .missiond/v3/runtime/compiled/ es la proyección de máquina. Las rutas de ejecución en producción consumen únicamente JSON compilado; el fallback a código fuente Lisp V3 sin procesar no es una vía de escape en tiempo de ejecución. Postgres es el almacén de ejecución, el registro de eventos y el catálogo de artefactos de ejecución; las pantallas de Board y PTY son proyecciones sobre ese estado.

Características

Núcleo

  • Sesiones PTY — Ejecuta Claude Code en pseudo-terminales con emulación de terminal completa (mediante el terminal Alacritty)
  • Análisis semántico — Detección de estado en tiempo real (Idle/Thinking/Responding/Confirming/Error), extracción de salida de herramientas, análisis de la barra de estado y análisis de diálogos de confirmación
  • Integración MCP — Grupos de herramientas generados expuestos a través del Model Context Protocol y el puente IPC del daemon
  • Compuertas de solicitud/plan — mission_request escribe artefactos Lisp locales a la solicitud y exige aprobación explícita de intención/plan antes de la ejecución en modo humano
  • Despacho de BoardTask — Los planes aprobados se enrutan a través de mission_task_delegate, reclamaciones de Board, Autopilot y slots PTY gestionados
  • Contratos compilados V3 — missiond-lispc emite configuración de ejecución con verificación de hash de fuente, IR semántico, ABI de contrato, universo de proyectos, contratos de flujo de trabajo y proyecciones de genoma
  • Sistema de permisos — Permisos de herramientas basados en roles (allow/confirm/deny) con coincidencia de patrones glob
  • Multiplataforma — macOS, Linux, Windows; sockets de dominio Unix o IPC de bucle local TCP

Ciclo de vida del agente

  • Reinicio automático — Reinicia automáticamente los slots PTY cuando la ventana de contexto cae por debajo del 10%
  • Detección de bloqueos — Supervisa la actividad JSONL para detectar y recuperar agentes bloqueados
  • Flujo de trabajo autónomo — Los agentes pueden trabajar de forma autónoma con salvaguardas de seguridad e informando al orquestador

Conocimiento y memoria

  • Base de conocimiento (KB) — Memoria revisada respaldada por Postgres y proyecciones FTS/modelo de lectura
  • Catálogo de artefactos de ejecución — Los archivos fríos .missiond/v3/runtime/** permanecen como cachés de diagnóstico y se indexan en runtime_artifacts para vistas de evidencia y gobernanza de retención
  • Registro de conversaciones — Incorpora registros locales del proveedor a los modelos de lectura y al flujo de eventos de Postgres de MissionD
  • Extracción de memoria — Pipelines de análisis en tiempo real y profundo que extraen información de las conversaciones de los agentes
  • Inyección de KB — Inyecta automáticamente conocimiento relevante en el contexto del agente mediante instrucciones del servidor MCP y hooks de UserPromptSubmit

Monitoreo y panel de control

  • API WebSocket — Adjunto PTY en tiempo real, eventos de tareas y monitoreo de sesiones
  • Interfaz de Board — Panel de control Next.js con visor de conversaciones, estado de slots y gestión de tareas
  • Observador de tareas CC — Monitoreo de tareas entre sesiones mediante la observación de los archivos de sesión JSONL de Claude Code
  • Capturas de pantalla PTY — Renderiza el estado del terminal como imágenes PNG para depuración visual

Herramientas de infraestructura

  • Mission Board — Tablero de tareas/kanban con notas, tareas ocultas y estado de omisión
  • Cola de preguntas — Los agentes pueden publicar preguntas para revisión humana en lugar de bloquearse
  • Historial de slots — Realiza un seguimiento del historial de asignación de tareas por slot
  • Enrutador de IA — Enruta solicitudes de LLM a través de backends de modelos configurables (para análisis de KB)
  • Verificación de alcance — Sondea los endpoints de salud de los servidores configurados
  • Diagnósticos del sistema operativo — Monitoreo de recursos del sistema (CPU, memoria, disco)

Arquitectura

┌─────────────────┐     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)  │
        └───────────┘            └───────────┘            └───────────┘

Instalación

Desde Cargo (Rust)

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

Desde npm (Node.js)

npm install @missiond/core

Binarios precompilados para:

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

Inicio rápido

1. Configurar MCP

Agregar a ~/.claude/settings.json:

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

2. Configurar Slots

La política de slots en tiempo de ejecución se proyecta desde la configuración de la estación de trabajo .missiond/v3/missiond-blueprint.lisp. El ~/.missiond/slots.yaml heredado puede seguir existiendo por compatibilidad, pero los nuevos workers despachables deben representarse en 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. Usar desde 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]

Herramientas MCP

Operaciones de tareas

HerramientaDescripción
mission_submitEnviar tarea asíncrona al agente (con direccionamiento opcional de slotId)
mission_taskConsulta por lotes del estado de envío de tareas
mission_askConsulta experta síncrona
mission_statusConsultar estado de tarea/agente
mission_cancelCancelar tarea en ejecución
mission_spawnCrear un nuevo slot de agente
mission_killTerminar un slot de agente
mission_restartReiniciar un slot de agente
mission_agentsListar todos los agentes y sus estados
mission_slotsObtener configuración del slot
mission_inboxRevisar la bandeja de entrada de mensajes

Control PTY

HerramientaDescripción
mission_pty_spawnIniciar sesión PTY
mission_pty_sendEnviar mensaje y esperar respuesta
mission_pty_screenObtener la pantalla actual del terminal
mission_pty_screenshotRenderizar el terminal como imagen PNG
mission_pty_confirmGestionar diálogos de confirmación de herramientas
mission_pty_interruptEnviar Ctrl+C
mission_pty_killCerrar sesión PTY
mission_pty_statusObtener estado y metadatos de la sesión
mission_pty_historyObtener historial de mensajes de la sesión
mission_pty_logsObtener el contenido del archivo de registro PTY

Base de conocimiento

HerramientaDescripción
mission_kb_rememberAlmacenar una entrada de conocimiento
mission_kb_forgetEliminar una entrada de conocimiento
mission_kb_searchBúsqueda de texto completo en la KB
mission_kb_getObtener entrada por ID
mission_kb_listListar entradas con filtrado
mission_kb_importImportación masiva de entradas
mission_kb_discoverDescubrir conocimiento desde la infraestructura
mission_kb_gcRecolectar entradas obsoletas
mission_kb_analyzeAnálisis de KB impulsado por IA (mediante backend LLM configurable)

Board y tareas

HerramientaDescripción
mission_board_listListar tareas del board
mission_board_createCrear una tarea del board
mission_board_updateActualizar una tarea del board
mission_board_getObtener detalles de la tarea
mission_board_deleteEliminar una tarea del board
mission_board_toggleAlternar la finalización de la tarea
mission_board_note_addAgregar una nota a una tarea
mission_board_summaryObtener resumen del board

Monitoreo

HerramientaDescripción
mission_cc_sessionsListar todas las sesiones de Claude Code
mission_cc_tasksObtener tareas de una sesión
mission_cc_overviewEstadísticas globales de tareas
mission_cc_in_progressTodas las tareas en curso
mission_cc_trigger_swarmActivar coordinación de swarm
mission_slot_historyHistorial de asignación de tareas por slot

Conversaciones y memoria

HerramientaDescripción
mission_conversation_listListar conversaciones registradas
mission_conversation_getObtener mensajes de conversación
mission_conversation_searchBuscar contenido de conversaciones
mission_memory_pendingVerificar cola de memoria pendiente
mission_memory_pausePausar extracción de memoria (con TTL de reanudación automática)
mission_memory_doneMarcar procesamiento de memoria como completo
mission_token_statsEstadísticas de consumo de tokens

Permisos

HerramientaDescripción
mission_permission_getObtener política de permisos actual
mission_permission_set_roleEstablecer permisos de rol del slot
mission_permission_set_slotEstablecer anulaciones por slot
mission_permission_add_auto_allowAgregar reglas de auto-permiso
mission_permission_reloadRecargar configuración de permisos

Infraestructura

HerramientaDescripción
mission_infra_listListar infraestructura configurada
mission_infra_getObtener detalles de infraestructura
mission_healthVerificación de salud del daemon
mission_reachabilitySondear endpoints de salud del servidor
mission_os_diagnoseDiagnósticos de recursos del sistema
mission_skill_listListar habilidades disponibles
mission_skill_searchBuscar habilidades por palabra clave
mission_context_buildConstruir contexto a partir de habilidades

Cola de preguntas

HerramientaDescripción
mission_question_createEl agente publica una pregunta para el humano
mission_question_listListar preguntas pendientes
mission_question_getObtener detalles de la pregunta
mission_question_answerEl humano responde una pregunta
mission_question_dismissDescartar una pregunta

Enrutador de IA

HerramientaDescripción
mission_router_chatEnrutar finalización de chat a través del backend LLM configurado

Jarvis (Registro)

HerramientaDescripción
mission_jarvis_logsConsultar entradas del centro de registros
mission_jarvis_traceRastrear solicitud por ID

Análisis semántico de terminal

El daemon incluye análisis de terminal sofisticado para la TUI de Claude Code:

  • Máquina de estados — Realiza un seguimiento de los estados Idle, Thinking, Responding, ToolRunning, Confirming, Error y SlashMenu con debounce
  • Análisis de diálogos de confirmación — Extrae nombre de herramienta, parámetros y rutas de archivo de los avisos de permisos
  • Análisis de la barra de estado — Lee el estado del spinner y el texto de estado de las líneas inferiores
  • Extracción de salida de herramientas — Analiza tanto salidas de herramientas en recuadro (───) como en línea
  • Análisis de títulos — Supervisa los cambios de título del terminal para obtener información de la sesión
pub enum SessionEvent {
    StateChange { new_state, prev_state },
    ConfirmRequired { prompt, info },
    StatusUpdate(ClaudeCodeStatus),
    ToolOutput(ClaudeCodeToolOutput),
    TitleChange(ClaudeCodeTitle),
    TextComplete(String),
}

API WebSocket

Adjunto PTY

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

Conéctate para observar o interactuar con una sesión PTY en tiempo real. Recibe datos de celdas del terminal para renderizado.

Eventos de tareas

ws://localhost:9120/tasks

Suscríbete a los eventos del ciclo de vida de las tareas:

  • cc_tasks_changed — Tareas actualizadas
  • 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();

Configuración

Variables de entorno

VariablePredeterminadoDescripción
MISSIOND_HOME~/.missiondDirectorio de configuración
MISSION_PG_URLrequeridoURL de la base de datos PostgreSQL de ejecución
MISSION_SLOTS_CONFIG$MISSIOND_HOME/slots.yamlDefiniciones de slots
MISSION_IPC_ENDPOINTSocket Unix / TCP (Windows)Endpoint IPC
MISSION_WS_PORT9120Puerto WebSocket
MISSION_LOG_LEVELwarnNivel de registro

IPC multiplataforma

  • Unix (macOS/Linux): Sockets de dominio Unix (~/.missiond/missiond.sock)
  • Windows: Bucle local TCP (127.0.0.1:port)

Permisos

Configura los permisos de herramientas en ~/.missiond/permissions.yaml:

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

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

Enrutador de IA (opcional)

Para usar mission_kb_analyze y mission_router_chat, configura un backend LLM en ~/.missiond/credentials.json:

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

Resolución de secretos (opcional)

Las variables de entorno de los slots admiten la sintaxis ${secret:path} que resuelve secretos en el momento de la creación mediante un comando configurable.

Crates

CrateDescripción
missiond-coreBiblioteca principal: gestión de PTY, análisis semántico de terminal, cola de tareas, base de conocimiento, IPC
missiond-mcpBinario del servidor MCP (mission-mcp) — definiciones de herramientas y protocolo JSON-RPC
missiond-daemonBinario del daemon (missiond) — proceso principal con todos los subsistemas
missiond-runnerEnvoltorio CLI de Claude para la gestión de procesos de slots
missiond-attachCLI de adjunto PTY (missiond-attach) — conéctate a sesiones en ejecución
semantic-terminal-napiEnlaces N-API de Node.js para análisis semántico de terminal

Paquetes (npm)

PaqueteDescripción
@missiond/coreBiblioteca cliente de Node.js con gestión automática del daemon
@missiond/boardPanel de control Next.js para monitoreo y gestión
@missiond/semantic-terminalAnalizador semántico de terminal de Node.js

Desarrollo

# 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

Licencia

Licencia MIT — consulta LICENSE para más detalles.