Der Enterprise
KI-Orchestrator
Die Open-Source-Plattform für die Bereitstellung gesteuerter Multi-Agent-KI-Systeme: selbst gehostet, konfigurationsgesteuert und compliance-bereit. Jetzt in v6.
curl -fsSL https://raw.githubusercontent.com/labsai/EDDI/main/install.sh | bashInvoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/labsai/EDDI/main/install.ps1" -OutFile "install.ps1"
Unblock-File .\install.ps1
.\install.ps1
Das Problem
Enterprise-KI-Orchestrierung ist fragmentiert und schmerzhaft. Teams stecken in einem gebrochenen Lebenszyklus fest:
Die Prototyp-Falle
Teams bauen Prototypen mit Flowise, n8n oder Skripten, und schreiben dann alles von Grund auf neu für die Produktion. Visuelle Prototypen werden vollständig verworfen.
Boilerplate-Müdigkeit
KI-Bibliotheken zu nutzen bedeutet: REST-Controller, Auth-Layer und State-Management von Grund auf bauen. Jede Prompt-Änderung erfordert Redeployment.
BPMN-Reibung
Nicht-deterministische KI-Agents in deterministische Camunda/Temporal-Workflows zu zwingen erzeugt schwerwiegende Impedanz-Mismatches und fragile Architekturen.
Die Lösung
EDDI ist eine deploybare KI-Orchestrierungsplattform: keine Bibliothek. Visuelle Verwaltung, Config-as-Code und Enterprise-Sicherheit, out of the box:
Configuration-as-Code
Agent-Logik, Pipelines und Tool-Definitionen sind JSON-Konfigurationen: kein kompilierter Code. Prompt-Engineers iterieren sofort über die React-UI oder REST-API, ohne Redeployment.
89 MCP-Tools
EDDI bietet seine Funktionen über das Model Context Protocol an, Claude Desktop kann direkt interagieren. Agents können auch externe MCP-Tools nutzen.
Security-First
Kein eval(), keine Escapes. Vault-Integration, URL-Validierung und kryptografische Audit-Trails sind architektonische Grundlagen.
Observability
Jeder Pipeline-Schritt wird mit einem unveränderlichen Audit-Trail protokolliert, Tokens, Kosten, Timing, Tool-Aufrufe. Vollständiges CQRS-Telemetrie-Ledger.
Enterprise-Nebenläufigkeit
Gebaut auf einer Enterprise-Runtime mit Millionen leichtgewichtiger Threads für I/O-gebundene LLM-Workloads. Kein Event-Loop-Blocking, keine Single-Thread-Engpässe.
Multi-Agent-Orchestrierung
Intent-basierte Agent-Discovery, verwaltete Konversationen und Gruppenzusammenarbeit: Agents beraten sich in sieben Stilen, stimmen ab, bearbeiten gemeinsam geteilte Arbeitsergebnisse und geben Menschen einen Platz am Tisch.
Konfiguration und Oberfläche, nebeneinander
Was ein Agent tut, steht in JSON-Dokumenten, die Sie lesen, vergleichen und versionieren können. Der Manager bearbeitet dieselben Dokumente.
{
"behaviorGroups": [
{
"name": "",
"behaviorRules": [
{
"name": "Ask for City",
"actions": [
"ask_for_city"
],
"conditions": [
{
"type": "inputmatcher",
"configs": {
"expressions": "trigger(current_weather)"
},
"conditions": []
}
]
}
]
}
]
}
Eine Behavior Rule ist schlichtes JSON: Passt die geparste Eingabe auf trigger(current_weather), löst sie die Aktion ask_for_city aus. Tasks und Output reagieren auf diese Aktion. Der Manager zeigt einen Agent und den Workflow, der seine Regeln ausführt.
{
"tasks": [
{
"actions": [
"send_message"
],
"id": "simpleChat",
"type": "openai",
"description": "Simple chat interaction",
"parameters": {
"apiKey": "${vault:openai-key}",
"modelName": "gpt-4o",
"systemMessage": "You are a helpful assistant",
"addToOutput": "true"
}
}
]
}
Auch ein LLM-Task ist JSON: der Anbietertyp, eine Vault-Referenz statt eines Klartext-API-Schlüssels, das Modell und die Systemnachricht. Der Manager bearbeitet dasselbe Dokument.
{
"behaviorGroups": [
{
"name": "",
"behaviorRules": [
{
"name": "Refund needs approval",
"actions": [
"PAUSE_CONVERSATION"
],
"conditions": [
{
"type": "inputmatcher",
"configs": {
"expressions": "trigger(refund_request)"
},
"conditions": []
}
]
}
]
}
]
}AWAITING_HUMANGespräch pausiert durch Regel
Refund needs approval
Jede Entscheidung wird als hitl.approval-Eintrag im Audit-Ledger festgehalten.
Um für einen Menschen zu pausieren, löst eine Regel PAUSE_CONVERSATION aus. Das Gespräch wartet im Zustand AWAITING_HUMAN, bis der Eigentümer, ein eddi-admin oder ein eddi-approver im Manager oder in Slack entscheidet. Tool-Aufrufe und Gruppenphasen lassen sich genauso absichern.
"Die Engine ist streng, damit die KI kreativ sein kann."Project Philosophy
Wie ein Konversations-Turn abläuft
Wählen Sie eine Stufe, um zu sehen, was sie tut, wie sie konfiguriert ist und was sie schreibt.
Input
Was hier passiert
Eine Nachricht kommt aus dem Chat, Slack, der API oder einem MCP-Client an. Der Rohtext wird der erste Eintrag eines neuen Schritts in der Conversation memory. Es lief noch kein Task, daher zeigt diese Stufe den Memory-Schritt statt eines Audit-Eintrags.
Beispielwerte zur Veranschaulichung
{
"key": "input",
"value": "What is the weather?"
}Parser
Was hier passiert
Der Parser normalisiert den Text und schlägt ihn in den Wörterbüchern des Agents nach. Aus Wörtern und Phrasen werden semantische Ausdrücke wie trigger(current_weather). Das ist ein Nachschlagen, kein Modellaufruf: Derselbe Text ergibt immer dieselben Ausdrücke.
Jeder Pipeline-Task schreibt einen Eintrag: HMAC-signiert, nur anhängend, mit Sequenzprüfung.
Beispielwerte zur Veranschaulichung
{
"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
Was hier passiert
Behavior Rules sind WENN-DANN-Bedingungen über den Ausdrücken und der Conversation memory. Jede passende Regel löst Aktionen aus. Das Routing ist Konfiguration statt Code, daher nimmt dieselbe Eingabe jedes Mal denselben Weg.
Jeder Pipeline-Task schreibt einen Eintrag: HMAC-signiert, nur anhängend, mit Sequenzprüfung.
Beispielwerte zur Veranschaulichung
{
"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
Was hier passiert
Tasks reagieren auf Aktionen: ein LLM-Aufruf, ein HTTP-Aufruf, ein MCP-Tool oder eine Wissensdatenbank-Abfrage. Jeder Task schreibt einen signierten Audit-Eintrag mit dem, was er gelesen und erzeugt hat, samt Modell- und Tool-Details.
Jeder Pipeline-Task schreibt einen Eintrag: HMAC-signiert, nur anhängend, mit Sequenzprüfung.
Beispielwerte zur Veranschaulichung
{
"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
Was hier passiert
Output-Vorlagen machen aus den ausgelösten Aktionen die Antwort: Text und Quick Replies. Die Antwort wird im Memory gespeichert und an den Kanal zurückgegeben, aus dem die Nachricht kam.
Beispielwerte zur Veranschaulichung
{
"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
Was hier passiert
Jeder Tool-Aufruf überquert unabhängig von seiner Quelle dieselbe Grenze. Aufrufe, die zu einem toolApprovals-Muster passen, pausieren, bis ein Mensch entscheidet. Die Entscheidung landet als hitl.approval-Eintrag im Ledger. Zugangsdaten kommen als ${vault:keyName}-Referenzen aus dem Vault.
Jeder Pipeline-Task schreibt einen Eintrag: HMAC-signiert, nur anhängend, mit Sequenzprüfung.
Beispielwerte zur Veranschaulichung
{
"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
Was hier passiert
Die Conversation memory hält jeden Schritt (input, expressions, actions, output) und Properties mit Geltungsbereich Schritt, Gespräch oder Nutzer (longTerm). Der Gesprächsstatus (READY, IN_PROGRESS, ENDED, AWAITING_HUMAN oder ERROR) wird mitgespeichert.
Beispielwerte zur Veranschaulichung
{
"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"
}
}UNIDO Trusted Partner für industrielle KI
LABS.AI wurde von der Organisation der Vereinten Nationen für industrielle Entwicklung (UNIDO) als Trusted Partner für industrielle KI für den Globalen Süden ausgewählt.
Mehr über die Partnerschaft erfahren →Vertrauenswürdig & Zertifiziert
Bewährte Technologie
Nächste Schritte
Häufig gestellte Fragen
Was ist EDDI?
EDDI ist eine quelloffene, Enterprise-KI-Orchestrierungsplattform. Teams können KI-gestützte Agents per JSON-Konfiguration erstellen, konfigurieren und deployen. EDDI bietet eine produktionsreife React-Management-UI (den EDDI Manager), integrierte REST-APIs, Konversationsverwaltung, Sicherheit (OIDC/Keycloak), unveränderliche Audit-Trails und 89 MCP-Tools, alles deploybar via Docker oder Kubernetes.
Wie unterscheidet sich EDDI von KI-Bibliotheken und Frameworks?
KI-Bibliotheken wie LangChain, Spring AI und LangChain4j liefern Bausteine, aber Sie müssen REST-Controller, Authentifizierung, Konversationsverwaltung, Audit-Logging und Management-UIs selbst bauen. EDDI ist eine deploybare Middleware-Plattform, keine Bibliothek. Es liefert all das out of the box, bereit zum Deployment via Docker.
Ist EDDI produktionsreif für den Enterprise-Einsatz?
Ja. EDDI basiert auf einer Enterprise-Runtime mit leichtgewichtigen virtuellen Threads für massive I/O-gebundene Nebenläufigkeit. Es unterstützt MongoDB und PostgreSQL, bietet integrierte OIDC/Keycloak-Authentifizierung und Workspaces pro Benutzer mit Ressourcen-Sharing, unveränderliche kryptografische Audit-Trails für Compliance (einschließlich EU AI Act) und skaliert horizontal über NATS JetStream.
Was ist das Model Context Protocol (MCP)?
Das Model Context Protocol (MCP) ist ein offener Standard, der KI-Assistenten wie Claude Desktop, IDE-Plugins und benutzerdefinierte Clients ermöglicht, programmgesteuert mit externen Tools zu interagieren. EDDI bietet 89 MCP-Tools für Konversationsverwaltung, Agent-Administration, Gruppendiskussionen, menschliche Freigaben, Setup-Automatisierung, Zeitplanverwaltung und Diagnose.
Kann EDDI Flowise oder n8n für Produktions-Workloads ersetzen?
EDDI erfüllt einen ähnlichen visuellen Zweck, aber mit Enterprise-Architektur. Im Gegensatz zu Flowise und n8n verwendet EDDI kein eval() oder Code-Blöcke, nutzt Millionen leichtgewichtiger virtueller Threads für Enterprise-Nebenläufigkeit, unterstützt OIDC/Keycloak-Authentifizierung und speichert Daten in MongoDB oder PostgreSQL. Es ist für regulierte Branchen konzipiert.
Steht EDDI in Zusammenhang mit "Eddie AI" oder anderen Produkten namens "Eddy"?
Nein. EDDI (von LABS.AI) ist eine selbst gehostete Enterprise-KI-Agenten-Orchestrierungsplattform, die auf Java/Quarkus aufbaut. Es steht in keinem Zusammenhang mit Video-Editing-Tools, HR-Software, Chatbot-Buildern oder anderen Produkten mit ähnlichen Namen.
Wie schneidet EDDI im Vergleich zu Cloud-KI-Plattformen wie AWS Bedrock oder Azure AI Studio ab?
Cloud-KI-Plattformen bieten verwaltete Infrastruktur, schaffen aber Vendor Lock-in. EDDI läuft überall, wo Docker läuft: on-premises, in jeder Cloud oder in Air-Gapped-Umgebungen. Es unterstützt 19 LLM-Anbieter sowie jeden OpenAI-kompatiblen Endpunkt und bietet damit volle Modellportabilität und Datensouveränität. Siehe unseren detaillierten Vergleich.
Funktioniert EDDI mit Open WebUI und anderen OpenAI-kompatiblen Clients?
Ja. EDDI enthält eine OpenAI-kompatible /v1-API, die deployte Agenten als Modelle bereitstellt, sodass Open WebUI, das openai-SDK, LangChain und LiteLLM direkt mit ihnen kommunizieren können. Die API unterstützt Streaming und die Ausgabe der Token-Nutzung, führt jeden Chat in einer eigenen Konversation, und die Freigabe-Gates des Agenten gelten weiterhin. Sie ist standardmäßig deaktiviert und hat eine eigene Authentifizierung per API-Key.
Können mehrere Benutzer und Teams eine EDDI-Instanz gemeinsam nutzen?
Ja. Workspaces pro Benutzer geben jedem Agenten und jeder Konfiguration einen Eigentümer, einen persönlichen oder Team-Workspace, der Keycloak-Gruppen zugeordnet ist, und explizites Teilen mit Nutzungs-, Lese-, Bearbeitungs- oder Eigentümerrechten. Sie teilen mit Personen namentlich aus einem Verzeichnis angemeldeter Benutzer, diese werden benachrichtigt, und wer einem Link zu etwas folgt, das er nicht öffnen darf, kann beim Eigentümer Zugriff anfragen. Über Connections rufen Agenten externe Systeme mit einem organisationsweiten Schlüssel, einem Service-Account oder dem eigenen OAuth-Konto jedes Benutzers auf, sodass ein Agent auf das beschränkt werden kann, was die Person, die ihn nutzt, tun darf. Workspaces sind optional, und bestehende Ressourcen werden beim Aktivieren rückwirkend zugeordnet, damit nichts verschwindet.
Welche LLMs kann ich mit EDDI nutzen?
EDDI verbindet sich mit 19 LLM-Anbietern: OpenAI, Anthropic, Google Gemini, Mistral, Azure OpenAI, Amazon Bedrock, Oracle GenAI, Google Vertex AI, Ollama, Hugging Face und Jlama, dazu erstklassige Unterstützung für xAI Grok, DeepSeek, Moonshot Kimi, Alibaba Qwen, Z.ai GLM, MiniMax, OpenRouter und Groq. Jeder andere OpenAI-kompatible Endpunkt funktioniert über eine Base-URL. Der Modellkatalog erklärt, wofür sich jedes Modell eignet, und zeigt die genaue Konfiguration, um es in EDDI zu betreiben.