Observed since 20 Oct, 22:25 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Orchestrate multi-agent workflows with autonomous reasoning, parallelism, rate limiting, and LLM integration
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).
Workflow.from_file/from_dict/from_json).(ctx, inputs) -> output, sync or async.ctx.call_tool(...).Report.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())
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.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.
python3 examples/run_market.py
python3 tests/test_engine.py
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.
pypistats · 43 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-20 – 2026-10-20 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-19 – 2026-10-19 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-18 – 2026-10-18 | 5 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-17 – 2026-10-17 | 10 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-16 – 2026-10-16 | 3 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-15 – 2026-10-15 | 3 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-14 – 2026-10-14 | 3 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-13 – 2026-10-13 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-12 – 2026-10-12 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-10 – 2026-10-10 | 6 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-09 – 2026-10-09 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-08 – 2026-10-08 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-06 – 2026-10-06 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-10-02 – 2026-10-02 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-30 – 2026-09-30 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-28 – 2026-09-28 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-27 – 2026-09-27 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-26 – 2026-09-26 | 4 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-25 – 2026-09-25 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-24 – 2026-09-24 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-21 – 2026-09-21 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-20 – 2026-09-20 | 10 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-16 – 2026-09-16 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-14 – 2026-09-14 | 6 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-13 – 2026-09-13 | 8 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-09 – 2026-09-09 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-07 – 2026-09-07 | 5 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-06 – 2026-09-06 | 7 | 2026-10-21T11:29:09.0734050Z |
| 2026-09-01 – 2026-09-01 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-08-31 – 2026-08-31 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-08-28 – 2026-08-28 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-08-24 – 2026-08-24 | 4 | 2026-10-21T11:29:09.0734050Z |
| 2026-08-23 – 2026-08-23 | 3 | 2026-10-21T11:29:09.0734050Z |
| 2026-08-17 – 2026-08-17 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-08-14 – 2026-08-14 | 4 | 2026-10-21T11:29:09.0734050Z |
| 2026-08-09 – 2026-08-09 | 4 | 2026-10-21T11:29:09.0734050Z |
| 2026-08-04 – 2026-08-04 | 2 | 2026-10-21T11:29:09.0734050Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-07-31 – 2026-07-31 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-07-27 – 2026-07-27 | 3 | 2026-10-21T11:29:09.0734050Z |
| 2026-07-24 – 2026-07-24 | 1 | 2026-10-21T11:29:09.0734050Z |
| 2026-07-23 – 2026-07-23 | 10 | 2026-10-21T11:29:09.0734050Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.1.2 | 23 Jun 2026 | 10 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 22:25 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:28d07693de27486ceb7d7ff0a5e96e20211a2ffc0c85ec8a1e37e082be6358ee