AI Multi-Agent Orchestration System with tiered architecture for complex task decomposition, autonomous collaboration, and emergent problem-solving
Eldric Swarm is an AI multi-agent orchestration system that enables complex task decomposition and autonomous collaboration between specialized AI agents. Unlike single-agent systems, Swarm breaks down complex goals into discrete tasks and assigns them to specialized agents that work together, share discoveries, and adapt their approach based on emergent patterns.
The system uses a tiered architecture that scales from local development to global enterprise deployments, with intelligent routing, shared memory, and collective decision-making capabilities.
Each agent is specialized for specific task types with constrained tool access for safety and efficiency.
Beyond agent swarms, Eldric supports Swarm LLM — multiple LLM instances reasoning together as a collective intelligence. Instead of agents using tools, multiple models collaborate through structured protocols to produce higher-quality answers than any single model.
Auto-Strategy Selection
The router automatically picks the optimal strategy based on query content. “Kafka vs RabbitMQ?” triggers debate, “Write a migration plan” triggers critique, “Is this thread-safe?” triggers vote. Override with ensemble_strategy in the API.
| Agent Swarm | LLM Swarm | |
|---|---|---|
| Mechanism | Agents + tools (bash, RAG, web) | Multiple LLMs reasoning together |
| Best for | Tasks needing actions | Pure reasoning & decisions |
| Example | “Deploy this to staging” | “Kafka vs RabbitMQ?” |
| Orchestrator | Swarm Controller (port 8885) | Router (port 8881) |
| Can combine | Yes — an agent can invoke an LLM swarm debate as a reasoning step | |
curl -X POST http://router:8881/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"ensemble_mode": true,
"ensemble_strategy": "debate",
"ensemble_models": ["llama3.1:8b", "qwen3.5:9b", "eldric:8b"],
"ensemble_rounds": 3,
"messages": [{"role": "user", "content": "Should we use Kafka or RabbitMQ?"}]
}'
Omit ensemble_strategy for automatic selection based on query content.
The Swarm system monitors agent interactions and detects emergent patterns to optimize performance and prevent issues.
The Swarm Controller exposes three API servers for different purposes.
Goal submission, plan approval, swarm management
Agent invocation (UAP), management, tools listing
Dashboard, client registration, simplified endpoints
# Start the swarm daemon
./eldric-swarmd --bind 0.0.0.0 --swarm-port 8885 --agent-port 8886 --web-port 8887
# With parent controller (tiered deployment)
./eldric-swarmd --parent http://regional-controller:8885 --tier local
curl -X POST http://localhost:8885/api/v1/goals \
-H "Content-Type: application/json" \
-d '{
"description": "Implement user authentication with JWT tokens",
"context": "Express.js backend, PostgreSQL database",
"constraints": ["Use bcrypt for password hashing", "Token expiry: 24 hours"],
"mode": "supervised",
"max_agents": 5
}'
# Get the generated plan
curl http://localhost:8885/api/v1/goals/goal-abc123
# Approve and start execution
curl -X POST http://localhost:8885/api/v1/goals/goal-abc123/approve
The Swarm Controller can delegate agentic RAG tasks to Agent Workers for advanced reasoning capabilities. Agent Workers provide iterative retrieval (ReAct pattern), query decomposition, and multi-agent execution that complement the Swarm's task orchestration.
Agent Workers are configured in swarm.conf via the agent_worker_urls array. Multiple workers can be registered for load balancing and failover.
When multiple Agent Workers are registered, Swarm auto-selects the best worker based on health status and current load using a least-connections strategy.
Only healthy workers are considered for task delegation. Use the refresh endpoint to update health status across all registered workers.
{
"swarm_api_port": 8885,
"agent_api_port": 8886,
"web_api_port": 8887,
"agent_worker_urls": [
"http://localhost:8893",
"http://agentworker2:8893"
],
"auto_discover_agent_workers": false,
"controller_url": "http://localhost:8880"
}
| Endpoint | Method | Description |
|---|---|---|
/api/v1/agent-workers | GET | List registered Agent Workers |
/api/v1/agent-workers | POST | Register new Agent Worker |
/api/v1/agent-workers/chat | POST | Chat with auto-selected worker |
/api/v1/agent-workers/{id}/chat | POST | Chat with specific worker |
/api/v1/agent-workers/refresh | POST | Refresh health status |
/api/v1/agent-workers/{id} | DELETE | Unregister Agent Worker |
# List registered Agent Workers curl http://localhost:8887/api/v1/agent-workers # Register a new Agent Worker curl -X POST http://localhost:8887/api/v1/agent-workers \ -H "Content-Type: application/json" \ -d '{"url": "http://agentworker:8893"}' # Chat via Swarm (auto-selects healthy worker) curl -X POST http://localhost:8887/api/v1/agent-workers/chat \ -H "Content-Type: application/json" \ -d '{ "prompt": "Analyze the codebase architecture", "knowledge_bases": ["kb-codebase"], "max_iterations": 10 }' # Refresh health status of all workers curl -X POST http://localhost:8887/api/v1/agent-workers/refresh