Skip to main content

Control plane for AI agents

Project description

๐Ÿ”ฅ OpenAgentOrchestrator (OAO)

The Control Plane for AI Agents.

OpenAgentOrchestrator (OAO) is a Deterministic AI Execution Runtime (DAER) designed to bring infrastructure-grade governance, resilience, and observability to AI agents.

License: MIT Python Build Enterprise Hardened

While most agent frameworks focus on building agents, OAO focuses on controlling them.

OAO acts as a control plane on top of existing AI frameworks, enabling safe, measurable, and scalable execution of AI agents.


๐Ÿ“š Technical Resources via OAO

We are building a library of technical content to help you engineer reliable agents.

๐Ÿ“ Technical Blogs

๐ŸŽฎ Demos


๐Ÿ›ก๏ธ Fault Tolerance & Persistence

๐Ÿ’“ Robust Distributed Scheduler

  • Crash Recovery: Automatically detects dead workers and re-queues their jobs.
  • Heartbeats: Workers report liveness to prevent silent failures.
  • Safe Claiming: Uses RPOPLPUSH to ensure zero job loss during assignment.
  • Retries: Configurable exponential backoff for transient failures.

๐Ÿ’พ Durable Event Sourcing

  • State Reconstruction: Derives runtime state from immutable event logs for exactly-once correctness.
  • Side-Effect Idempotency: Automated SHA-256 tool-call hashing prevents duplicate external actions during retries.
  • Resume-on-Failure: Crashed workflows resume at the first incomplete step; completed work is skipped.
  • Auditable History: Full execution trace stored in persistent storage (Redis or In-Memory).
  • Time-Travel Debugging: Fork and replay past executions to reproduce bugs.

๐Ÿš€ Why OAO?

Modern AI agent frameworks lack:

  • โŒ Deterministic lifecycle control
  • โŒ Strict policy enforcement
  • โŒ Tool-level governance
  • โŒ Execution observability
  • โŒ Parallel scheduling control
  • โŒ Infrastructure-grade architecture

OAO solves this.


๐Ÿง  Core Philosophy

OAO separates:

Agent Intelligence  โ‰   Agent Governance

Frameworks build intelligence.
OAO governs execution.

Think of OAO as:

Kubernetes for AI Agents.


โœจ Features

๐Ÿงญ Deterministic Lifecycle Engine

Strict execution flow:

INIT โ†’ PLAN โ†’ EXECUTE โ†’ REVIEW โ†’ TERMINATE

No uncontrolled recursion.
No hidden state transitions.


๐Ÿ” Policy Enforcement

Built-in StrictPolicy enforces:

  • Maximum execution steps
  • Maximum token usage
  • Maximum tool calls
  • Maximum tool calls
  • Execution timeouts

Violations trigger PolicyViolation events and halt execution.

Agents cannot bypass governance rules.


๐Ÿ”Œ Adapter Architecture

Pluggable adapter system allows integration with external frameworks.

Currently supported:

  • LangChain Adapter: With deep callback integration.
  • LangGraph Adapter: Execute stateful graphs with managed telemetry.
  • CrewAI Adapter: Kick off Crews or run individual Agents natively.
  • AutoGen Adapter: Wrap conversation/initiations between ConversableAgents.
  • Agno AI Adapter: Run Agno/Phidata agents with metric tracking.
  • LlamaIndex Adapter: Wrap query engines and LlamaIndex agents.

Future roadmap:

  • Enterprise custom adapters

Adapters are fully decoupled from orchestration core.


๐Ÿ”„ Async Execution Engine

Supports both:

  • Synchronous execution (run)
  • Asynchronous execution (run_async)

Ready for scalable, high-throughput workloads.


๐Ÿ‘ฅ Multi-Agent Orchestration

Run multiple agents under centralized governance:

  • Independent lifecycle control
  • Independent execution reports
  • Controlled scheduling layer

๐Ÿ–ฅ๏ธ Observability Dashboard

Real-time visibility into the Deterministic AI Execution Runtime (DAER):

  • Live Event Bridge: Stream execution events via WebSockets (/ws/events).
  • Trace Timeline: Gantt-chart visualization of tool calls and step durations.
  • Governance Watch: Real-time tracking of token consumption and budget violations.
  • Scenario Simulation: Internal hooks for testing and fine-tuning agent behavior.

โšก Parallel Agent Scheduler

Built-in concurrency management:

  • Configurable max concurrency
  • Async worker pool
  • Safe task isolation
  • Error containment

๐ŸŒ FastAPI Server (OAO as Service)

Expose OAO as an HTTP backend:

  • Single-agent endpoint
  • Multi-agent endpoint
  • Swagger documentation
  • Production-ready API layer

๐Ÿ“Š Structured Execution Reports

Every execution generates:

  • Unique execution ID
  • Agent name
  • Status (SUCCESS / FAILED)
  • Total steps
  • Token usage
  • Tool usage
  • Execution time
  • State history
  • Final output

Designed for observability and monitoring.


๐ŸŽ› Event Hook System

OAO emits structured lifecycle events:

  • STATE_ENTER
  • TOOL_CALL
  • POLICY_VIOLATION
  • EXECUTION_COMPLETE

Hooks enable:

  • Logging
  • Metrics
  • Monitoring
  • External integrations

๐Ÿ“ฆ Installation

Install from PyPI:

pip install open-agent-orchestrator

[!NOTE] By default, Orchestrator runs locally in memory out-of-the-box with zero Redis connection or package dependencies required.

Optional Dependencies

Install only the adapters you need to keep dependencies lightweight:

# Install with API server and specific framework support
pip install "open-agent-orchestrator[server,langchain,langgraph,crewai,autogen,agno,llamaindex]"

Or install locally:

pip install -e ".[all]"

โšก Quick Start (Single Agent)

from oao import Orchestrator, StrictPolicy

class DummyAgent:
    def invoke(self, task):
        return {"output": f"Processed: {task}"}

policy = StrictPolicy(max_steps=5)

orch = Orchestrator(policy=policy)

report = orch.run(
    agent=DummyAgent(),
    task="Explain AI orchestration",
)

print(report.json(indent=2))

โšก Async Execution

import asyncio
from oao import Orchestrator

class DummyAgent:
    def invoke(self, task):
        return {"output": f"Processed: {task}"}

async def main():
    orch = Orchestrator()
    report = await orch.run_async(
        agent=DummyAgent(),
        task="Async execution demo"
    )
    print(report.json(indent=2))

asyncio.run(main())

๐Ÿ‘ฅ Multi-Agent Example

import asyncio
from oao.runtime.multi_agent import MultiAgentOrchestrator

class DummyAgent:
    def __init__(self, name):
        self.name = name

    def invoke(self, task):
        return {"output": f"{self.name} processed: {task}"}

agents = {
    "researcher": DummyAgent("Researcher"),
    "critic": DummyAgent("Critic"),
}

async def main():
    multi = MultiAgentOrchestrator(max_concurrency=2)

    results = await multi.run_multi_async(
        agents=agents,
        task="Discuss AI governance"
    )

    for name, report in results.items():
        print(name, report.status)

asyncio.run(main())

๐Ÿ•ธ๏ธ DAG Orchestration

Execute complex workflows with dependencies and automatic parallelism.

from oao.runtime.dag import TaskGraph, GraphExecutor, TaskNode

# Define graph
graph = TaskGraph()
graph.add_node(TaskNode("research", agent_researcher, "Research topic X"))
graph.add_node(TaskNode("draft", agent_writer, "Draft article", dependencies={"research"}))
graph.add_node(TaskNode("critique", agent_critic, "Critique draft", dependencies={"research"}))
graph.add_node(TaskNode("polisher", agent_polisher, "Improve draft", dependencies={"critique", "draft"}))

# Execute
executor = GraphExecutor(graph)
results = executor.execute("Write a blog post about AI")

Features:

  • Topological Sorting: Ensures corect execution order.
  • Cycle Detection: Prevents infinite loops.
  • Parallel Execution: Independent branches run concurrently.
  • Context Passing: Results flow from dependencies to dependents.

๐ŸŒ Run as API Service

Start server:

# Ensure server dependencies are installed
pip install "open-agent-orchestrator[server]"

uvicorn oao.server:app --reload

Open:

http://127.0.0.1:8000/docs

Available endpoints:

  • POST /run
  • POST /run-multi

๐Ÿ“Š Observability (Metrics & Tracing)

OAO provides deep visibility into your agent fleets.

Prometheus Metrics

Exposed at /metrics:

  • oao_executions_total: Execution counter (status, agent_type)
  • oao_execution_duration_seconds: Histogram of execution time
  • oao_active_agents: Gauge of concurrent agents
  • oao_token_usage_total: Token consumption counter
  • oao_queue_size: Distributed queue depth

OpenTelemetry Tracing

Full distributed tracing for workflows. Configure via OTEL_EXPORTER_OTLP_ENDPOINT.

  • Root Spans: orchestrator.run, dag.execute
  • Child Spans: oao.step.N, tool.execute, dag.schedule_task
  • Context Propagation: Trace IDs flow across async tasks and Redis queues.

๐Ÿ”Œ Enterprise Plugin System

Extend OAO without modifying core code. Built on a Secure Plugin Interface.

1. Create a Plugin (my_plugin.py)

Plugins must implement PluginInterface:

from oao.plugins.base import PluginInterface
from oao.policy.registry import PolicyRegistry

class MyPlugin(PluginInterface):
    @property
    def name(self): return "my_security_plugin"
    
    @property
    def version(self): return "1.0.0"

    def activate(self):
        # Register custom components safely
        PolicyRegistry.register("custom_policy", MyCustomPolicy)
        
    def deactivate(self):
        pass

2. Load the Plugin

from oao.plugins.loader import PluginLoader

# Verifies signature and version before loading
PluginLoader.load("path/to/my_plugin.py")

Supports custom:

  • Policies (Governance)
  • Schedulers (Execution strategy)
  • Event Listeners (Logging/Tracing)
  • Adapters (Framework support)

๐Ÿ— Architecture Overview

Client / CLI / Dashboard
            โ†“
        FastAPI Server
            โ†“
     OAO Orchestrator Core
            โ†“
   Adapter โ†’ External Framework
  • Lifecycle State Machine
  • Policy Engine (Stop-Loss Governance)
  • Adapter Registry (LangChain, LangGraph)
  • Hash-Based Tool Interception Layer
  • Append-Only Event Bus
  • Execution Report Generator
  • Parallel Scheduler
  • Multi-Agent Coordinator

See the Detailed Architecture Guide for Mermaid diagrams and recovery flows.


๐Ÿ”’ Governance Model

OAO enforces:

  • Deterministic state transitions
  • Token budgeting
  • Tool access limits
  • Execution boundaries
  • Timeout enforcement

Agents cannot override governance rules.


๐Ÿงช Project Structure

oao/
 โ”œโ”€โ”€ runtime/
 โ”œโ”€โ”€ adapters/
 โ”œโ”€โ”€ policy/
 โ”œโ”€โ”€ protocol/
 โ”œโ”€โ”€ server.py
 โ”œโ”€โ”€ cli.py

๐Ÿ“ˆ Roadmap

  • Deterministic lifecycle engine
  • Strict policy enforcement
  • Adapter abstraction
  • Async execution engine
  • Multi-agent orchestration
  • Parallel scheduler
  • FastAPI service
  • Web dashboard
  • Distributed scheduler (Redis)
  • DAG-based orchestration
  • Metrics exporter
  • Enterprise plugin ecosystem
  • Crash Recovery & Replay
  • Tool Idempotency Wrapper
  • Event-Sourced Determinism (DAER)
  • OpenTelemetry Tracing
  • LangGraph Support
  • CrewAI Support
  • AutoGen Support
  • Agno AI (Phidata) Support
  • LlamaIndex Support

๐Ÿค Contributing

Contributions are welcome.

Guidelines:

  • Maintain clean architecture principles
  • Keep lifecycle deterministic
  • Preserve adapter abstraction
  • Add tests for new modules

๐Ÿ“œ License

MIT License


๐Ÿง  Vision

OAO aims to become:

The Infrastructure Layer for AI Agents.

As AI agents become more autonomous, governance becomes essential.

OAO ensures agents remain:

  • Observable
  • Measurable
  • Controllable
  • Scalable
  • Safe

โญ Support

If you find OAO useful:

  • Star the repository
  • Contribute adapters
  • Build plugins
  • Share with the AI community

Letโ€™s define the control plane for AI systems.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

open_agent_orchestrator-1.1.2.tar.gz (74.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

open_agent_orchestrator-1.1.2-py3-none-any.whl (64.9 kB view details)

Uploaded Python 3

File details

Details for the file open_agent_orchestrator-1.1.2.tar.gz.

File metadata

  • Download URL: open_agent_orchestrator-1.1.2.tar.gz
  • Upload date:
  • Size: 74.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for open_agent_orchestrator-1.1.2.tar.gz
Algorithm Hash digest
SHA256 1a49d3e1ef8a28b4b8ab4183fe415be6d48e48d04fae6d2c91d59b6bdc39965c
MD5 ca74caea8f2f93b4a6ee0121b7cec6d4
BLAKE2b-256 419a200a3c1adfce6f185d845d89b9c9734b171b1592692213c9544cb01edefa

See more details on using hashes here.

File details

Details for the file open_agent_orchestrator-1.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for open_agent_orchestrator-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a8e35fa6e3f0ebc35893f46b1a037f7dd48de4dbd96ed31804def1dfe90e569a
MD5 0a66daec6acb6f2e91ce27489814c4ba
BLAKE2b-256 9e283b410d6c826d934a1ce9ee137741bcb3368a0005012f3feca499a828f426

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page