Todo lo que necesita para orquestar la IA
EDDI proporciona una plataforma completa y lista para producción para construir, desplegar y gestionar agentes de IA, sin escribir código repetitivo.

Cómo fluye un turno de conversación
Seleccione una etapa para ver qué hace, su configuración y qué escribe.
Input
Qué ocurre aquí
Llega un mensaje desde el chat, Slack, la API o un cliente MCP. El texto original pasa a ser la primera entrada de un nuevo paso en la Conversation memory. Aún no se ha ejecutado ningún task, así que esta etapa muestra el paso de memoria y no una entrada de auditoría.
Valores de ejemplo ilustrativos
{
"key": "input",
"value": "What is the weather?"
}Parser
Qué ocurre aquí
El parser normaliza el texto y lo busca en los diccionarios del agente, convirtiendo palabras y frases en expresiones semánticas como trigger(current_weather). Es una búsqueda, no una llamada a un modelo: el mismo texto produce siempre las mismas expresiones.
Cada task del pipeline escribe una entrada: firmada con HMAC, solo de adición y con comprobación de secuencia.
Valores de ejemplo ilustrativos
{
"words": [
{
"word": "weather",
"expressions": "trigger(current_weather)",
"frequency": 0
}
],
"phrases": [
{
"phrase": "what is the weather",
"expressions": "trigger(current_weather)"
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.parser",
"taskType": "expressions",
"taskIndex": 0,
"durationMs": 3,
"input": {
"input": "What is the weather?"
},
"output": {
"expressions": [
"trigger(current_weather)"
]
},
"actions": [],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 0
}Behavior Rules
Qué ocurre aquí
Las Behavior Rules son condiciones SI-ENTONCES sobre las expresiones y la Conversation memory. Cada regla que coincide emite acciones. El enrutamiento es configuración y no código, así que la misma entrada sigue siempre el mismo camino.
Cada task del pipeline escribe una entrada: firmada con HMAC, solo de adición y con comprobación de secuencia.
Valores de ejemplo ilustrativos
{
"behaviorGroups": [
{
"name": "",
"behaviorRules": [
{
"name": "Ask for City",
"actions": [
"ask_for_city"
],
"conditions": [
{
"type": "inputmatcher",
"configs": {
"expressions": "trigger(current_weather)"
},
"conditions": []
}
]
}
]
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.behavior",
"taskType": "behavior_rules",
"taskIndex": 1,
"durationMs": 1,
"input": {
"expressions": [
"trigger(current_weather)"
]
},
"output": {
"behavior_rules:success": [
"Ask for City"
]
},
"actions": [
"ask_for_city"
],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 1
}Tasks
Qué ocurre aquí
Los tasks escuchan acciones: una llamada a un LLM, una llamada HTTP, una herramienta MCP o una consulta a una base de conocimiento. Cada task escribe una entrada de auditoría firmada con lo que leyó, lo que produjo y los detalles del modelo y de las herramientas.
Cada task del pipeline escribe una entrada: firmada con HMAC, solo de adición y con comprobación de secuencia.
Valores de ejemplo ilustrativos
{
"tasks": [
{
"actions": [
"send_message"
],
"id": "simpleChat",
"type": "anthropic",
"description": "Answers weather questions",
"parameters": {
"apiKey": "${vault:anthropic-key}",
"modelName": "claude-sonnet-5-5",
"systemMessage": "You are a helpful assistant",
"addToOutput": "true"
}
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.llm",
"taskType": "langchain",
"taskIndex": 2,
"durationMs": 1840,
"input": {
"input": "What is the weather in Vienna?",
"actions": [
"send_message"
]
},
"output": {
"text": "Vienna: 14 °C, light rain."
},
"llmDetail": {
"modelName": "claude-sonnet-5-5",
"inputTokens": 412,
"outputTokens": 18
},
"toolCalls": {
"name": "get_weather",
"args": {
"city": "Vienna"
},
"result": "14 °C, light rain"
},
"actions": [
"send_message"
],
"cost": 0.0016,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 2
}Output
Qué ocurre aquí
Las plantillas de Output convierten las acciones emitidas en la respuesta: texto y quick replies. La respuesta se guarda en la memoria y se devuelve al canal del que llegó el mensaje.
Valores de ejemplo ilustrativos
{
"outputSet": [
{
"action": "ask_for_city",
"timesOccurred": 0,
"outputs": [
{
"valueAlternatives": [
{
"type": "text",
"text": "Which city would you like to know the weather of?"
}
]
}
],
"quickReplies": []
}
]
}{
"key": "output",
"value": [
"Which city would you like to know the weather of?"
]
}Tool boundary
Qué ocurre aquí
Toda llamada a una herramienta, sea cual sea su origen, cruza el mismo límite. Las llamadas que coinciden con un patrón de toolApprovals se pausan hasta que una persona decide, y la decisión se escribe en el ledger como una entrada hitl.approval. Las credenciales llegan del vault como referencias ${vault:keyName}.
Cada task del pipeline escribe una entrada: firmada con HMAC, solo de adición y con comprobación de secuencia.
Valores de ejemplo ilustrativos
{
"hitlConfig": {
"toolApprovals": {
"requireApproval": [
"mcp:*",
"delete_*",
"transfer_funds"
],
"exempt": [
"mcp:read_*"
],
"approvalTimeout": "PT30M",
"timeoutPolicy": "AUTO_REJECT",
"pauseReason": "Approval required for {toolNames}"
}
}
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": -1,
"taskId": "hitl.approval",
"taskType": "hitl",
"taskIndex": -1,
"durationMs": 0,
"input": {},
"output": {
"verdict": "APPROVED",
"decidedBy": "slack:U04EXAMPLE",
"automated": false,
"pauseType": "TOOL_CALL",
"toolDecisions": [
{
"callId": "call_01",
"toolName": "transfer_funds",
"verdict": "APPROVED",
"amended": false,
"argsDigest": "sha256:9c1d…e407"
}
]
},
"actions": [],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 3
}Conversation memory
Qué ocurre aquí
La Conversation memory conserva cada paso (input, expressions, actions, output) y propiedades con ámbito de paso, conversación o usuario (longTerm). El estado de la conversación (READY, IN_PROGRESS, ENDED, AWAITING_HUMAN o ERROR) se guarda con ella.
Valores de ejemplo ilustrativos
{
"conversationState": "READY",
"conversationSteps": [
{
"data": [
{
"key": "input",
"value": "What is the weather?"
},
{
"key": "expressions",
"value": [
"trigger(current_weather)"
]
},
{
"key": "actions",
"value": [
"ask_for_city"
]
},
{
"key": "output",
"value": [
"Which city would you like to know the weather of?"
]
}
]
}
],
"conversationProperties": {
"chosenCity": "Vienna"
}
}Plataforma central
Las capacidades esenciales que hacen de EDDI una plataforma completa de orquestación de IA.
🖥️ EDDI Manager
Una interfaz React lista para producción para construir, desplegar y supervisar agentes visualmente, con i18n en 11 idiomas, depuración de chat en vivo y paneles de auditoría.
⚙️ Config-as-Code
La lógica del agente es configuración JSON, no código compilado. Los ingenieros de prompts iteran al instante, sin necesidad de redespliegue.
🔌 Servidor MCP (89 herramientas)
Control nativo completo de IA a través del Model Context Protocol. Claude Desktop, Cursor y clientes personalizados gestionan agentes de forma programática.
🔐 Seguridad integrada
Sin eval(), integración con Vault, protección contra path traversal, OIDC/Keycloak, espacios de trabajo por usuario, pistas de auditoría criptográficas.
✋ Humano en el bucle
Pausa un turno, controla una llamada de herramienta o exige la aprobación de una fase. Flujos de aprobación con políticas de tiempo de espera, tarjetas de Slack y estado a prueba de caídas.
🚀 Rendimiento
Runtime de nivel empresarial con millones de hilos ligeros para cargas de trabajo LLM vinculadas a E/S.
🤖 Multi-agente
Descubrimiento basado en intenciones, conversaciones gestionadas y colaboración en grupo con votaciones, artefactos compartidos y personas como miembros.
Capacidades de IA
Funciones avanzadas de IA que hacen a los agentes EDDI más inteligentes, rápidos y eficientes en costes.
🧠 Memoria y Contexto
Memoria persistente, consolidación onírica, resúmenes continuos y ventaneo consciente de tokens. Agentes que recuerdan.
📚 Conocimiento y RAG
Rastree un sitio web o suba archivos PDF, Word, Excel y PowerPoint a una base de conocimiento, actualizada de forma programada. 8 proveedores de embedding, 6 almacenes vectoriales. Recuperación de conocimiento empresarial lista para usar.
📈 Cascada de Modelos
Enrutamiento multi-modelo optimizado en costes con estrategias de confianza. Los despliegues publicados de este patrón reportan entre un 31 y un 58% menos de coste de inferencia con la misma calidad (evidencia).
🧭 19 proveedores LLM
Claude, GPT, Gemini, Grok, DeepSeek, Kimi, Qwen, GLM, Mistral, Llama y más, en la nube o en local. El catálogo de modelos muestra para qué sirve cada uno y cómo ejecutarlo.
⏰ Programación y Heartbeats
Disparadores cron, activaciones por heartbeat, ciclos oníricos. Agentes proactivos que actúan por sí mismos.
Herramientas de Agente Integradas
EDDI incluye 12 herramientas listas para usar que los agentes pueden invocar durante las conversaciones, sin configuración externa.
Config y Portabilidad
Las configuraciones de agentes son portables, componibles y listas para sincronización, mueva agentes entre entornos sin fricción.
📤 Import / Export
Agentes portables como archivos ZIP con limpieza automática de secretos. La importación fusiona o sobrescribe, sin conflictos de versión.
🔄 Agent Sync
Sincronización en vivo entre instancias con coincidencia estructural, diferencias de contenido y selección selectiva de recursos.
📝 Prompt Snippets
Bloques de prompts de sistema reutilizables y versionados. Referencia como {{snippets.safety_rules}}.
Excelencia en ingeniería
📊 Observabilidad
Cada paso del pipeline se registra con pistas de auditoría inmutables: tokens, costes, tiempos y llamadas a herramientas.
🧪 Calidad de código
Más de 20.000 pruebas, en verde en cada merge. Cobertura obligatoria de >90% de instrucciones y >80% de ramas. Compuertas de CodeQL, Checkstyle y formateador en CI.
🧩 Preparado para IA
89 herramientas MCP, una API compatible con OpenAI, patrones CRUD predecibles, APIs autodocumentadas. Diseñado para que los agentes de codificación trabajen con él.