/ashlr-orchestrate
Distributed-orchestration MVP — expand a goal into a task graph, preview the DAG, confirm, and run it (Pro / Team only).
Description
/ashlr-orchestrate takes a free-text goal, auto-expands it into a small task graph (DAG of explore/implement/verify nodes scoped to a directory), shows you a dry-run preview, and on confirmation walks the graph in dependency order. Each node runs in its own sandbox so a failure in one branch doesn't poison the rest. This is the local-only orchestration MVP — capped at 3 nodes on Pro and 10 on Team. All workers run as subprocesses on the local machine; remote distributed execution is not yet available. Free is blocked with a pointer to /ashlr-upgrade.
The flow is:
- Tier check (free → blocked, helpful upgrade message).
- Either auto-expand the goal into a graph or load a graph you wrote / edited as YAML (
--yaml <path>). - Render the DAG to stdout as a dry-run preview (goal, scope, tier, node count, per-node description + deps + scope + model).
- Prompt
y/n/e:yruns it.ncancels with exit 0.ewrites the current graph as YAML to~/.ashlr/orchestrate-edit-<id>.yaml, prints the path, and exits so you can hand-edit + re-run with--yaml.
- After the run, print a summary: total wall-clock, total tokens, per-node ok/fail.
--auto-confirm skips the prompt. --dry-run runs the graph in dry-run mode (no real subprocesses spawn).
Usage examples
Tier gates
| Tier | Behavior |
|---|---|
| free | Blocked. Prints "Orchestration requires Pro or Team. Run /ashlr-upgrade." and exits 1. |
| pro | Local-only. Max 3 agents per graph. |
| team | Local-only. Max 10 agents per graph. Remote execution is not yet available. |
Free users are never silently downgraded — they're stopped before any expand call so no tokens are spent.
Output
The dry-run preview is a flat list of nodes in declaration order, each tagged with its dependency edges (← explore), scope, and model tier. After it prints:
On e, the YAML path is printed and the command exits without running. On y (or with --auto-confirm), the runner walks the graph in topo order and emits a final block:
Invocation
Run via Bash:
Pass $ARGUMENTS through verbatim — the CLI parses --scope, --yaml, --auto-confirm, and --dry-run itself. Print the stdout in a fenced code block so the DAG preview renders with column alignment.