E.D.D.I (Enhanced Dialog Driven Interface) is a production-grade multi-agent orchestration middleware that coordinates between users, AI agents (LLMs), and business systems. It provides intelligent routing, conversation management, and API orchestration for building sophisticated AI-powered applications — all through configuration, not code.
Built with Java 25 and Quarkus. Ships as a Red Hat-certified Docker image. Deploy on Docker, Kubernetes, or OpenShift.
Latest version: 6.0.0-RC1 · Website · Documentation · License: Apache 2.0
- 🔀 Intelligent Routing — Direct conversations to different agents based on context, rules, and intent
- 🗣️ Group Conversations — Multi-agent debates with 5 built-in styles (Round Table, Peer Review, Devil's Advocate, Delphi, Debate)
- 🪆 Nested Groups — Compose groups of groups for tournament brackets, red-team vs blue-team, and panel reviews
- 👥 Managed Conversations — Intent-based auto-routing with one conversation per user per intent
- 🧙 Agent Father — Meta-agent that creates other agents through conversation (ships out of the box)
- 🟢 OpenAI · Anthropic Claude · Google Gemini · Mistral AI
- ☁️ Azure OpenAI · Amazon Bedrock · Oracle GenAI · Google Vertex AI
- 🏠 Ollama · Jlama · Hugging Face — Run models locally or in your own cloud
- 🔗 OpenAI-compatible endpoints — DeepSeek, Cohere, and any compatible API via
baseUrl
- 🧩 MCP Server (48+ tools) — Full EDDI control from Claude Desktop, IDE plugins, or any MCP client
- 🧩 MCP Client — Connect agents to external MCP tool servers
- 🤝 A2A Protocol — Agent-to-Agent peer communication with skill discovery and Agent Cards
- 📋 OpenAPI-to-Agent — Paste an OpenAPI spec, get a fully deployed API-calling agent
- 🔍 Web Search — DuckDuckGo or Google Custom Search
- 🧮 Calculator — Sandboxed math parser (no code injection)
- 🌐 Web Scraper · 📄 PDF Reader — SSRF-protected content extraction
- ☁️ Weather · 🕐 DateTime · 📊 Data Formatter · 📝 Text Summarizer
- 🔌 HTTP Calls as Tools — Expose your own APIs as LLM-callable tools with full security sandboxing
- 📦 7 Embedding Providers — OpenAI, Ollama, Azure OpenAI, Mistral, Bedrock, Cohere, Vertex AI
- 🗄️ 5 Vector Stores — pgvector, In-Memory, MongoDB Atlas, Elasticsearch, Qdrant
- 🌐 httpCall RAG — Zero-infrastructure RAG via any search API
- 📥 REST Ingestion API — Async document ingestion with status tracking
- 💾 Persistent User Memory — Agents remember facts, preferences, and context across conversations
- 🪟 Token-Aware Windowing — Intelligent context packing with anchored opening steps
- 📝 Property Extraction — Config-driven slot-filling for structured data capture
- 🔄 Conversation State — Full history with undo/redo support
- 📉 Cost Optimization — Try cheap/fast models first, escalate to powerful models only when needed
- 📊 4 Confidence Strategies — Structured output, heuristic, judge model, or none
- 💰 Per-Conversation Budgets — Automatic cost tracking with budget caps
- 🏦 Secrets Vault — Envelope encryption (PBKDF2 + AES) for API keys, never plaintext in DB
- 🛡️ SSRF Protection — URL validation blocks private/internal addresses on all tools
- 🔒 Sandboxed Evaluation — No
eval(), no script engines — safe recursive-descent math parser - 🔑 OAuth 2.0 / Keycloak — Authentication, authorization, and tenant isolation
- 📜 Immutable Audit Ledger — Write-once trail with HMAC integrity for EU AI Act compliance
- 🚫 No Dynamic Code Execution — Custom logic runs in external MCP servers, outside the EDDI perimeter
- 📄 JSON Configs, Not Code — Agent behavior defined in versioned JSON documents
- 🔧 Lifecycle Pipeline — Pluggable task pipeline: Input → Parse → Rules → API/LLM → Output
- 📦 Composable Agents — Agents assembled from reusable, version-controlled workflows and extensions
- 🧪 Behavior Rules — IF-THEN logic engine for routing, orchestration, and business logic
- 📤 Import / Export — Agents are portable as ZIP files with secret scrubbing on export
- 🐳 One-Command Install — Interactive wizard sets up EDDI + database + starter agent via Docker
- ☸️ Kubernetes / OpenShift — Kustomize overlays, Helm charts, HPA, PDB, NetworkPolicy
- 📊 Prometheus & Grafana — Built-in Micrometer instrumentation at
/q/metrics - 🩺 Health Checks — Liveness & readiness probes at
/q/health/liveand/q/health/ready - 🔄 NATS JetStream — Async event bus for distributed processing
- ⚡ Virtual Threads — Java 25 virtual threads for true concurrency, no GIL
- 🗃️ DB-Agnostic — Choose MongoDB or PostgreSQL, switch with one env var
- 🎨 React 19 Manager UI — Modern admin dashboard for agent building, testing, deployment, and monitoring
- 💬 Chat Widget — Embeddable React chat UI with SSE streaming and Keycloak auth
- 🔍 Audit Trail Viewer — Timeline-based compliance and debugging UI
- 📋 Logs Panel — Live SSE log streaming + searchable history
- 🔑 Secrets Manager — Write-only UI for vault entries
The fastest way to get EDDI running is the one-command installer. It sets up EDDI + your choice of database via Docker Compose, deploys the Agent Father starter agent, and walks you through creating your first AI agent.
Linux / macOS / WSL2:
curl -fsSL https://raw.githubusercontent.com/labsai/EDDI/main/install.sh | bashWindows (PowerShell):
iwr -useb https://raw.githubusercontent.com/labsai/EDDI/main/install.ps1 | iexNote: If your Antivirus blocks this command as "malicious content", securely download and run it instead:
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/labsai/EDDI/main/install.ps1" -OutFile "install.ps1" Unblock-File .\install.ps1 .\install.ps1
Requires Docker. The wizard auto-generates a unique vault encryption key for secret management.
🔧 Installer options
bash install.sh --defaults # All defaults, no prompts
bash install.sh --db=postgres --with-auth # PostgreSQL + Keycloak
bash install.sh --full # Everything enabled (DB + auth + monitoring)
bash install.sh --local # Build Docker image from local sourceThe --local flag is for contributors testing pre-release builds:
./mvnw package -DskipTests # Build the Java app
bash install.sh --local # Build Docker image + start containersThe installer creates an eddi CLI wrapper that makes updating easy:
eddi updateThis pulls the latest Docker image from the registry and restarts the containers. It works even when the same tag (e.g. 6.0.0-RC1) was re-published — Docker always checks the remote digest for changes.
eddicommand not found? The CLI lives at~/.eddi/eddi(Linux/macOS) or~/.eddi/eddi.cmd(Windows). Either restart your terminal so the PATH takes effect, or use the full path:# Linux / macOS ~/.eddi/eddi update # Windows (PowerShell) & "$HOME\.eddi\eddi.cmd" update
Manual update (without the CLI)
If the eddi CLI isn't available, run the equivalent docker commands from your install directory (~/.eddi by default):
cd ~/.eddi
docker compose --env-file .env -f docker-compose.yml pull
docker compose --env-file .env -f docker-compose.yml up -dAdjust the -f flags to match your setup (e.g. add -f docker-compose.auth.yml if using Keycloak).
If you prefer manual control over Docker Compose:
# Default (EDDI + MongoDB)
docker compose up
# PostgreSQL instead of MongoDB
EDDI_DATASTORE_TYPE=postgres docker compose -f docker-compose.yml -f docker-compose.postgres.yml up
# With Keycloak authentication
docker compose -f docker-compose.yml -f docker-compose.auth.yml up
# With Prometheus + Grafana monitoring
docker compose -f docker-compose.yml -f docker-compose.monitoring.yml up
# Full stack (all overlays)
docker compose -f docker-compose.yml -f docker-compose.auth.yml \
-f docker-compose.monitoring.yml -f docker-compose.nats.yml upAvailable compose overlays: docker-compose.auth.yml (Keycloak), docker-compose.monitoring.yml (Prometheus+Grafana), docker-compose.nats.yml (NATS JetStream), docker-compose.postgres.yml / docker-compose.postgres-only.yml, docker-compose.local.yml (build from source), docker-compose.testing.yml (integration tests).
docker pull labsai/eddi # Pull latest from Docker Hub→ hub.docker.com/r/labsai/eddi
Building a Quarkus app that talks to EDDI? Use the quarkus-eddi extension:
<dependency>
<groupId>io.quarkiverse.eddi</groupId>
<artifactId>quarkus-eddi</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>@Inject EddiClient eddi;
String answer = eddi.chat("my-agent", "Hello!");Features: Dev Services (auto-starts EDDI in dev mode), fluent API, SSE streaming, @EddiAgent endpoint wiring, @EddiTool MCP bridge. See the quarkus-eddi README for full docs.
| Guide | Description |
|---|---|
| Getting Started | Setup and first steps |
| Developer Quickstart | Build your first agent in 5 minutes |
| Architecture | Deep dive into EDDI's design and pipeline |
| LangChain Integration | Connecting to 12 LLM providers |
| Behavior Rules | Configuring agent routing logic |
| HTTP Calls | External API integration |
| RAG | Knowledge base retrieval setup |
| MCP Server | 48+ tools for AI-assisted agent management |
| A2A Protocol | Agent-to-Agent peer communication |
| Group Conversations | Multi-agent debate orchestration |
| User Memory | Cross-conversation fact retention |
| Model Cascading | Cost-optimized multi-model routing |
| Security | SSRF protection, sandboxing, and hardening |
| Secrets Vault | Envelope encryption for sensitive data |
| Audit Ledger | EU AI Act-compliant audit trail |
| Kubernetes | Deploy with Kustomize or Helm |
| Red Hat OpenShift | Certified container, automated release |
| Agent Father Deep Dive | How the meta-agent works |
| Full Documentation | Complete documentation site |
- Java 25
- Maven 3.9+ (bundled via
mvnwwrapper) - MongoDB ≥ 6.0 or PostgreSQL
./mvnw compile quarkus:devThen open http://localhost:7070.
💡 Secrets Vault: To use the secrets vault (storing API keys encrypted), set the master key before starting:
# Linux/macOS export EDDI_VAULT_MASTER_KEY=my-dev-passphrase # Windows (PowerShell) $env:EDDI_VAULT_MASTER_KEY = "my-dev-passphrase" # Or in a .env file (already in .gitignore) echo "EDDI_VAULT_MASTER_KEY=my-dev-passphrase" > .envWithout this, the vault is disabled and secret management returns HTTP 503. Any passphrase works for local development. See Secrets Vault for production setup.
# Build app + Docker image
./mvnw clean package '-Dquarkus.container-image.build=true'
# Build without container (for install.sh --local)
./mvnw package -DskipTests
# Generate third-party licenses (Red Hat certification)
./mvnw package -Plicense-gen -DskipTests# Quickstart (one-file deployment)
kubectl apply -f https://raw.githubusercontent.com/labsai/EDDI/main/k8s/quickstart.yaml
# Kustomize overlays
kubectl apply -k k8s/overlays/mongodb/ # MongoDB backend
kubectl apply -k k8s/overlays/postgres/ # PostgreSQL backend
# Helm
helm install eddi ./helm/eddi --namespace eddi --create-namespaceIncludes overlays for auth (Keycloak), monitoring (Prometheus/Grafana), NATS messaging, Ingress, and production hardening (HPA, PDB, NetworkPolicy). See the Kubernetes Guide for details.
We welcome contributions! Please read our Contributing Guide for details on setting up your development environment, code style, commit conventions, and the pull request process.
Every PR is automatically checked by CI (build + tests), CodeQL (security), dependency review, and AI-powered code review.
Please report security vulnerabilities privately — see our Security Policy.
This project follows the Contributor Covenant Code of Conduct.
