EDDI
Config-driven server that runs AI agents from versioned JSON, driven by MCP, REST or A2A.
A Java and Quarkus server that runs AI agents defined in versioned JSON configuration: behavior rules, LLM tasks, HTTP calls and output templates. It adds multi-agent group discussions, persistent user memory, schedules and human approval gates, with a built-in admin dashboard and chat UI. The open source is Apache-2.0 and self-hosted with Docker or Helm; EDDI Solutions sells managed plans with no published prices.
Alternative to Dify, n8n, Flowise
- I want agents defined in versioned config that my coding agent can create and deploy over MCP instead of writing framework code
- I need agents that stop for human approval and keep an audit trail in a self-hosted deployment
- I want several agents to debate a question and hand back a synthesized answer
- I want my agents to call agents on other platforms over A2A and to answer those platforms too
- Infrastructure-grade: a Java 25 server plus MongoDB or PostgreSQL, with optional Keycloak and NATS for authentication and clustering
- The shipped default has OIDC off, so no endpoint needs a token, A2A JSON-RPC included; the compose files bind to 127.0.0.1, so turn authentication on before exposing it
- A2A agents are opt-in: set a2aEnabled per agent. eddi.a2a.enabled is on by default but only switches the endpoints
- The root Agent Card describes only the first A2A-enabled agent; other agents use /a2a/agents/{agentId}/.well-known/agent-card.json
- A2A ListTasks, SubscribeToTask, push notifications and the extended card are refused, and clustered deployments need a shared IA2ATaskStore
- Set EDDI_VAULT_MASTER_KEY or secret references such as ${vault:name} fail; store provider keys there, not in agent JSON
- Most creating MCP tools are not idempotent: after a transport error, check with a list tool before retrying or you get a duplicate
Last activity Nov 3, 2026. Fit: adaptable 3, operable 3.
Editions
Open source · Free open source
- Clone
git clone https://github.com/labsai/EDDI - ImageContainer
- Install
curl -fsSL https://raw.githubusercontent.com/labsai/EDDI/main/install.sh | bash
EDDI Solutions managed plans · Free closed source
- HostedOpen the hosted app
Adaptable: what is yours to change
Make it yours
Config only20 things to edit
Agent behavior is versioned JSON: behavior rules, LLM tasks with their system prompts, HTTP calls and output templates. These documents live in the database and are edited in the Manager, over REST or MCP, or moved as ZIP exports, so there is no single file in the repo to change; docs/agent-configs/ holds a reference set. Group templates in src/main/resources/group-templates set discussion formats, and the eddi.branding.* properties set the product name, colors and logo. Any property can be set as an env var by uppercasing it and replacing every non-alphanumeric character with an underscore; a misspelled variable is silently ignored.
- Env vars
EDDI_BRANDING_PRODUCT_NAMEEDDI_DATASTORE_TYPEEDDI_VAULT_MASTER_KEYEDDI_PORTEDDI_BINDEDDI_SECURITY_ALLOW_UNAUTHENTICATEDEDDI_MCP_ALLOW_UNAUTHENTICATEDEDDI_SECRETSTORE_ALLOW_UNAUTHENTICATEDEDDI_A2A_ENABLEDEDDI_A2A_BASE_URLQUARKUS_OIDC_TENANT_ENABLEDQUARKUS_OIDC_AUTH_SERVER_URL- Config files
src/main/resources/application.properties.env.exampledocker-compose.ymlhelm/eddi/values.yamlsrc/main/resources/group-templates/research-pod.jsonsrc/main/resources/group-templates/decision-board.jsonsrc/main/resources/llm/openai-compatible-providers.jsondocs/agent-configs/rule-based-reference/- Prompt files
- none
- Accounts you need
- An LLM provider account, unless you run a local model through Ollama or Jlama
Source
- github.com/labsai/EDDI
- Apache-2.0 license
- Last commit Nov 3, 2026
- 389 stars
Operable: what an agent can drive
Interface
OfficialMCP serverpublished by the builderremote or local
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
- Docs
- github.com/labsai/EDDI/blob/main/docs/mcp-server.md
- Tools
96 MCP server toolsbuilt-in web search, calculator, web scraper, PDF reader, weather and user memory toolsHTTP calls, MCP servers and A2A agents as tools
A2A Protocol
Supportedpublished by the builder
- Role
- Other agents can call it. Calls other agents
- Version
- 1.0
- Bindings
- JSONRPC
- Agent Card
/.well-known/agent-card.jsonon each deployment- Source
- github.com/labsai/EDDI/blob/main/docs/a2a-protocol.mdsrc/main/java/ai/labs/eddi/engine/a2a/ serves Agent Cards and SendMessage over JSONRPC at version 1.0 with 0.3 and legacy dialects, and modules/llm/impl/A2AToolProviderManager.java fetches peer cards and sends SendMessage, message/send or tasks/send, wired into AgentOrchestrator; the Builder applies no experimental label and the same files are in the 6.6.0 tag.
Reach describes the interface above, not A2A.
Reach
Partial coverage. 8 of 10 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Create, change and deploy agents | Reachable | setup_agent, create_api_agent, update_resource, apply_agent_changes and deploy_agent in docs/mcp-server.md; the approval gate cannot be set through create_api_agent |
| Talk to deployed agents and route by intent | Reachable | talk_to_agent, chat_with_agent, chat_managed and discover_agents in docs/mcp-server.md |
| Run multi-agent group discussions | Reachable | 18 group tools, including create_group, discuss_with_group and create_group_from_template |
| Schedule cron jobs and heartbeats | Reachable | create_schedule, fire_schedule_now and retry_failed_schedule in docs/mcp-server.md |
| Review human approvals | Reachable | 10 HITL tools, including list_pending_approvals, resume_conversation and approve_group_phase |
| Read and write persistent user memory | Reachable | 8 memory tools in McpMemoryTools, including upsert_user_memory and search_user_memories |
| Erase and export a user's data for GDPR | Reachable | delete_user_data and export_user_data in McpGdprTools |
| Read audit trails and pipeline logs | Reachable | read_audit_trail and read_agent_logs; unscoped log reads require eddi-admin |
| Create knowledge bases and ingest documents for RAG | Not reachable | docs/mcp-server.md: read_resource reads rag, which has no create, update or delete case; ingestion is REST and Manager only (docs/rag.md) |
| Manage the secrets vault, import agents and sync instances | Not reachable | McpToolFilter.MCP_TOOLS lists no vault, agent import or agent sync tool; these are REST and Manager features |
Code stack
- Languages
- JavaTypeScript
- Frameworks
- QuarkusLangChain4jReact
- Package manager
- maven
- Database
- MongoDBPostgreSQL
- Hosting target
- DockerKubernetes (Helm)OpenShift
- Built
- Mixed (recorded, never ranked)
Model stack
- Providers
- OpenAIAnthropicGoogle GeminiMistral AIAzure OpenAIAmazon BedrockOracle GenAIGoogle Vertex AIOllamaJlamaHugging Faceany OpenAI-compatible endpoint
- Models
- claude-sonnet-4-6 is the setup_agent default
- Keys you need
EDDI_VAULT_MASTER_KEY- Prompts live in
systemMessage in each LLM task configuration, stored in the databaseprompt snippets referenced as {snippets.name}integrations/claude-plugin/skills/
Skills
A Claude Code plugin with two skills that drive the MCP tools: eddi for using agents and eddi-admin for building and operating them. A separate .claude/skills/ship-pr is contributor tooling.
- Kind
- bundled
- Paths
integrations/claude-plugin/skills/eddi/SKILL.mdintegrations/claude-plugin/skills/eddi-admin/SKILL.md.claude-plugin/marketplace.json- Install
/plugin marketplace add labsai/EDDI
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | Quarkus server exposing REST, MCP and A2A; README calls it middleware, and the Manager and chat UIs are built into the same image | 70% |
| executionModel | Lifecycle pipeline of Input, Parse, Behavior Rules, Actions, Tasks and Output (AGENTS.md) with LLM calls as bounded tasks; rule-based agents run with no model | 85% |
| operability | docs/mcp-server.md published by labsai; src/main/java/ai/labs/eddi/engine/mcp holds 96 tools, and McpToolContractTest asserts that count | 95% |
| effort | docs/configuration-reference.md, docs/white-labeling.md and docs/agent-config-authoring.md; eddi.branding.* and agent JSON change business behavior, not only deployment values | 80% |
| editions | LICENSE is Apache-2.0; eddi.solutions/pricing lists Proof of Concept, Professional and Enterprise plans, all 'Contact Us' | 85% |
| active | GitHub API: default-branch commit 2026-11-03 (1e8ecd3); release 6.6.0 on 2026-10-20; 389 stars, 129 forks, 84 open issues and pull requests | – |
| provenance | Repo dates from 2016 with human contributors, and now carries AGENTS.md, CLAUDE.md, .cursor, .amazonq and a ship-pr skill for coding agents | – |
| alternativeTo | The Builder's eddi.technology/compare page compares EDDI with Dify, n8n and Flowise among others | – |
| a2aRole | Server: RestA2AEndpoint and A2AWireFormat. Client: LlmConfiguration.Task.a2aAgents read by A2AToolProviderManager, which posts through OutboundHttp; covered by A2AToolProviderManagerDialectTest | – |
| reach | 80% |
Open questions
- Reach and A2A were read from docs and source; EDDI was not run, no MCP tool was called, and no live Agent Card was fetched. eddi.technology returns 404 for an Agent Card, and each deployment serves its own
- docs/a2a-protocol.md and docs/changelog/2026-10.md say the a2a-sdk 1.2.1 Python client was tested live against a jar; no test in scripts, src/test or .github uses that SDK, so the check cannot be reproduced from the repo
- EDDI_A2A_ENABLED and EDDI_A2A_BASE_URL are derived from the documented property names by the documented rule; no shipped compose or Helm file uses them
- Prices for the EDDI Solutions plans are not published
- formFactor could be web-app, since the Manager is built in; api was chosen because the Builder calls it middleware
- Compliance claims (GDPR, HIPAA, EU AI Act) and the 20,000+ tests badge are the Builder's and were not checked
Sources
- github.com/labsai/EDDI sourcing:agent-infrastructure:a2a-topic
- eddi.technology analysis:agent-infrastructure
- eddi.solutions/pricing/ analysis:agent-infrastructure
- github.com/labsai/EDDI/blob/main/docs/a2a-protocol.md analysis:agent-infrastructure