Skip to main content

orchestrator (Python reference SDK)

In-process workflow orchestration engine + authoring API. Zero required dependencies (stdlib asyncio); pyyaml is optional (for .yaml specs), anthropic optional (for the real LLM adapter).

Concepts

  • Workflow — a DAG of tasks loaded from a template (Workflow.from_file/from_dict/from_json).
  • Skill — a registered handler (ctx, inputs) -> output, sync or async.
  • Tool — a registered callable a skill invokes via ctx.call_tool(...).
  • Orchestrator — runs a workflow, enforcing concurrency + rate limits, and returns a Report.

Minimal usage

from orchestrator import Workflow, Orchestrator, Registry, MockLLM

reg = Registry()

@reg.tool("http.get")
def http_get(url):
    return {"url": url, "ok": True}

@reg.skill("market.fetch")
def fetch(ctx, inputs):
    ctx.call_tool("http.get", url=f"/prices/{inputs['ticker']}")
    ctx.record_decision("selected primary feed", rationale="lowest latency")
    return {"ticker": inputs["ticker"], "last": 199.4}

@reg.skill("llm.classify")
def classify(ctx, inputs):
    r = ctx.llm(messages=[{"role": "user", "content": inputs["text"]}], model="claude-opus-4-8")
    return r.text

wf = Workflow.from_file("../spec/examples/market-analysis.json")
report = Orchestrator(reg, llm=MockLLM()).run_sync(wf, inputs={"ticker": "AAPL"})
print(report.to_json())

The ctx (SkillContext) API

Member Purpose
ctx.inputs resolved task inputs
ctx.call_tool(name, **kwargs) invoke a registered tool
ctx.llm(messages, tools=, model=, **opts) call the configured LLM provider; usage is recorded
ctx.record_decision(summary, rationale=, data=) append a critical decision to the trace
ctx.log(msg), ctx.attempt, ctx.cancelled logging / retry attempt / cooperative cancel flag

Report

report.to_dict() / report.to_json() give: status, duration_ms, per-task {status, duration_ms, attempts, llm, decisions, error}, critical_path (bottleneck chain), totals (llm tokens, tool calls, retries), errors, and the resolved output.

Run

python3 examples/run_market.py
python3 tests/test_engine.py

Using a real LLM

from orchestrator import AnthropicProvider, Orchestrator
orch = Orchestrator(reg, llm=AnthropicProvider(model="claude-opus-4-8"))  # needs ANTHROPIC_API_KEY + `pip install anthropic`

Confirm current Claude model IDs/limits from the Claude API reference before pinning them.

Metadata

Release files for agentic-workflow-orchestrator 1.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agentic-workflow-orchestrator 1.1.2
File Size Uploaded Provenance
agentic_workflow_orchestrator-1.1.2.tar.gz 2.2 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for agentic-workflow-orchestrator 1.1.2
File Interpreter ABI Platform
agentic_workflow_orchestrator-1.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 4.3 MB

Release files / agentic_workflow_orchestrator-1.1.2.tar.gz

Download URL agentic_workflow_orchestrator-1.1.2.tar.gz
Size 2.2 MB
Tags Source
SHA-256 checksum
How to use checksums
599372e9aed13ef6109c408cbb356a6535fea5fc0a43fb60d59194291c145f9f
BLAKE2b-256 checksum
How to use checksums
261d3b0c9ed3004167f6d067563bd7864ebde3adf253b995545a13687a409a5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / agentic_workflow_orchestrator-1.1.2-py3-none-any.whl

Download URL agentic_workflow_orchestrator-1.1.2-py3-none-any.whl
Size 2.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
f58089c607f0a4de9322494ffa22fdfc66e919654f8c5608b2f64406da0edaf1
BLAKE2b-256 checksum
How to use checksums
a289a52429aa8edce6199c0f048b4b483e11f3399ede8c5faf35eb3ff443a260
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Security for agentic-workflow-orchestrator 1.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page