Skip to content
Spec-driven multi-agent architecture

Declare it once.
Run it anywhere.

A pyagent-blueprint YAML manifest compiles unmodified onto five structurally different runtime engines — validated, diffed, and contract-tested before a single LLM call.

Get started → GitHub pip install pyagent-all
customer-support.yaml
agents:
  classifier: {provider: fast}
  billing:    {provider: primary}
  tech:       {provider: primary}
workflows:
  support:
    pattern: supervisor
    agents:
      classifier: classifier
      routes: {billing: billing, tech: tech}
pyagent Supervisor(classifier, routes={...}).run(input_)
langgraph StateGraph(...).add_node(...).add_edge(...)
crewai Agent(...) / Task(...) / Crew.kickoff_async()
openai_agents Agent(...) + Runner.run()
semantic_kernel Kernel() + ChatCompletionAgent.get_response()

Four independent pillars

Each one stands alone. None of them requires another.

Declare

Blueprint

Agents, workflows, providers, and governance in one reviewable YAML file — validate, diff, and test before running anything.

pyagent-blueprint Read more →
Execute

Execution & Routing

18 named orchestration patterns, difficulty-aware model routing, multi-provider fallback, and token budgets.

pyagent-patterns · router · providers · compress Read more →
Remember

Context & Memory

Three-tier memory with a trust-aware context ledger and PII redaction between agents.

pyagent-context Read more →
Observe

Observability

OpenTelemetry tracing, cost tracking, and a dashboard for replaying exactly what a run did.

pyagent-trace · pyagent-studio Read more →

Why not hand-write the orchestration instead

What a blueprint gets you that a script doesn't

Diff and review like infrastructure

pyagent-blueprint diff old.yaml new.yaml produces a semantic diff over the IR — not a text diff of hand-wired Python — so a reviewer sees exactly which agent, route, or SLA changed.

Governance is never silently dropped

Budgets, SLAs, memory tiers, and recovery policies are either honored by the runtime or surfaced as a stable diagnostic code like BUDGET_UNSUPPORTED — never silently ignored.

Validate before you run anything

Static analysis catches dangling references and schema violations before an LLM call is ever made.

Test without live API calls

pyagent-blueprint test checks contract conformance against a MockLLM, so CI validates a system's shape before spending a token.

Zero to running

Your first pattern, in Python — no YAML required

from pyagent_patterns.base import Agent, MockLLM
from pyagent_patterns.resolution import SelfReflection

pattern = SelfReflection(agent=Agent("coder", llm), max_rounds=3)
result = await pattern.run("Write an efficient Fibonacci function")