HN 표시: EDDI – 에이전트 로직이 코드가 아닌 JSON에 있는 다중 에이전트 AI 엔진
hackernews
|
|
🔬 연구
#anthropic
#claude
#gemini
#openai
#review
#llama
#mistral
원문 출처: hackernews · Genesis Park에서 요약 및 분석
요약
EDDI(Enhanced Dialog Driven Interface)는 Java 25와 Quarkus로 구축된 다중 에이전트 오케스트레이션 미들웨어로, 에이전트 로직을 코드가 아닌 버전 관리되는 JSON 설정 파일로 관리하는 것이 핵심 특징입니다. 42개의 MCP 도구와 A2A 프로토콜, 12개 이상의 LLM provider(OpenAI, Anthropic, AWS Bedrock, Ollama 등)를 지원하며, Red Hat 인증 Docker 이미지로 원클릭 설치를 지원합니다. 버전 6.0.1부터 EU AI Act, GDPR, HIPAA 등 규제 준수 인프라와 HMAC-SHA256 기반의 불변 감사 원장을 기본 제공하여 기업 환경에서의 안전한 AI 거버넌스를 가능하게 합니다.
본문
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 - 🏁 Quick Start - 💡 Why EDDI? - 📸 See It In Action - ✨ Features - 🧩 Quarkus SDK - 📖 Documentation - 📋 Compliance & Privacy - 🏗️ Development - 🤝 Contributing - 🔒 Security - 📜 Code of Conduct 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 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). 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 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 More screenshots: LLM Config, Logs, User Memory, Schedules, Agent Detail - 🔀 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) | 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 | 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 | - 💾 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 - 📦 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 | 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 | - 🫀 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 Strategies — persistent (reuse same conversation across fires) ornew (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 - 📉 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 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 - 📄 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 - 🐳 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 - 🎨 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 Building a Quarkus app that talks to EDDI? Use the quarkus-eddi extension: io.quarkiverse.eddi quarkus-eddi 6.0.1 @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 | | 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
Genesis Park 편집팀이 AI를 활용하여 작성한 분석입니다. 원문은 출처 링크를 통해 확인할 수 있습니다.
공유