Orchestrator
Multi-agent task execution with cache coordination.
Overview
Orchestrator supervises agents that claim and execute tasks from a shared cache.
Architecture
Orchestrator → Reads instructions/INSTRUCTIONS.md → Spawns agents → Creates DAGs
Agent → Claims task → Executes → Updates cache
Cache keys:
dag:<goal>:nodes # Tasks
dag:<goal>:deps # Dependencies
task:<id> # Status
task:<id>:lock # Locks
agent:<name>:* # Registry
Features
- Tasks: LLM generates DAG from instructions
- Locking: Time-limited task leases
- States:
BLOCKED → READY → RUNNING → DONE/FAILED - Control: Heartbeat files accept
PAUSE,RESUME,DROP-TASK, etc. - Spawning: Each agent gets instruction file, heartbeat, goal ID
Files
systemg.yaml # Orchestrator service config
instructions/INSTRUCTIONS.md # Agent declarations
instructions/*.md # Per-agent instructions
instructions/heartbeat/*.md # Control files
docs/*.md # Example specs
Configuration
systemg.yaml:
version: "1"
services:
redis:
command: "redis-server"
orchestrator:
command: >
porki
--role orchestrator
--instructions instructions/INSTRUCTIONS.md
--redis-url redis://127.0.0.1:6379
env:
vars:
PORKI_LLM_MAX_CONCURRENCY: "6"
PORKI_LLM_CONCURRENCY_WAIT_SECONDS: "900"
depends_on: ["redis"]
spawn:
mode: dynamic
limit: 10
PORKI_LLM_MAX_CONCURRENCY raises the number of global LLM leases available
across agents, and PORKI_LLM_CONCURRENCY_WAIT_SECONDS controls how long agents
wait for a lease before timing out.
instructions/INSTRUCTIONS.md:
## Agents
### research_agent
- Goal: goal-001
- Heartbeat: ./instructions/heartbeat/research.md
DAG Format
{
"goal_id": "goal-001",
"nodes": [{"id": "task-001", "title": "Research", "priority": 10}],
"edges": [{"source": "task-001", "target": "task-002"}]
}
Usage
# Setup
$ cd examples/orchestrator
$ pip install porki
# Run
$ redis-server
$ sysg start
# Monitor
$ sysg logs --service orchestrator
$ redis-cli KEYS "*"
# Control
$ echo "PAUSE" >> ./instructions/heartbeat/research.md
Validation
Use sysg status, sysg logs --service orchestrator, and Redis keys to validate
runtime behavior. Package-level runtime tests execute in the porki repository.