Un ecosistema de agentes autónomos explicado como un cuerpo humano vivo. Cada agente es un órgano, cada evento Nostr un neurotransmisor, cada contexto una neurona.
AARPIA se organiza en 4 capas jerárquicas, cada una con una función vital. Todo pasa por el tallo cerebral (L0).
Relay Nostr + servidor MCP + estado persistente escrito en Go. Todo pasa por aquí. 21 herramientas MCP, 3 engines, BadgerDB. Es el core que nunca se apaga.
12 agentes Node.js especializados: corazón (Nodo), sistema inmunológico (Integrity), riñones (Migration), hígado (Analytics), corteza prefrontal (AI), y más.
La interfaz con el mundo exterior. SDK React (@repo/aarpia-client), hooks (useAarpia), y el Router L2 que traduce 16 herramientas CVM en llamadas nativas al MK.
Nginx como esqueleto (reverse proxy SSL), PM2 como médula ósea (gestión del ciclo de vida). Sostiene toda la estructura en pie.
El core del sistema. Un binario Go que combina relay Nostr embebido + servidor MCP + estado persistente. Expone 21 herramientas y gestiona toda la memoria del organismo.
Corteza motora — Dispara cascadas cuando una neurona (contexto) cambia de estado. Escucha Kind 30078 y Kind 5052, produce create_instance calls y cascade spawns.
Transducción sináptica — Convierte señales de una neurona al formato de otra. Resuelve campos heredados, funciones y DMN al crear instancias en cascada.
Genoma — Almacena las definiciones Kind 7500 (el DNA de cada neurona). Valida transiciones FSM y resuelve fases de estado.
📁 Memoria a largo plazo — Cache de instancias en aarpia_data.json
🧠 Genoma en RAM — Definiciones Kind 7500 cargadas al boot
💎 Relay Nostr — Almacén de todos los neurotransmisores (events Nostr)
Puerto: 3334
Dominio: dev.architectcontext.aarpia.net
URL: wss://dev.architectcontext.aarpia.net
Protocolo: WSS (WebSocket Secure)
El relay es la sinapsis: el punto de encuentro donde las señales (events Nostr) cruzan entre neuronas (contextos).
Cada tipo de evento Nostr es un neurotransmisor diferente. Viajan por la sinapsis (relay) llevando información específica entre neuronas (contextos).
Cada agente L1 es un órgano especializado del cuerpo AARPIA. Todos dependen del tallo cerebral (MK) y se comunican via herramientas MCP y neurotransmisores Nostr.
Así viaja la información por el cuerpo. Desde la piel (SDK) hasta el tallo cerebral (MK), pasando por órganos que procesan y reaccionan.
Los Axones son las conexiones de salida de cada neurona (contexto). Cuando una neurona cambia de estado, el axón dispara una señal que crea una nueva instancia en otra neurona.
Transducción: Al cruzar la sinapsis, la señal se convierte:
La interfaz con el mundo exterior. Cómo las aplicaciones tocan al cuerpo AARPIA.
Corteza sensorial L2 — traduce 16 tools CVM en calls MK nativos. Es el traductor entre el lenguaje exterior y el cerebro.
Receptores nerviosos — SDK React para que los clientes toquen al cuerpo. @repo/aarpia-client con hooks React.
Selecciona un tipo de mensaje para ver su viaje animado por el cuerpo. Cada "Kind" es como un tipo de carta diferente que viaja por el sistema postal del organismo.
Cuando un restaurante configura su menú por primera vez, está creando un "Kind 7500". Define que un pedido puede estar "Pendiente", "En Cocina", "Servido" o "Pagado". Este plano determina cómo funcionarán TODOS los pedidos futuros.
El Arquitecto de Contextos (cliente React) inicia el diseño del proceso.
El MicroKernel Go recibe la definición, valida el FSM y la guarda en RAM.
Se publica como evento Kind 7500 (DNA) en el relay y se persiste en BadgerDB.
Cuando un cocinero marca un plato como "Listo para servir", eso es un Kind 30078. El dato viaja al instante a la pantalla de sala, al camarero, y al sistema de tiempos — todos ven el tablero actualizado sin tocar nada.
Cualquier cliente React del monorepo usa el hook useAarpia para disparar la transición.
El MK valida la transición contra el FSM (guards), actualiza el estado y publica el snapshot.
El Validator verifica guards, el Observer detecta el cambio para cascadas, y el Notifier puede enviar alertas.
Se publica Kind 30078 (MEMORY, reemplazable) + Kind 5053 (SENSORY, inmutable) en paralelo.
Cuando Hacienda pregunta "¿a qué hora se sirvió este pedido?", el Kind 5053 tiene la respuesta exacta, firmada e imposible de falsificar. Es el libro contable digital del restaurante.
El MK genera automáticamente el registro WAL en cada transición. No requiere acción humana.
Integrity valida la firma Schnorr (checks A53-A55). Analytics procesa el registro para métricas.
Evento inmutable Kind 5053 (SENSORY) con firma criptográfica Schnorr. Se acumula, nunca se borra.
Al cerrar la caja del día, todos los pedidos cobrados se sellan automáticamente. Si el mismo cliente vuelve mañana y pide "lo de siempre", se clona el pedido anterior y se arranca uno nuevo.
seal_and_clone sella la instancia y opcionalmente crea una copia nueva. seal_batch para operaciones masivas.
El Scheduler puede disparar sellados automáticos (cierre de caja). Nodo coordina la operación.
Kind 5052 (MYELIN) marca la instancia como inmutable. Si se clona, se genera un nuevo Kind 30078.
Cada vez que abres la app y ves la lista de pedidos, estás usando Kind 25910. Es la conversación privada entre tu dispositivo y el cerebro del sistema, tan segura como un mensaje cifrado de extremo a extremo.
El SDK AarpiaClient usa ContextVM para enviar peticiones MCP encriptadas (NIP-44) al MK.
Las 21 tools MCP del MK se invocan via Kind 25910. Todas las operaciones CRUD pasan por aquí.
Transporte bidireccional encriptado sobre WebSocket. Nginx proxy en wss://dev.architectcontext.aarpia.net.
Es como cambiar el tema de tu teléfono: un solo ajuste y todo se actualiza. Si el dueño decide que los pedidos urgentes ahora son rojos, basta con un cambio y todas las pantallas lo reflejan al instante.
El Arquitecto o el UI del cliente definen la configuración visual del proceso.
El MK almacena y sirve la configuración de colores, columnas e iconos por contexto.
Kind 11318 (PHENOTYPE) almacena la config visual. Es replaceable: solo la última versión importa.
El camarero solo pulsa "Servido". Automáticamente: el sistema crea la línea de factura, el jefe de sala recibe un Telegram "Mesa 5 servida", y las estadísticas del día se actualizan. Un click → tres acciones automáticas. Eso es una cascada AARPIA.
El usuario dispara una transición desde cualquier cliente React del monorepo.
El MK valida→transiciona→publica→observer detecta→transduce→crea instancias nuevas en cascada.
Observer vigila, Notifier envía Telegram, Analytics registra métricas, Bridge conecta plugins externos.
Una cascada puede generar múltiples Kinds simultáneos: snapshots, audits, impulsos CVM y hasta nuevas definiciones.
Dos agentes vigilan la salud del cuerpo: Integrity (sistema inmunológico) y Security (glóbulos blancos). 18 checks activos.
Los contratos son la ÚNICA fuente de verdad para el mapeo de campos entre las 4 capas. Si un campo no está en el contrato, no viaja.
¿Cada campo l0_expects_as del contrato existe como json tag en el Go struct del MK?
¿Los aliases del contrato existen como json tags en el Go struct?
¿Hay campos en Go que NO están en ningún contrato? (campos no documentados)
¿El flujo SDK→L2→L0 es coherente? Si L2 envía context_name, L0 debe aceptarlo.
El Go Parser lee automáticamente mcp_server.go y extrae los struct fields de cada handler case "aarpia_*". No hay lista manual — si alguien cambia un struct en Go, el parser detecta la diferencia y el validator la reporta.
La estructura ósea que sostiene todo el cuerpo en pie. Sin esqueleto, los órganos no tienen dónde funcionar.
Dominio: dev.architectcontext.aarpia.net
Health: pm2 jlist