Skip to content

labsai/EDDI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,405 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

EDDI Banner Image

E.D.D.I — Multi-Agent Orchestration Middleware for Conversational AI

Codacy Badge OpenSSF Best Practices Tests

CI CodeQL

Docker Pulls Repository: AI Ready

E.D.D.I (Enhanced Dialog Driven Interface) is a production-grade, config-driven multi-agent orchestration middleware for conversational AI. It coordinates users, AI agents, and business systems through intelligent routing, persistent memory, and API orchestration — without writing code.

Built with Java 25 and Quarkus. Ships as a Red Hat-certified Docker image. Native support for MCP (Model Context Protocol), A2A (Agent-to-Agent), Slack, OpenAPI, and OAuth 2.0.

Latest version: 6.0.1 · Website · Documentation · License: Apache 2.0


📑 Table of Contents


🏁 Quick Start

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 | bash

Windows (PowerShell):

iwr -useb https://raw.githubusercontent.com/labsai/EDDI/main/install.ps1 | iex

Note: 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 source

The --local flag is for contributors testing pre-release builds:

./mvnw package -DskipTests    # Build the Java app
bash install.sh --local        # Build Docker image + start containers

🔄 Updating

The installer creates an eddi CLI wrapper that makes updating easy:

eddi update

This pulls the latest Docker image from the registry and restarts the containers. It works even when the same tag (e.g. latest) was re-published — Docker always checks the remote digest for changes.

eddi command 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 -d

Adjust the -f flags to match your setup (e.g. add -f docker-compose.auth.yml if using Keycloak).

🐳 Docker Compose (Manual)

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 up

Available 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 pull labsai/eddi    # Pull latest from Docker Hub

hub.docker.com/r/labsai/eddi


💡 Why EDDI?

Most multi-agent frameworks (LangGraph, CrewAI, AutoGen) are Python/Node libraries — great for prototyping, hard to govern in production. EDDI approaches from the opposite direction: a deterministic engine built to safely govern non-deterministic AI.

Dimension Typical Python/Node Frameworks EDDI
Concurrency GIL or single-threaded event loop Java 25 Virtual Threads — true OS-level parallelism
Agent Logic Embedded in application code Versioned JSON configurations — update behavior without redeployment
Security Model Often relies on sandboxed code execution No dynamic code execution at all; envelope-encrypted vault, SSRF protection
Compliance Requires custom implementation GDPR, HIPAA, EU AI Act infrastructure built-in
Audit Trail Application-level logging HMAC-SHA256 immutable ledger with cryptographic agent signing
Deployment pip/npm + manual infrastructure One-command Docker install, Kubernetes/OpenShift-ready

"The engine is strict so the AI can be creative."Project Philosophy


📸 See It In Action

📊 Dashboard

EDDI Dashboard

Platform overview with active agents, workflows, quick actions, and recent conversations

🤖 Agent Fleet

Agents List

All deployed agents at a glance with status, descriptions, and one-click chat

💬 Live Conversation

Conversation View

Real-time conversation with visible actions, step timing, and tool calls

🗣️ Multi-Agent Debate

Group Conversations

Peer Review with phased discussion: Opinion → Critique → Revision → Synthesis

🛡️ Secrets Vault

Secrets Vault

Envelope-encrypted secrets with rotation tracking, checksums, and per-agent access control

💰 Tenant Quotas

Tenant Quotas

Rate limits, cost budgets, and live usage monitoring per tenant

More screenshots: LLM Config, Logs, User Memory, Schedules, Agent Detail

⚡ LLM Task Configuration

LLM Configuration

System prompt, model parameters, cascading, RAG, context window, and budget settings

📋 Real-Time Logs

Logs

Live log stream with per-call cost tracking, token counts, warnings, and errors

🧠 Persistent User Memory

User Data

Cross-session memory with categorized entries, visibility scoping, and conflict detection

⏰ Scheduled Execution

Schedules

Cron jobs and heartbeats with fire history, retry logic, and dead-letter tracking

🔧 Agent Detail

Agent Detail

Full agent config: environments, workflows, A2A, security, capabilities, and memory policy


✨ Features

🤖 Multi-Agent Orchestration

  • 🔀 Intelligent Routing — Direct conversations to different agents based on context, rules, and intent
  • 🗣️ Group Conversations — Multi-agent debates with 5 built-in discussion styles: Round Table, Peer Review, Devil's Advocate, Delphi, and Debate
  • 💬 Slack Integration — Deploy agents to Slack channels and run multi-agent debates directly in threads
  • 🪆 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
  • 🎯 Capability Matching — Discover and route to agents by skill, confidence score, and custom attributes
  • 🧙 Agent Father — Meta-agent that creates other agents through conversation (ships out of the box)

🧠 LLM Provider Support (12 Providers)

Category Providers
Cloud APIs OpenAI · Anthropic Claude · Google Gemini · Mistral AI
Enterprise Cloud Azure OpenAI · Amazon Bedrock · Oracle GenAI · Google Vertex AI
Self-Hosted Ollama · Jlama · Hugging Face
Compatible Any OpenAI-compatible endpoint (DeepSeek, Cohere, etc.) via baseUrl

🔗 Standards & Interoperability

EDDI implements open standards — not proprietary APIs:

Standard Role What It Enables
MCP (Model Context Protocol) Server (42 tools) + Client Control EDDI from Claude Desktop, Cursor, or any MCP client. Connect agents to external MCP tool servers
A2A (Agent-to-Agent Protocol) Full implementation Cross-platform agent communication, Agent Cards, and skill discovery
OpenAPI 3.1 Native generation + consumption Auto-generated spec. Paste any OpenAPI spec → get a fully deployed API-calling agent
OAuth 2.0 / OIDC Keycloak integration Authentication, authorization, and multi-tenant isolation
SSE (Server-Sent Events) Streaming transport Real-time chat responses, group discussion feeds, and live log streaming

💭 Memory & Context Management

  • 💾 Persistent User Memory — Agents remember facts, preferences, and context across conversations via structured key-value entries with visibility scoping (global, agent, group)
  • 🧠 LLM Memory Tools — Built-in tools agents can call to read, write, and search their own persistent memory
  • 💤 Dream Consolidation — Background memory maintenance: stale entry pruning, contradiction detection, and fact summarization (inspired by Anthropic's research on background memory consolidation)
  • 🪟 Token-Aware Windowing — Intelligent context packing with model-specific tokenizer support and anchored opening steps
  • 📝 Rolling Summary — Incremental LLM-powered summarization of older turns with a Conversation Recall Tool for drill-back into compressed history
  • 🔧 Property Extraction — Config-driven slot-filling with longTerm / conversation / step scoping — EDDI's importance extraction mechanism
  • 🛡️ Memory Policy (Commit Flags) — Strict write discipline marks failed task output as uncommitted (hidden from LLM context) and injects concise error digests for graceful degradation
  • 🔄 Conversation State — Full history with undo/redo support

📚 RAG (Retrieval-Augmented Generation)

  • 📦 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 (BM25, Elasticsearch, custom)
  • 📥 REST Ingestion API — Async document ingestion with status tracking

🛠️ Built-In AI Agent Tools

Tool Description
🔍 Web Search DuckDuckGo or Google Custom Search
🧮 Calculator Sandboxed recursive-descent math parser (no eval(), no code injection)
🌐 Web Scraper SSRF-protected content extraction from web pages
📄 PDF Reader SSRF-protected document extraction
☁️ Weather · 🕐 DateTime Real-time data tools
📊 Data Formatter · 📝 Text Summarizer Data transformation tools
🔌 HTTP Calls as Tools Expose your own REST APIs as LLM-callable tools with full security sandboxing
🧠 User Memory Read/write/search persistent user memory
🔙 Conversation Recall Drill back into summarized conversation history
📎 Multimodal Attachments Image, PDF, audio, and video input with MIME-based routing

⏰ Scheduled Execution & Heartbeats

  • 🫀 Heartbeat Triggers — Periodic agent wake-ups at configurable intervals for proactive behavior (inspired by OpenClaw's heartbeat architecture)
  • ⏲️ Cron Scheduling — Standard cron expressions for timed agent execution
  • 🔄 Conversation Strategiespersistent (reuse same conversation across fires) or new (fresh context each time)
  • 📊 Fire Logging — Complete execution history with status, duration, cost tracking, and retry logic
  • 🌙 Dream Cycles — Scheduled background memory consolidation with cost ceilings per run

📈 Smart Model Cascading

  • 📉 Cost Optimization — Try cheap/fast models first, escalate to powerful models only when confidence is low
  • 📊 4 Confidence Strategies — Structured output, heuristic, judge model, or none
  • 💰 Per-Conversation Budgets — Automatic cost tracking with budget caps and eviction
  • 🏢 Tenant Cost Ceilings — Monthly cost budgets per tenant with automatic enforcement

🔐 Enterprise Security & Compliance

Security Architecture
  • 🏦 Secrets Vault — Envelope encryption (PBKDF2 + AES-256) with tenant-scoped DEK/KEK rotation. Never plaintext in DB
  • 🛡️ SSRF Protection — All tools validate URLs against private IPs, internal hostnames, and non-HTTP schemes before any request
  • 🔒 Sandboxed Evaluation — Recursive-descent math parser only. No eval(), no script engines, no reflection-based execution
  • 🔑 OAuth 2.0 / Keycloak — Multi-tenant authentication, authorization, and role-based access control
  • ✍️ Agent Signing — Ed25519 cryptographic identity per agent; audit entries signed with agent private keys
  • 🚫 No Dynamic Code Execution — Custom logic runs in external MCP servers, outside the EDDI security perimeter
Regulatory Compliance
Regulation EDDI Support
EU AI Act Immutable HMAC-SHA256 audit ledger, decision traceability, risk classification guidance
GDPR Cascading data erasure (Art. 17), data portability (Art. 15/20), restriction of processing (Art. 18), per-category retention, pseudonymization
CCPA Right to delete, right to know, data portability
HIPAA Deployment guide, BAA template, LLM provider BAA matrix, session timeout guidance
International PIPEDA 🇨🇦 · LGPD 🇧🇷 · APPI 🇯🇵 · POPIA 🇿🇦 · PDPA 🇸🇬🇹🇭🇲🇾 · PIPL 🇨🇳 compatibility documented
  • 📜 Audit Ledger — Every agent decision recorded in a write-once, HMAC-secured, append-only ledger
  • 🔍 Compliance Startup Checks — Advisory warnings on boot for TLS and database encryption gaps
  • 🗑️ GDPR Orchestration — One-call cascading erasure across 6 stores + audit trail pseudonymization
  • 📤 Data Portability — Complete user data export (memories, conversations, audit entries) via REST and MCP

⚙️ Configuration-Driven Architecture

  • 📄 JSON Configs, Not Code — Agent behavior defined in versioned, diffable 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 portable as ZIP files with automatic secret scrubbing on export
  • 🔄 Agent Sync — Live instance-to-instance sync with structural matching, content diffing, and selective resource picking — no ZIP intermediary needed
  • 📝 Prompt Snippets — Reusable, versioned system prompt building blocks available as {{snippets.safety_rules}}
  • 📎 Content Type Routing — MIME-based behavior rule conditions for multimodal attachment routing

🚀 Cloud-Native & Observable

  • 🐳 One-Command Install — Interactive wizard sets up EDDI + database + starter agent via Docker
  • ☸️ Kubernetes / OpenShift — Kustomize overlays, Helm charts, HPA, PDB, NetworkPolicy
  • 📊 Prometheus & Grafana — 50+ Micrometer metrics at /q/metrics (tools, vault, memory, scheduling, conversations)
  • 🩺 Health Checks — Liveness & readiness probes at /q/health/live and /q/health/ready
  • 🔄 NATS JetStream — Async event bus for distributed processing
  • Virtual Threads — Java 25 virtual threads for true OS-level concurrency (no Python GIL or Node.js event loop bottleneck)
  • 🗃️ DB-Agnostic — Choose MongoDB or PostgreSQL; switch with one env var. Single Docker image for both
  • 🏗️ Red Hat Certified — Container certification with automated preflight checks in CI/CD

🖥️ Manager Dashboard & Chat UI

  • 🎨 React 19 Manager — 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 vault UI with copy-reference support
  • 🌍 11 Languages — English, German, Spanish, French, Portuguese, Chinese, Japanese, Korean, Arabic (RTL), Hindi, Thai

🧩 Quarkus SDK

Building a Quarkus app that talks to EDDI? Use the quarkus-eddi extension:

<dependency>
    <groupId>io.quarkiverse.eddi</groupId>
    <artifactId>quarkus-eddi</artifactId>
    <version>6.0.1</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.


📖 Documentation

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
LLM Configuration Connecting to 12 LLM providers
Behavior Rules Configuring agent routing logic
HTTP Calls External API integration
RAG Knowledge base retrieval setup
MCP Server 42 tools for AI-assisted agent management
A2A Protocol Agent-to-Agent peer communication
Slack Integration Deploy agents to Slack and run group discussions
Group Conversations Multi-agent debate orchestration
User Memory Cross-conversation fact retention
Memory Policy Commit flags and strict write discipline
Model Cascading Cost-optimized multi-model routing
Scheduling & Heartbeats Cron schedules, heartbeats, dream consolidation
Agent Sync Live instance-to-instance sync and upgrade imports
Import / Export ZIP-based agent portability and merge
Prompt Snippets Reusable system prompt building blocks
Attachments Multimodal attachment pipeline
Capability Matching A2A skill discovery and routing
Security SSRF protection, sandboxing, and hardening
Secrets Vault Envelope encryption and auto-vaulting
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

📋 Compliance & Privacy

EDDI provides built-in infrastructure for regulatory compliance:

Guide Covers
GDPR / CCPA Data erasure, export, Art. 18 restriction of processing, per-category retention, and consent guidance
HIPAA Healthcare deployment guide — encryption, BAAs, LLM provider matrix, session management
EU AI Act AI risk classification, decision traceability, immutable audit ledger
Privacy & Data Processing Data flows, LLM provider matrix, international regulations (PIPEDA, LGPD, APPI, POPIA, PDPA, PIPL)
Compliance Data Flow Single-page data flow diagram for auditors
Incident Response Breach response runbook (GDPR 72h, CCPA 45 days, HIPAA 60 days)

🏗️ Development

Prerequisites

Tool Version Notes
Java (JDK) 25 Eclipse Temurin recommended
Maven 3.9+ Bundled via mvnw / mvnw.cmd wrapper — no install needed
MongoDB 6.0+ Local instance or Docker (docker run -d -p 27017:27017 mongo:7)
Docker Latest For integration tests and container builds

Windows users: Replace ./mvnw with .\mvnw.cmd in all commands below.

Quarkus Dev Mode

Dev mode starts the application with live reload — code changes are picked up automatically without restarting:

# Linux / macOS
./mvnw compile quarkus:dev

# Windows (PowerShell)
.\mvnw.cmd compile quarkus:dev

Then open http://localhost:7070. The Quarkus Dev UI is available at http://localhost:7070/q/dev.

Dev mode also enables:

  • Continuous testing — press r in the terminal to re-run tests on changes
  • Dev UI — browse endpoints, CDI beans, configuration, and health checks
  • Live reload — Java and resource changes apply instantly

💡 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" > .env

Without this, the vault is disabled and secret management returns HTTP 503. Any passphrase works for local development. See Secrets Vault for production setup.

Maven Command Reference

Command What It Does
./mvnw compile quarkus:dev Start dev mode with live reload (port 7070)
./mvnw compile Compile sources only (fast feedback)
./mvnw clean compile Clean build — delete target/ and recompile from scratch
./mvnw test Run unit tests (excludes *IT.java integration tests)
./mvnw verify -DskipITs Compile + unit tests + package (no integration tests)
./mvnw verify Full build — compile + unit tests + integration tests (requires Docker)
./mvnw validate Run Checkstyle code style checks
./mvnw formatter:format Auto-format Java sources using the project Eclipse formatter
./mvnw package -DskipTests Build the JAR without running tests (for install.sh --local)
./mvnw clean package '-Dquarkus.container-image.build=true' Build the app + Docker image
./mvnw package -Plicense-gen -DskipTests Generate third-party licenses (Red Hat certification)
./mvnw quarkus:dev -Dsuspend Start dev mode and wait for debugger on port 5005
./mvnw quarkus:dev -Ddebug=false Start dev mode without the debug agent
Code coverage

JaCoCo is configured to run automatically during ./mvnw test. After tests complete, find the coverage report at:

target/site/jacoco/index.html
Useful system properties
Property Default Description
-Dquarkus.http.port=<port> 7070 Override the HTTP port
-Dquarkus.mongodb.connection-string=<uri> mongodb://localhost:27017 MongoDB connection
-Dquarkus.profile=<profile> dev Active Quarkus profile (dev, test, prod)
-DskipTests false Skip all tests
-DskipITs true Skip integration tests only

Build & Docker

# 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

☸️ Kubernetes

# 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-namespace

Includes overlays for auth (Keycloak), monitoring (Prometheus/Grafana), NATS messaging, Ingress, and production hardening (HPA, PDB, NetworkPolicy). See the Kubernetes Guide for details.


🤝 Contributing

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.

🔒 Security

Please report security vulnerabilities privately — see our Security Policy.

📜 Code of Conduct

This project follows the Contributor Covenant Code of Conduct.

About

Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors