๐ OmniDaemon
December 15, 2025 ยท View on GitHub
Universal Event-Driven Runtime Engine for AI Agents
Run any AI agent. Any framework. One event-driven control plane.
Created by Abiola Adeshina โข From the team behind OmniCore Agent
๐ Docs โข ๐ก Examples โข ๐๏ธ Architecture โข ๐ Quick Start
๐ฏ What is OmniDaemon?
"Kubernetes for AI Agents" - A production-ready runtime that makes AI agents autonomous, observable, and fault-tolerant.
OmniDaemon runs each agent in its own isolated process (like containers), managed by an Agent Supervisor. This means your agents get production-grade reliability out of the box: process isolation, auto-restart, crash protection, and event-driven communication.
In 5 seconds:
- ๐ค Run any AI agent (OmniCoreAgent, Google ADK, LangChain, CrewAI, AutoGen, custom)
- ๐จ Event-driven (agents react to events, not HTTP requests)
- ๐ Process isolation (one agent crash won't kill others)
- ๐ Auto-recovery (supervisors restart crashed agents)
- ๐ Production-ready (retries, DLQ, metrics, scaling built-in)
๐ก Why OmniDaemon exists: Most AI frameworks run everything in a single Python process. One crash kills your entire system. OmniDaemon solves this with process isolation and event-driven architecture. Read the full story โ
๐ญ Agent Supervisor: Production-Grade Process Isolation
The Agent Supervisor is OmniDaemon's core innovation. It manages each agent in an isolated process with automatic lifecycle management, error recovery, and health monitoring.
Benefits
| Feature | What You Get |
|---|---|
| ๐ Fault Isolation | Agent A crashes? Agent B keeps running. |
| ๐ Auto-Recovery | Crashed agents restart automatically. |
| ๐พ Resource Safety | Clean memory/CPU boundaries per agent. |
| ๐ฏ Process Per Agent | Like Kubernetes pods for AI agents. |
| โค๏ธ Health Monitoring | Heartbeat checks, timeout handling. |
| ๐ Observability | Metrics, logs, state tracking built-in. |
Lifecycle State Machine
stateDiagram-v2
[*] --> IDLE: Created
IDLE --> STARTING: start()
STARTING --> RUNNING: Process ready
STARTING --> CRASHED: Start failed
RUNNING --> STOPPING: stop()
RUNNING --> CRASHED: Process died
STOPPING --> STOPPED: Graceful shutdown
CRASHED --> STARTING: Auto-restart
CRASHED --> STOPPED: Max retries exceeded
STOPPED --> [*]
๐ Deep dive: Agent Supervisor Architecture โ
๐ Quick Start
Get OmniDaemon running in 5 minutes with production-ready process isolation:
1. Install Redis (Event Bus)
# Using Docker (easiest)
docker run -d -p 6379:6379 --name redis redis:latest
# Verify
redis-cli ping # Should return: PONG
2. Install OmniDaemon
# Using uv (recommended - 10-100x faster)
uv add omnidaemon
# Or using pip
pip install omnidaemon
3. Create Your Agent
# Create agent directory
mkdir my_first_agent
touch my_first_agent/__init__.py
Create agent (my_first_agent/agent.py):
def greeter_callback(message: dict):
"""Your agent runs here - in an isolated process!"""
name = message.get("content", {}).get("name", "stranger")
return {"reply": f"Hello, {name}! ๐"}
Create runner (agent_runner.py):
import asyncio
from omnidaemon import OmniDaemonSDK, AgentConfig
from omnidaemon.supervisor import create_supervisor_from_directory
sdk = OmniDaemonSDK()
async def main():
# Create supervisor (runs agent in separate process)
supervisor = await create_supervisor_from_directory(
agent_name="greeter",
agent_dir="./my_first_agent",
callback_function="agent.greeter_callback"
)
await sdk.register_agent(
agent_config=AgentConfig(topic="greet.user"),
callback=supervisor.handle_event
)
await sdk.start()
print("๐ง Agent running. Press Ctrl+C to stop.")
try:
while True:
await asyncio.sleep(1)
except KeyboardInterrupt:
await sdk.shutdown()
if __name__ == "__main__":
asyncio.run(main())
4. Run It!
python agent_runner.py
๐ Your AI agent is now running in an isolated process with auto-restart!
๐ Next steps: Full Tutorial โ | Complete Examples โ
๐ก Examples
See production-ready implementations in the examples/ directory:
Featured Examples
- Multiple Agents with Supervisors - Run multiple supervised agents
- Google ADK Integration - Full ADK agent with MCP tools
- Content Moderation - Multi-agent pipeline
- FastAPI Integration - HTTP + event-driven hybrid
Each example shows real-world patterns you'll use in production.
๐ Documentation
Core Concepts
- Why OmniDaemon? - The single process trap
- Event-Driven Architecture - Why EDA for AI agents
- Key Features - Deep dive into capabilities
Architecture
- Agent Supervisor - Process isolation & lifecycle
- System Overview - How everything fits together
How-To Guides
- Common Patterns - Production recipes
- Monitoring & Metrics - Observability
- Multi-Agent Systems - Coordination patterns
API Reference
- Python SDK - Complete SDK docs
- CLI Reference - Command-line tools
๐ฏ When to Use OmniDaemon
โ Perfect For
- Background AI Agents - Autonomous agents reacting to events
- Event-Driven Workflows - Multi-step pipelines coordinated through events
- Distributed Multi-Agent Systems - Agents across different servers/runtimes
- Long-Running AI Tasks - Workloads that shouldn't block client requests
- Enterprise AI Ops - Production systems with retries, logs, monitoring
โ Overkill For
- Simple HTTP APIs - Use FastAPI/Flask instead
- Pure Real-Time Chat Only - WebSockets/SSE alone are simpler
- Single-Shot Scripts - A basic Python script is sufficient
๐ vs Alternatives
| Tool | Use Case | vs OmniDaemon |
|---|---|---|
| Celery | Task queues | โ Not AI-first, complex setup, no agent abstraction |
| AWS Lambda | Serverless functions | โ Cold starts, time limits, vendor lock-in |
| Temporal | Workflow engine | โ Heavy, complex, not AI-optimized |
| Airflow | DAG orchestration | โ Batch-oriented, not real-time events |
| OmniDaemon | AI Agent Runtime | โ AI-first, event-driven, any framework, production-ready |
๐ Pluggable Architecture
Switch backends by changing environment variables - zero code changes!
# Event Bus
EVENT_BUS_TYPE=redis_stream + REDIS_URL=redis://localhost:6379 # Current โ
EVENT_BUS_TYPE=kafka + KAFKA_SERVERS=localhost:9092 # Coming soon ๐ง
EVENT_BUS_TYPE=rabbitmq + RABBITMQ_URL=amqp://localhost # Coming soon ๐ง
# Storage
STORAGE_BACKEND=redis + REDIS_URL=redis://localhost:6379 # Production โ
STORAGE_BACKEND=json + JSON_STORAGE_DIR=./data # Development โ
STORAGE_BACKEND=postgresql + POSTGRES_URL=postgresql://... # Coming soon ๐ง
STORAGE_BACKEND=mongodb + MONGODB_URI=mongodb://... # Coming soon ๐ง
๐ Resources
- ๐ Full Documentation - Complete guides and API reference
- ๐ก Examples - Production-ready code samples
- ๐๏ธ Architecture - Deep dive into system design
- ๐ค Community - Get help and contribute
- ๐ Issues - Report bugs or request features
๐ Features
| Feature | Status |
|---|---|
| ๐ Process Isolation (Agent Supervisor) | โ Production |
| ๐จ Event-Driven Architecture | โ Production |
| ๐ Auto-Retry & DLQ | โ Production |
| ๐ Metrics & Monitoring | โ Production |
| ๐๏ธ CLI & HTTP API | โ Production |
| ๐ Redis Event Bus | โ Production |
| ๐พ Redis Storage | โ Production |
| ๐ JSON Storage | โ Production |
| โก Kafka Event Bus | ๐ง Coming Soon |
| ๐ฐ RabbitMQ Event Bus | ๐ง Coming Soon |
| ๐๏ธ PostgreSQL Storage | ๐ง Coming Soon |
| ๐ MongoDB Storage | ๐ง Coming Soon |
๐จโ๐ป About
Created by Abiola Adeshina and the OmniDaemon Team
From the creators of OmniCore Agent โ building the future of event-driven AI systems
๐ License
MIT License - see LICENSE file for details
โญ Star on GitHub โข ๐ Report Bug โข ๐ก Request Feature