From 47660261d30dabc589158f8cc44a393483ae5646 Mon Sep 17 00:00:00 2001 From: Cristian Pufu Date: Mon, 9 Feb 2026 17:06:05 +0200 Subject: [PATCH] feat: add orchestrator-agent sample and update benchmarks Multi-agent orchestrator with HR, procurement, and policy sub-agents, each with their own tool loops. Adds sample graph, screenshot, and benchmark table entry. Co-Authored-By: Claude Opus 4.6 --- README.md | 4 +- samples/orchestrator-agent/graph.json | 167 ++++++++++++++++++++++++++ screenshots/orchestrator-agent.png | Bin 0 -> 44799 bytes scripts/generate_screenshots.py | 5 + 4 files changed, 175 insertions(+), 1 deletion(-) create mode 100644 samples/orchestrator-agent/graph.json create mode 100644 screenshots/orchestrator-agent.png diff --git a/README.md b/README.md index 0484652..ec98a56 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,7 @@ graphtty reads a simple JSON format: ## Benchmarks -graphtty uses a custom Sugiyama-style layout engine and optimized canvas operations for fast rendering. Benchmarks across all 10 sample graphs (50 iterations each, Python 3.11): +graphtty uses a custom Sugiyama-style layout engine and optimized canvas operations for fast rendering. Benchmarks across all 12 sample graphs (50 iterations each, Python 3.11): | Sample | Avg (ms) | Ops/sec | |---|---:|---:| @@ -133,8 +133,10 @@ graphtty uses a custom Sugiyama-style layout engine and optimized canvas operati | book-writer-agent (6 nodes) | 0.25 | 4,083 | | deep-agent (7 nodes) | 0.32 | 3,144 | | function-agent (8 nodes) | 0.37 | 2,686 | +| travel-rag-agent (8 nodes) | 0.41 | 2,451 | | workflow-agent (11 nodes) | 0.49 | 2,060 | | world-map (15 nodes) | 0.61 | 1,651 | +| orchestrator-agent (9 nodes) | 0.64 | 1,561 | | rag-pipeline (10 nodes) | 0.70 | 1,427 | | supervisor-agent (7+subs) | 0.80 | 1,250 | | etl-pipeline (12 nodes) | 0.82 | 1,225 | diff --git a/samples/orchestrator-agent/graph.json b/samples/orchestrator-agent/graph.json new file mode 100644 index 0000000..1543d41 --- /dev/null +++ b/samples/orchestrator-agent/graph.json @@ -0,0 +1,167 @@ +{ + "nodes": [ + { + "id": "__start__", + "name": "__start__", + "type": "__start__", + "subgraph": null, + "metadata": null + }, + { + "id": "orchestrator_agent", + "name": "orchestrator_agent", + "type": "node", + "subgraph": null, + "metadata": null + }, + { + "id": "hr_agent", + "name": "hr_agent", + "type": "node", + "subgraph": null, + "metadata": null + }, + { + "id": "hr_agent_tools", + "name": "tools", + "type": "tool", + "subgraph": null, + "metadata": { + "tool_names": [ + "check_pto_balance", + "submit_leave_request", + "check_leave_request_status", + "check_employee_benefits", + "get_salary_info", + "schedule_hr_meeting" + ], + "tool_count": 6 + } + }, + { + "id": "procurement_agent", + "name": "procurement_agent", + "type": "node", + "subgraph": null, + "metadata": null + }, + { + "id": "procurement_agent_tools", + "name": "tools", + "type": "tool", + "subgraph": null, + "metadata": { + "tool_names": [ + "check_budget_availability", + "get_vendor_information", + "create_purchase_order", + "track_order_status", + "request_budget_reallocation", + "search_preferred_vendors" + ], + "tool_count": 6 + } + }, + { + "id": "policy_agent", + "name": "policy_agent", + "type": "node", + "subgraph": null, + "metadata": null + }, + { + "id": "policy_agent_tools", + "name": "tools", + "type": "tool", + "subgraph": null, + "metadata": { + "tool_names": [ + "get_company_policy", + "check_compliance_status", + "request_policy_clarification", + "search_policy_documents" + ], + "tool_count": 4 + } + }, + { + "id": "__end__", + "name": "__end__", + "type": "__end__", + "subgraph": null, + "metadata": null + } + ], + "edges": [ + { + "source": "hr_agent", + "target": "hr_agent_tools", + "label": null + }, + { + "source": "hr_agent_tools", + "target": "hr_agent", + "label": null + }, + { + "source": "orchestrator_agent", + "target": "hr_agent", + "label": null + }, + { + "source": "hr_agent", + "target": "orchestrator_agent", + "label": null + }, + { + "source": "procurement_agent", + "target": "procurement_agent_tools", + "label": null + }, + { + "source": "procurement_agent_tools", + "target": "procurement_agent", + "label": null + }, + { + "source": "orchestrator_agent", + "target": "procurement_agent", + "label": null + }, + { + "source": "procurement_agent", + "target": "orchestrator_agent", + "label": null + }, + { + "source": "policy_agent", + "target": "policy_agent_tools", + "label": null + }, + { + "source": "policy_agent_tools", + "target": "policy_agent", + "label": null + }, + { + "source": "orchestrator_agent", + "target": "policy_agent", + "label": null + }, + { + "source": "policy_agent", + "target": "orchestrator_agent", + "label": null + }, + { + "source": "__start__", + "target": "orchestrator_agent", + "label": "input" + }, + { + "source": "orchestrator_agent", + "target": "__end__", + "label": "output" + } + ] +} diff --git a/screenshots/orchestrator-agent.png b/screenshots/orchestrator-agent.png new file mode 100644 index 0000000000000000000000000000000000000000..e751d34410c3d978e2a99b22709b467066d4ab76 GIT binary patch literal 44799 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