Skip to main content

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.