Orchestration Engine — Atomizer HQ
Multi-instance synchronous delegation, workflow pipelines, and inter-agent coordination.
Overview
The Orchestration Engine enables structured communication between 8 independent OpenClaw agent instances running on Discord. It replaces fire-and-forget delegation with synchronous handoffs, chaining, validation, and reusable YAML workflows.
Architecture
┌─────────────────────────────────────────────────┐
│ LAYER 3: WORKFLOWS │
│ YAML multi-step pipelines │
│ (workflow.py — parallel, sequential, gates) │
├─────────────────────────────────────────────────┤
│ LAYER 2: SMART ROUTING │
│ Capability registry + channel context │
│ (AGENTS_REGISTRY.json + fetch-channel-context) │
├─────────────────────────────────────────────────┤
│ LAYER 1: ORCHESTRATION CORE │
│ Synchronous delegation + result return │
│ (orchestrate.py — inotify + handoffs) │
├─────────────────────────────────────────────────┤
│ EXISTING INFRASTRUCTURE │
│ 8 OpenClaw instances, hooks API, shared fs │
└─────────────────────────────────────────────────┘
Files
| File | Purpose |
|---|---|
orchestrate.py |
Core delegation engine — sends tasks, waits for handoff files via inotify |
orchestrate.sh |
Thin bash wrapper for orchestrate.py |
workflow.py |
YAML workflow engine — parses, resolves deps, executes pipelines |
workflow.sh |
Thin bash wrapper for workflow.py |
fetch-channel-context.sh |
Fetches Discord channel history as formatted context |
metrics.py |
Analyzes handoff files and workflow runs for stats |
metrics.sh |
Thin bash wrapper for metrics.py |
Usage
Single delegation
# Synchronous — blocks until agent responds
python3 orchestrate.py webster "Find CTE of Zerodur" --caller manager --timeout 120
# With channel context
python3 orchestrate.py tech-lead "Review thermal margins" --caller manager --channel-context technical --channel-messages 20
# With validation
python3 orchestrate.py webster "Research ULE properties" --caller manager --validate --timeout 120
Workflow execution
# Dry-run (validate without executing)
python3 workflow.py quick-research --input query="CTE of ULE" --caller manager --dry-run
# Live run
python3 workflow.py quick-research --input query="CTE of ULE" --caller manager --non-interactive
# Material trade study (3-step pipeline)
python3 workflow.py material-trade-study \
--input materials="Zerodur, Clearceram-Z HS, ULE" \
--input requirements="CTE < 0.01 ppm/K" \
--caller manager --non-interactive
Metrics
python3 metrics.py text # Human-readable
python3 metrics.py json # JSON output
Handoff Protocol
Agents write structured JSON to /home/papa/atomizer/handoffs/{runId}.json:
{
"schemaVersion": "1.0",
"runId": "orch-...",
"agent": "webster",
"status": "complete|partial|blocked|failed",
"result": "...",
"artifacts": [],
"confidence": "high|medium|low",
"notes": "...",
"timestamp": "ISO-8601"
}
ACL Matrix
| Caller | Can delegate to |
|---|---|
| manager | All agents |
| tech-lead | webster, nx-expert, study-builder, secretary |
| optimizer | webster, study-builder, secretary |
| Others | Cannot sub-delegate |
Workflow Templates
quick-research.yaml— 2 steps: Webster research → Tech-Lead validationmaterial-trade-study.yaml— 3 steps: Webster research → Tech-Lead evaluation → Auditor reviewdesign-review.yaml— 3 steps: Tech-Lead + Optimizer (parallel) → Auditor consolidation
Result Storage
- Individual handoffs:
/home/papa/atomizer/handoffs/orch-*.json - Sub-delegations:
/home/papa/atomizer/handoffs/sub/ - Workflow runs:
/home/papa/atomizer/handoffs/workflows/{workflow-run-id}/- Per-step:
{step-id}.json - Summary:
summary.json
- Per-step: