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.

¿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
| Herramienta | Descripción |
|---|
mission_submit | Enviar tarea asíncrona al agente (con direccionamiento opcional de slotId) |
mission_task | Consulta por lotes del estado de envío de tareas |
mission_ask | Consulta experta síncrona |
mission_status | Consultar estado de tarea/agente |
mission_cancel | Cancelar tarea en ejecución |
mission_spawn | Crear un nuevo slot de agente |
mission_kill | Terminar un slot de agente |
mission_restart | Reiniciar un slot de agente |
mission_agents | Listar todos los agentes y sus estados |
mission_slots | Obtener configuración del slot |
mission_inbox | Revisar la bandeja de entrada de mensajes |
Control PTY
| Herramienta | Descripción |
|---|
mission_pty_spawn | Iniciar sesión PTY |
mission_pty_send | Enviar mensaje y esperar respuesta |
mission_pty_screen | Obtener la pantalla actual del terminal |
mission_pty_screenshot | Renderizar el terminal como imagen PNG |
mission_pty_confirm | Gestionar diálogos de confirmación de herramientas |
mission_pty_interrupt | Enviar Ctrl+C |
mission_pty_kill | Cerrar sesión PTY |
mission_pty_status | Obtener estado y metadatos de la sesión |
mission_pty_history | Obtener historial de mensajes de la sesión |
mission_pty_logs | Obtener el contenido del archivo de registro PTY |
Base de conocimiento
| Herramienta | Descripción |
|---|
mission_kb_remember | Almacenar una entrada de conocimiento |
mission_kb_forget | Eliminar una entrada de conocimiento |
mission_kb_search | Búsqueda de texto completo en la KB |
mission_kb_get | Obtener entrada por ID |
mission_kb_list | Listar entradas con filtrado |
mission_kb_import | Importación masiva de entradas |
mission_kb_discover | Descubrir conocimiento desde la infraestructura |
mission_kb_gc | Recolectar entradas obsoletas |
mission_kb_analyze | Análisis de KB impulsado por IA (mediante backend LLM configurable) |
Board y tareas
| Herramienta | Descripción |
|---|
mission_board_list | Listar tareas del board |
mission_board_create | Crear una tarea del board |
mission_board_update | Actualizar una tarea del board |
mission_board_get | Obtener detalles de la tarea |
mission_board_delete | Eliminar una tarea del board |
mission_board_toggle | Alternar la finalización de la tarea |
mission_board_note_add | Agregar una nota a una tarea |
mission_board_summary | Obtener resumen del board |
Monitoreo
| Herramienta | Descripción |
|---|
mission_cc_sessions | Listar todas las sesiones de Claude Code |
mission_cc_tasks | Obtener tareas de una sesión |
mission_cc_overview | Estadísticas globales de tareas |
mission_cc_in_progress | Todas las tareas en curso |
mission_cc_trigger_swarm | Activar coordinación de swarm |
mission_slot_history | Historial de asignación de tareas por slot |
Conversaciones y memoria
| Herramienta | Descripción |
|---|
mission_conversation_list | Listar conversaciones registradas |
mission_conversation_get | Obtener mensajes de conversación |
mission_conversation_search | Buscar contenido de conversaciones |
mission_memory_pending | Verificar cola de memoria pendiente |
mission_memory_pause | Pausar extracción de memoria (con TTL de reanudación automática) |
mission_memory_done | Marcar procesamiento de memoria como completo |
mission_token_stats | Estadísticas de consumo de tokens |
Permisos
| Herramienta | Descripción |
|---|
mission_permission_get | Obtener política de permisos actual |
mission_permission_set_role | Establecer permisos de rol del slot |
mission_permission_set_slot | Establecer anulaciones por slot |
mission_permission_add_auto_allow | Agregar reglas de auto-permiso |
mission_permission_reload | Recargar configuración de permisos |
Infraestructura
| Herramienta | Descripción |
|---|
mission_infra_list | Listar infraestructura configurada |
mission_infra_get | Obtener detalles de infraestructura |
mission_health | Verificación de salud del daemon |
mission_reachability | Sondear endpoints de salud del servidor |
mission_os_diagnose | Diagnósticos de recursos del sistema |
mission_skill_list | Listar habilidades disponibles |
mission_skill_search | Buscar habilidades por palabra clave |
mission_context_build | Construir contexto a partir de habilidades |
Cola de preguntas
| Herramienta | Descripción |
|---|
mission_question_create | El agente publica una pregunta para el humano |
mission_question_list | Listar preguntas pendientes |
mission_question_get | Obtener detalles de la pregunta |
mission_question_answer | El humano responde una pregunta |
mission_question_dismiss | Descartar una pregunta |
Enrutador de IA
| Herramienta | Descripción |
|---|
mission_router_chat | Enrutar finalización de chat a través del backend LLM configurado |
Jarvis (Registro)
| Herramienta | Descripción |
|---|
mission_jarvis_logs | Consultar entradas del centro de registros |
mission_jarvis_trace | Rastrear 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
| Variable | Predeterminado | Descripción |
|---|
MISSIOND_HOME | ~/.missiond | Directorio de configuración |
MISSION_PG_URL | requerido | URL de la base de datos PostgreSQL de ejecución |
MISSION_SLOTS_CONFIG | $MISSIOND_HOME/slots.yaml | Definiciones de slots |
MISSION_IPC_ENDPOINT | Socket Unix / TCP (Windows) | Endpoint IPC |
MISSION_WS_PORT | 9120 | Puerto WebSocket |
MISSION_LOG_LEVEL | warn | Nivel 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
| Crate | Descripción |
|---|
missiond-core | Biblioteca principal: gestión de PTY, análisis semántico de terminal, cola de tareas, base de conocimiento, IPC |
missiond-mcp | Binario del servidor MCP (mission-mcp) — definiciones de herramientas y protocolo JSON-RPC |
missiond-daemon | Binario del daemon (missiond) — proceso principal con todos los subsistemas |
missiond-runner | Envoltorio CLI de Claude para la gestión de procesos de slots |
missiond-attach | CLI de adjunto PTY (missiond-attach) — conéctate a sesiones en ejecución |
semantic-terminal-napi | Enlaces N-API de Node.js para análisis semántico de terminal |
Paquetes (npm)
| Paquete | Descripción |
|---|
@missiond/core | Biblioteca cliente de Node.js con gestión automática del daemon |
@missiond/board | Panel de control Next.js para monitoreo y gestión |
@missiond/semantic-terminal | Analizador 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.