name: wg description: Use this skill for task coordination with workgraph (wg). Triggers include "workgraph", "wg", task graphs, multi-step projects, tracking dependencies, coordinating agents, or when you see a .workgraph directory.
workgraph
First: orient and start the service
At the start of every session, run these two commands:
wg quickstart # Orient yourself — prints cheat sheet and service status
wg service start # Start the coordinator (no-op if already running)
If the service is already running, wg service start will tell you. Always ensure the service is up before defining work — it's what dispatches tasks to agents.
Your role as a top-level agent
You are a coordinator. Your job is to define work and let the service dispatch it.
Start the service if it's not running
wg service start --max-agents 5
Define tasks with dependencies
wg add "Design the API" --description "Description of what to do"
wg add "Implement backend" --after design-the-api
wg add "Write tests" --after implement-backend
Monitor progress
wg list # All tasks with status
wg list --status open # Filter by status (open, in-progress, done, failed)
wg agents # Who's working on what
wg agents --alive # Only alive agents
wg agents --working # Only working agents
wg service status # Service health
wg status # Quick one-screen overview
wg watch # Stream events as JSON lines (live tail)
wg viz # ASCII dependency graph
wg tui # Interactive TUI dashboard
wg chat "How is task X?" # Ask the coordinator a question
wg chat -i # Interactive chat with the coordinator
wg chat --history # Review past coordinator conversations
What you do NOT do as coordinator
- Don't
wg claim— the service claims tasks automatically - Don't
wg spawn— the service spawns agents automatically - Don't work on tasks yourself — spawned agents do the work
Always use wg done to complete tasks. Tasks with --verify enter a pending-validation state and need wg approve or wg reject to finalize.
Reviewing completed work
Tasks created with --verify land in pending-validation when agents mark them done. As coordinator, review and finalize:
wg list --status pending-validation # See tasks awaiting review
wg show <task-id> # Inspect work and artifacts
wg approve <task-id> # Accept — transitions to done
wg reject <task-id> --reason "why" # Reject — reopens for retry (or fails after max rejections)
If you ARE a spawned agent working on a task
You were spawned by the service to work on a specific task. Your workflow:
wg show <task-id> # Understand what to do
wg context <task-id> # See inputs from dependencies
wg log <task-id> "msg" # Log progress as you work
wg done <task-id> # Mark complete when finished
Checking and sending messages
Other agents or the coordinator may send you messages with updated requirements or feedback. Check for messages periodically and always reply:
wg msg read <task-id> --agent $WG_AGENT_ID # Read unread messages (marks as read)
wg msg send <task-id> "Acknowledged — working on it" # Reply to messages
wg msg poll <task-id> --agent $WG_AGENT_ID # Poll without blocking (exit 0 = new, 1 = none)
If you discover new work while working:
wg add "New task" --after <current-task>
Task decomposition
When working on a task, you may discover that it's larger than expected or has independent parts. Rather than doing everything in one shot, decompose into subtasks and let the coordinator dispatch them.
When to decompose
- 3+ independent parts that touch disjoint files — parallelize with a diamond
- Discovered bugs or issues unrelated to the current task — spin off a fix task
- Missing prerequisites — create a blocking task for the prerequisite
When NOT to decompose
- Small tasks — if the total work is under ~200 lines of changes, just do it
- Shared files — if the subtasks would all edit the same files, keep them sequential or do them yourself. Parallel agents editing the same file will overwrite each other
- High coordination overhead — if explaining the decomposition is harder than doing the work, just do the work
Diamond pattern for parallel decomposition
Fan out independent work, then join with an integrator:
# Fan out: each subtask depends on the current task
wg add "Implement module A" --after <current-task> -d "File scope: src/a.rs"
wg add "Implement module B" --after <current-task> -d "File scope: src/b.rs"
wg add "Implement module C" --after <current-task> -d "File scope: src/c.rs"
# Always add an integrator at the join point
wg add "Integrate modules A, B, C" --after implement-module-a,implement-module-b,implement-module-c
Always include an integrator task at join points. Without one, parallel outputs never get merged and downstream tasks see inconsistent state.
Guardrails
Two guardrails prevent runaway decomposition:
max_child_tasks_per_agent(default: 10) — max tasks a single agent can create viawg add. If you hit this limit, the system tells you. Usewg failorwg logto explain why more decomposition is needed.max_task_depth(default: 8) — max depth of--afterchains from root tasks. Prevents infinite decomposition chains. If you hit this, create tasks at the current level instead of nesting deeper.
Configure with:
wg config --max-child-tasks 15
wg config --max-task-depth 10
Record output files so downstream tasks can find them:
wg artifact <task-id> path/to/output
Manual mode (no service running)
Only use this if you're working alone without the service:
wg ready # See available tasks
wg claim <task-id> # Claim a task
wg log <task-id> "msg" # Log progress
wg done <task-id> # Mark complete
Task lifecycle
open → [claim] → in-progress → [done] → done
→ [done --verify] → pending-validation → [approve] → done
→ [reject] → open (retry)
→ [fail] → failed → [retry] → open
→ [abandon] → abandoned
→ [wait] → waiting → [condition met] → in-progress
Note: The wg approve and wg reject commands handle tasks in pending-validation state (tasks created with --verify).
Cycles (repeating workflows)
Some workflows repeat. Workgraph models these as structural cycles — after back-edges with a CycleConfig that controls iteration limits. When a cycle iteration completes, the cycle header task is reset to open with its loop_iteration incremented, and intermediate tasks are re-opened automatically.
# Create a write/review cycle, max 3 iterations
wg add "Write" --id write --after review --max-iterations 3
wg add "Review" --after write --id review
# Inspect cycles
wg cycles
As a spawned agent on a task inside a cycle, check wg show <task-id> for loop_iteration to know which pass you're on. Review previous logs and artifacts to build on prior work. If the work has converged and no more iterations are needed, use wg done <task-id> --converged to signal early termination — the cycle will not iterate again.
wg cycles # List detected cycles and status
wg show <task-id> # See loop_iteration and cycle membership
Cycle configuration flags
Fine-tune cycle behavior when creating or editing tasks:
wg add "Task" --after dep --max-iterations 5 \
--cycle-guard "task:check=done" # Guard: only iterate when check is done
--cycle-delay 5m # Wait 5 minutes between iterations
--no-converge # Force all iterations (agents can't signal --converged)
--no-restart-on-failure # Don't auto-restart the cycle on failure
--max-failure-restarts 2 # Cap failure-triggered restarts (default: 3)
Pausing and resuming cycles
To temporarily stop a cycling task without losing its iteration count:
wg pause <task-id> # Coordinator skips this task until resumed
wg resume <task-id> # Task becomes dispatchable again
Paused tasks keep their status and iteration count intact. wg show displays "(PAUSED)" and wg list shows "[PAUSED]".
To pause/resume the entire coordinator (all dispatching stops, running agents continue):
wg service pause # No new agents spawned
wg service resume # Resume dispatching
Full command reference
Task creation & editing
| Command | Purpose |
|---|---|
wg add "Title" --description "Desc" |
Create a task (-d alias for --description) |
wg add "X" --after Y |
Create task with dependency |
wg add "X" --after a,b,c |
Multiple dependencies (comma-separated) |
wg add "X" --skill rust --input src/foo.rs --deliverable docs/out.md |
Task with skills, inputs, deliverables |
wg add "X" --model haiku |
Task with preferred model |
wg add "X" --provider openrouter |
Task with preferred provider |
wg add "X" --context-scope clean |
Set prompt context scope (clean/task/graph/full) |
wg add "X" --exec-mode light |
Set execution weight (full/light/bare/shell) |
wg add "X" --verify "Tests pass" |
Task requiring review before completion |
wg add "X" --tag important --hours 2 |
Tags and estimates |
wg add "X" --cost 50 |
Estimated cost |
wg add "X" --assign <agent-hash> |
Assign to an agent at creation |
wg add "X" --max-retries 3 |
Maximum retries on failure |
wg add "X" --visibility public |
Visibility zone (internal/public/peer) |
wg add "X" --after Y --max-iterations 3 |
Create cycle header with max 3 iterations |
wg add "X" --paused |
Create task in paused state |
wg add "X" --delay 1h |
Task becomes ready after delay (30s, 5m, 1h, 1d) |
wg add "X" --not-before "2026-01-15T09:00:00Z" |
Schedule task for specific time (ISO 8601) |
wg add "X" --no-place |
Skip automatic placement analysis |
wg add "X" --place-near a,b |
Placement hint: near these tasks |
wg add "X" --place-before a,b |
Placement hint: before these tasks |
wg add "X" --repo peer-name |
Create task in a peer workgraph (by name or path) |
wg edit <id> --title "New" --description "New" |
Edit task fields |
wg edit <id> --add-after X --remove-after Y |
Modify dependencies |
wg edit <id> --add-after X --max-iterations 3 |
Add cycle back-edge |
wg edit <id> --add-tag T --remove-tag T |
Modify tags |
wg edit <id> --add-skill S --remove-skill S |
Modify skills |
wg edit <id> --model sonnet |
Change preferred model |
wg edit <id> --provider anthropic |
Change preferred provider |
wg edit <id> --context-scope graph |
Change context scope |
wg edit <id> --exec-mode bare |
Change execution weight |
wg edit <id> --verify "cargo test passes" |
Set or update verification criteria |
wg edit <id> --visibility peer |
Set visibility zone (internal/public/peer) |
wg edit <id> --cycle-guard "task:check=done" |
Set cycle guard condition |
wg edit <id> --cycle-delay 5m |
Set delay between cycle iterations |
wg edit <id> --delay 30m |
Set scheduling delay |
wg edit <id> --not-before "2026-03-20T00:00:00Z" |
Set absolute schedule |
wg edit <id> --no-converge |
Force all cycle iterations |
wg edit <id> --no-restart-on-failure |
Disable cycle restart on failure |
wg edit <id> --max-failure-restarts 2 |
Cap failure-triggered restarts |
wg add-dep <task> <dep> |
Add a dependency edge between two existing tasks |
wg rm-dep <task> <dep> |
Remove a dependency edge between two tasks |
Task state transitions
| Command | Purpose |
|---|---|
wg claim <id> |
Claim task (in-progress) |
wg unclaim <id> |
Release claimed task (back to open) |
wg done <id> |
Complete task |
wg done <id> --converged |
Complete task and signal cycle convergence |
wg approve <id> |
Approve a task in pending-validation (transitions to done) |
wg reject <id> --reason "why" |
Reject a task in pending-validation (reopens for retry) |
wg publish <id> |
Publish a draft task (validates deps, resumes subgraph) |
wg publish <id> --only |
Publish single task only (skip subgraph propagation) |
wg pause <id> |
Pause task (coordinator skips it) |
wg resume <id> |
Resume a paused task |
wg wait <id> --until "condition" |
Park task as Waiting until condition is met |
wg wait <id> --until "task:dep=done" |
Wait for another task to complete |
wg wait <id> --until "timer:5m" |
Wait for a timer duration |
wg wait <id> --until "message" |
Wait for a message |
wg wait <id> --until "human-input" |
Wait for a human message |
wg wait <id> --until "file:path" |
Wait for a file to change |
wg wait <id> --checkpoint "summary" |
Save progress checkpoint when parking |
wg fail <id> --reason "why" |
Mark task failed |
wg retry <id> |
Retry failed task |
wg abandon <id> --reason "why" |
Abandon permanently |
wg reclaim <id> --from old --to new |
Reassign from dead agent |
Querying & viewing
| Command | Purpose |
|---|---|
wg list |
All tasks with status |
wg list --status open |
Filter: open, in-progress, done, failed, abandoned |
wg ready |
Tasks available to work on |
wg show <id> |
Full task details |
wg blocked <id> |
What's blocking a task |
wg why-blocked <id> |
Full transitive blocking chain |
wg context <id> |
Inputs from dependencies |
wg context <id> --dependents |
Tasks depending on this one's outputs |
wg log <id> --list |
View task log entries |
wg impact <id> |
What depends on this task |
wg status |
Quick one-screen overview |
wg discover |
Show recently completed tasks and artifacts (last 24h) |
wg discover --since 7d |
Custom time window (e.g. 30m, 24h, 7d) |
wg discover --with-artifacts |
Include artifact paths in output |
Visualization
| Command | Purpose |
|---|---|
wg viz |
ASCII dependency graph of open tasks |
wg viz [TASK_ID]... |
Show only subgraphs containing specified tasks |
wg viz --all |
Include done tasks |
wg viz --status done |
Filter by status |
wg viz --dot |
Graphviz DOT output |
wg viz --mermaid |
Mermaid diagram |
wg viz --critical-path |
Highlight critical path |
wg viz --dot -o graph.png |
Render to file |
wg viz --show-internal |
Show internal tasks (assign-, evaluate-) normally hidden |
wg viz --no-tui |
Force static output even when stdout is interactive |
wg tui |
Interactive TUI dashboard |
wg tui-dump |
Dump current TUI screen contents (requires a running wg tui) |
Monitoring & event streaming
| Command | Purpose |
|---|---|
wg watch |
Stream workgraph events as JSON lines |
wg watch --event task_state |
Filter by event type (task_state, evaluation, agent, all) |
wg watch --task <id> |
Filter events to a specific task (prefix match) |
wg watch --replay 10 |
Include N recent historical events before streaming |
Analysis & metrics
| Command | Purpose |
|---|---|
wg analyze |
Comprehensive health report |
wg check |
Graph validation (cycles, orphans) |
wg structure |
Entry points, dead ends, high-impact roots |
wg bottlenecks |
Tasks blocking the most work |
wg critical-path |
Longest dependency chain |
wg cycles |
Cycle detection and classification |
wg velocity --weeks 8 |
Completion velocity over time |
wg aging |
Task age distribution |
wg forecast |
Completion forecast from velocity |
wg workload |
Agent workload balance |
wg resources |
Resource utilization |
wg cost <id> |
Cost including dependencies |
wg coordinate |
Ready tasks for parallel execution |
wg trajectory <id> |
Optimal claim order for context |
wg next --actor <id> |
Best next task for an agent |
Service & agents
| Command | Purpose |
|---|---|
wg service start |
Start coordinator daemon |
wg service start --max-agents 5 |
Start with parallelism limit |
wg service stop |
Stop daemon |
wg service restart |
Restart daemon (graceful stop then start) |
wg service pause |
Pause coordinator (running agents continue, no new spawns) |
wg service resume |
Resume coordinator dispatching |
wg service status |
Check daemon health |
wg service reload |
Reload daemon configuration without restarting |
wg service tick |
Run a single coordinator tick (debug mode) |
wg service create-coordinator |
Create a new coordinator session |
wg service delete-coordinator |
Delete a coordinator session |
wg service archive-coordinator |
Archive a coordinator session (mark as Done) |
wg service stop-coordinator |
Stop a coordinator session (kill agent, reset to Open) |
wg service freeze |
SIGSTOP all running agents and pause coordinator |
wg service thaw |
SIGCONT all frozen agents and resume coordinator |
wg service interrupt-coordinator |
Interrupt a coordinator's current generation |
wg agents |
List all agents |
wg agents --alive |
Only alive agents |
wg agents --working |
Only working agents |
wg agents --dead |
Only dead agents |
wg spawn <id> --executor claude |
Manually spawn agent |
wg spawn <id> --executor claude --model haiku |
Spawn with model override |
wg kill <agent-id> |
Kill an agent |
wg kill --all |
Kill all agents |
wg kill <id> --force |
Force kill (SIGKILL) |
wg dead-agents --cleanup |
Unclaim dead agents' tasks |
wg dead-agents --remove |
Remove from registry |
wg dead-agents --purge |
Purge dead/done/failed agents from registry |
wg dead-agents --purge --delete-dirs |
Also delete agent work directories when purging |
wg dead-agents --threshold 30 |
Override heartbeat timeout threshold (minutes) |
wg heartbeat <agent-id> |
Record agent heartbeat |
wg heartbeat --check |
Check for stale agents (no heartbeat within threshold) |
wg heartbeat --threshold 10 |
Override stale threshold in minutes (default: 5) |
Messaging
| Command | Purpose |
|---|---|
wg msg send <task> "message" |
Send a message to a task/agent |
wg msg list <task> |
List all messages for a task |
wg msg read <task> --agent <id> |
Read unread messages (marks as read) |
wg msg poll <task> --agent <id> |
Poll for new messages (exit code 0 = new, 1 = none) |
Chat (coordinator interaction)
| Command | Purpose |
|---|---|
wg chat "message" |
Send a message to the coordinator |
wg chat -i |
Interactive REPL mode |
wg chat --history |
Show chat history |
wg chat --clear |
Clear chat history |
wg chat --attachment path/to/file |
Attach a file to the message |
wg chat --coordinator 1 |
Target a specific coordinator (multi-coordinator) |
Notifications & integrations
| Command | Purpose |
|---|---|
wg notify <task> |
Send task notification to Matrix room |
wg notify <task> --room "#room" |
Target specific Matrix room |
wg notify <task> -m "message" |
Include custom message with notification |
wg matrix listen |
Start Matrix message listener |
wg matrix send "message" |
Send a message to a Matrix room |
wg matrix status |
Show Matrix connection status |
wg matrix login |
Login with password (caches access token) |
wg matrix logout |
Logout and clear cached credentials |
wg telegram listen |
Start Telegram bot listener |
wg telegram send "message" |
Send a message to configured Telegram chat |
wg telegram status |
Show Telegram configuration status |
Housekeeping & maintenance
| Command | Purpose |
|---|---|
wg compact |
Distill graph state into context.md |
wg sweep |
Detect and recover orphaned in-progress tasks with dead agents |
wg sweep --dry-run |
Preview orphaned tasks without fixing |
wg checkpoint <task> -s "summary" |
Save checkpoint for context preservation |
wg checkpoint <task> --list |
List checkpoints for a task |
wg stats |
Show time counters and agent statistics |
wg gc |
Remove terminal tasks (done/abandoned/failed) from the graph |
wg archive |
Archive completed tasks |
wg archive --dry-run |
Preview what would be archived |
wg archive --older 30d |
Only archive old completions |
wg archive --list |
List archived tasks |
wg reschedule <id> --after 24 |
Delay task 24 hours |
wg reschedule <id> --at "2025-01-15T09:00:00Z" |
Schedule at specific time |
wg plan --budget 500 --hours 20 |
Plan within constraints |
wg exec <task> |
Execute a task's shell command (claim + run + done/fail) |
wg exec <task> --set "cargo test" |
Set the exec command for a task |
wg exec <task> --clear |
Clear the exec command |
wg exec <task> --dry-run |
Show what would be executed |
wg replay |
Snapshot graph, selectively reset tasks, re-execute with different model |
wg replay --failed-only |
Only reset failed/abandoned tasks |
wg replay --below-score 0.7 |
Only reset tasks with evaluation score below threshold |
wg replay --tasks a,b,c |
Reset specific tasks plus transitive dependents |
wg replay --subgraph <id> |
Only replay tasks in subgraph rooted at given task |
wg replay --keep-done 0.9 |
Preserve done tasks scoring above threshold (default: 0.9) |
wg replay --plan-only |
Dry run: show what would be reset |
Screencast (TUI recording)
| Command | Purpose |
|---|---|
wg screencast render --trace <file> --output <file> |
Render a TUI event trace into an asciinema .cast file |
wg screencast render --compress-idle 5:2 |
Idle compression ratio (gaps >5s compressed to 2s) |
wg screencast render --target-duration 30 |
Target total duration in seconds |
wg screencast render --width 120 --height 36 |
Set terminal dimensions |
wg screencast autopilot |
Launch autopilot that drives the TUI for screencast recording |
wg screencast autopilot --output demo.cast |
Set output .cast file path |
wg screencast autopilot --cols 80 --rows 24 |
Set terminal dimensions |
wg screencast autopilot --duration 60 |
Max recording duration in seconds |
Server (multi-user setup)
| Command | Purpose |
|---|---|
wg server init |
Initialize multi-user server setup (dry-run by default) |
wg server init --apply |
Actually apply server setup changes |
wg server init --group <name> |
Unix group name (default: wg-) |
wg server init --user <name> |
Add a user to the project group (repeatable) |
wg server init --ttyd |
Generate ttyd web terminal configuration |
wg server init --caddy |
Generate Caddy reverse-proxy configuration |
wg server init --ttyd-port 7681 |
Set port for ttyd web terminal |
wg server connect |
Create or attach to a user's tmux session |
wg server connect --user <name> |
Specify user (defaults to $WG_USER) |
Agency (roles, tradeoffs, agents)
| Command | Purpose |
|---|---|
wg agency init |
Bootstrap agency with starter roles, tradeoffs, and agents |
wg agency stats |
Performance analytics |
wg agency stats --by-model |
Per-model score breakdown |
wg role add <id> |
Create a role |
wg role list |
List roles |
wg role show <id> |
Show role details |
wg role edit <id> |
Edit a role |
wg role rm <id> |
Remove a role |
wg tradeoff add <id> |
Create a tradeoff |
wg tradeoff list |
List tradeoffs |
wg tradeoff show <id> |
Show tradeoff details |
wg tradeoff edit <id> |
Edit a tradeoff |
wg tradeoff rm <id> |
Remove a tradeoff |
wg agent create |
Create agent (role+tradeoff pairing) |
wg agent list |
List agents |
wg agent show <hash> |
Show agent details |
wg agent rm <hash> |
Remove an agent |
wg agent lineage <hash> |
Show agent ancestry |
wg agent performance <hash> |
Show agent performance |
wg assign <task> <agent-hash> |
Assign agent to task |
wg assign <task> --clear |
Clear assignment |
wg evaluate run <task> |
Trigger LLM-based evaluation of a completed task |
wg evaluate record --task <id> --score <n> --source <tag> |
Record evaluation from external source |
wg evaluate show |
Show evaluation history (filter by --task, --agent, --source) |
wg evolve |
Trigger evolution cycle |
wg evolve --strategy mutation --budget 3 |
Targeted evolution |
Federation (cross-repo agency sharing)
| Command | Purpose |
|---|---|
wg agency remote add <name> <path> |
Add a named remote agency store |
wg agency remote remove <name> |
Remove a named remote |
wg agency remote list |
List configured remotes |
wg agency remote show <name> |
Show remote details and entity counts |
wg agency scan <root> |
Scan filesystem for agency stores |
wg agency pull <source> |
Pull entities from another agency store |
wg agency push <target> |
Push local entities to another agency store |
wg agency merge <sources...> |
Merge entities from multiple stores |
Peer workgraphs (cross-repo communication)
| Command | Purpose |
|---|---|
wg peer add <name> <path> |
Register a peer workgraph instance |
wg peer remove <name> |
Remove a registered peer |
wg peer list |
List all configured peers with service status |
wg peer show <name> |
Show detailed info about a peer |
wg peer status |
Quick health check of all peers |
Run snapshots
| Command | Purpose |
|---|---|
wg runs list |
List all run snapshots |
wg runs show <id> |
Show details of a specific run |
wg runs restore <id> |
Restore graph from a run snapshot |
wg runs diff <id> |
Diff current graph against a run snapshot |
Functions (reusable workflow patterns)
| Command | Purpose |
|---|---|
wg func list |
List available functions |
wg func show <id> |
Show function details and required inputs |
wg func extract <task-id>... |
Extract a function from completed task(s) |
wg func apply <id> --input key=value |
Create tasks from a function with provided inputs |
wg func bootstrap |
Bootstrap the extract-function meta-function |
wg func make-adaptive <id> |
Upgrade a generative function to adaptive (adds run memory) |
Traces (execution history & sharing)
| Command | Purpose |
|---|---|
wg trace show <id> |
Show the execution history of a task |
wg trace export --visibility <zone> |
Export trace data filtered by visibility zone |
wg trace import <file> |
Import a trace export file as read-only context |
Model & provider management
| Command | Purpose |
|---|---|
wg model list |
Show all models in the registry (built-in + user-defined) |
wg model add |
Add or update a model in the config registry |
wg model remove <id> |
Remove a model from the config registry |
wg model set-default <id> |
Set the default model for agent dispatch |
wg model routing |
Show per-role model routing configuration |
wg model set <role> <model> |
Set the model for a specific dispatch role |
wg models list |
List models from the local registry |
wg models search <query> |
Search models from OpenRouter by name/ID/description |
wg models remote |
List all models available on OpenRouter |
wg models add |
Add a custom model to the local registry |
wg models set-default <id> |
Set the default model |
wg models init |
Initialize models.yaml with defaults |
wg endpoints list |
List all configured LLM endpoints |
wg endpoints add |
Add a new LLM endpoint |
wg endpoints remove <name> |
Remove an endpoint by name |
wg endpoints set-default <name> |
Set an endpoint as the default |
wg endpoints test |
Test endpoint connectivity (hits /models API) |
wg key set <provider> |
Configure an API key for a provider |
wg key check |
Validate API key availability and status |
wg key list |
Show key configuration status for all providers |
Artifacts & resources
| Command | Purpose |
|---|---|
wg artifact <task> <path> |
Record output file |
wg artifact <task> |
List task artifacts |
wg artifact <task> <path> --remove |
Remove artifact |
wg resource add <id> --type money --available 1000 --unit usd |
Add resource |
wg resource list |
List resources |
wg match <task> |
Find capable agents |
Skills
| Command | Purpose |
|---|---|
wg skill list |
List all skills used across tasks |
wg skill task <id> |
Show skills for a specific task |
wg skill find <name> |
Find tasks requiring a specific skill |
wg skill install |
Install the wg Claude Code skill to ~/.claude/skills/wg/ |
Setup & configuration
| Command | Purpose |
|---|---|
wg init |
Initialize a new workgraph in the current directory |
wg setup |
Interactive configuration wizard for first-time setup |
wg config --show |
Show current config |
wg config --list |
Show merged config with source annotations (global/local/default) |
wg config --init |
Create default config |
wg config --global --executor claude |
Write to global config (~/.workgraph/config.toml) |
wg config --local --model opus |
Write to local config (default for writes) |
wg config --executor claude |
Set executor |
wg config --model opus |
Set default model |
wg config --max-agents 5 |
Set agent limit |
wg config --max-coordinators 2 |
Set max concurrent coordinator sessions |
wg config --coordinator-interval 30 |
Set coordinator poll interval in seconds |
wg config --poll-interval 60 |
Set service daemon background poll interval in seconds |
wg config --coordinator-executor claude |
Set coordinator executor |
wg config --coordinator-model opus |
Set coordinator model |
wg config --coordinator-provider openrouter |
Set coordinator provider |
wg config --auto-evaluate true |
Enable auto-evaluation |
wg config --auto-assign true |
Enable auto-assignment |
wg config --auto-place true |
Enable automatic placement analysis on new tasks |
wg config --auto-create true |
Enable automatic creator agent invocation |
wg config --auto-triage true |
Enable automatic triage of dead agents |
wg config --creator-agent <hash> |
Set creator agent (content-hash) |
wg config --creator-model <model> |
Set model for creator agents |
wg config --assigner-model <model> |
Set model for assigner agents |
wg config --evaluator-model <model> |
Set model for evaluator agents |
wg config --evolver-model <model> |
Set model for evolver agents |
wg config --assigner-agent <hash> |
Set assigner agent (content-hash) |
wg config --evaluator-agent <hash> |
Set evaluator agent (content-hash) |
wg config --evolver-agent <hash> |
Set evolver agent (content-hash) |
wg config --triage-model haiku |
Set model for triage (default: haiku) |
wg config --triage-timeout 30 |
Set timeout in seconds for triage calls |
wg config --triage-max-log-bytes 50000 |
Max bytes to read from agent output log for triage |
wg config --retention-heuristics "policy" |
Set retention heuristics (prose policy for evolver) |
wg config --eval-gate-threshold 0.7 |
Set eval gate threshold (0.0-1.0) |
wg config --eval-gate-all true |
Apply eval gate to all tasks (not just eval-gate tagged) |
wg config --flip-enabled true |
Enable FLIP (roundtrip intent fidelity) evaluation |
wg config --flip-inference-model <m> |
Model for FLIP inference phase |
wg config --flip-comparison-model <m> |
Model for FLIP comparison phase |
wg config --flip-verification-threshold 0.7 |
FLIP score threshold for Opus verification |
wg config --flip-verification-model opus |
Model for FLIP-triggered verification |
wg config --chat-history true |
Enable chat history persistence |
wg config --chat-history-max 100 |
Max chat history entries |
wg config --retry-context-tokens 2000 |
Max tokens of previous-attempt context on retry |
wg config --max-child-tasks 15 |
Max tasks a single agent can create per execution |
wg config --max-task-depth 10 |
Max depth of task dependency chains from root |
wg config --install-global |
Install project config as global default |
wg config --install-global --force |
Skip confirmation when overwriting existing global config |
wg config --viz-edge-color mixed |
Viz edge color style (gray/white/mixed) |
wg config --tui-counters uptime,active |
TUI time counters (uptime, cumulative, active, session) |
wg config --tiers |
Show current tier-to-model assignments |
wg config --tier standard=gpt-4o |
Set which model a tier uses |
wg config --models |
Show all model routing assignments (per-role) |
wg config --set-model <role> <model> |
Set model for a dispatch role |
wg config --set-provider <role> <provider> |
Set provider for a dispatch role |
wg config --set-endpoint <role> <endpoint> |
Bind a named endpoint to a dispatch role |
wg config --role-model <role>=<model> |
Set model for dispatch role (key=value syntax) |
wg config --role-provider <role>=<provider> |
Set provider for dispatch role (key=value syntax) |
wg config --set-key <provider> --file <path> |
Set API key file for a provider |
wg config --check-key |
Check OpenRouter API key validity |
wg config --registry |
Show all model registry entries (built-in + user-defined) |
wg config --registry-add --id <id> --provider <p> --reg-model <m> --reg-tier <t> |
Add model to registry |
wg config --registry-add --endpoint <url> --context-window <n> --cost-input <n> --cost-output <n> |
Registry add with optional endpoint/cost fields |
wg config --registry-remove <id> |
Remove model from registry |
wg config --matrix --homeserver <url> --room <room> |
Configure Matrix integration |
wg config --matrix --username <user> --password <pass> |
Set Matrix credentials |
wg config --matrix --access-token <token> |
Set Matrix access token directly |
Output options
All commands support --json for structured output. Run wg --help for the quick list or wg --help-all for every command.
Executor and model awareness
Environment variables
Every spawned agent receives these environment variables:
| Variable | Description |
|---|---|
WG_TASK_ID |
The task ID you're working on |
WG_AGENT_ID |
Your agent ID |
WG_EXECUTOR_TYPE |
Executor type: claude, amplifier, or shell |
WG_MODEL |
Model you're running on (e.g. opus, sonnet, haiku) — set when a model is configured |
WG_USER |
The current user identity |
WG_ENDPOINT / WG_ENDPOINT_NAME |
The endpoint name (set when an endpoint is configured) |
WG_LLM_PROVIDER |
The LLM provider (e.g. anthropic, openrouter) |
WG_ENDPOINT_URL |
The endpoint URL (set when an endpoint is configured) |
WG_API_KEY |
The API key for the endpoint (set when an endpoint is configured) |
WG_WORKTREE_PATH |
Path to the agent's isolated git worktree (set when worktree isolation is active) |
WG_BRANCH |
The worktree branch name (set when worktree isolation is active) |
WG_PROJECT_ROOT |
Path to the main project root (set when worktree isolation is active) |
Multi-executor awareness
You may be running under different executors:
- claude — Claude Code CLI (
claude --print). You have full access to Claude Code tools (file editing, bash, etc). - amplifier — Amplifier multi-agent runtime. You have access to installed amplifier bundles and can delegate to sub-agents.
- shell — Direct shell execution for scripted tasks.
Check $WG_EXECUTOR_TYPE to know which executor you're running under if your behavior should differ.
Model awareness
The $WG_MODEL variable tells you what model you're running on. Different tasks may use different models based on complexity (model hierarchy: task.model > executor.model > coordinator.model).
Calibrate your approach to your model tier:
- Frontier models (opus): Tackle complex multi-file refactors, architectural decisions, nuanced trade-offs.
- Mid-tier models (sonnet): Good for standard implementation, bug fixes, well-scoped features.
- Fast models (haiku): Best for simple, well-defined tasks — lookups, single-file edits, formatting.
If a task feels beyond your model's capability, use wg fail with a clear reason rather than producing low-quality output.
Provider awareness
Tasks can specify a --provider (anthropic, openai, openrouter, local) to route to a specific LLM provider. The provider resolves at dispatch time: task.provider > config default.
Execution modes
Tasks can specify --exec-mode to control what tools the agent receives:
| Mode | Description | Use Case |
|---|---|---|
full |
Full Claude Code tools (file editing, bash, etc.) — default | Standard implementation, debugging |
light |
Read-only tools (no file writes, no destructive commands) | Code review, analysis, audit |
bare |
Only wg CLI instructions, no extra tools | Meta-tasks, workflow management |
shell |
No LLM — direct shell execution of exec command |
Scripted automation, CI/CD |
wg add "Review code" --exec-mode light
wg add "Run tests" --exec-mode shell
wg exec run-tests --set "cargo test"
Context scopes
Tasks can specify a --context-scope that controls how much context the agent receives in its prompt:
| Scope | Description | Use Case |
|---|---|---|
clean |
Bare executor — no wg CLI instructions | Pure computation, translation, writing |
task |
Task-aware with wg workflow instructions (default) | Standard implementation, bug fixes |
graph |
Adds project description, 1-hop neighborhood, status summary | Integration, cross-component review |
full |
Adds full graph summary, CLAUDE.md, system preamble | Meta-tasks, workflow design |
Set scope when creating or editing tasks:
wg add "Translate document" --context-scope clean
wg edit <task-id> --context-scope graph
Resolution priority: task > role default > coordinator config > "task" (default).
Amplifier bundles (amplifier executor only)
When running under the amplifier executor (WG_EXECUTOR_TYPE=amplifier), you can use installed amplifier bundles for specialized capabilities. Delegate to sub-agents when:
- The subtask is independent and well-scoped (e.g. "write tests for module X")
- Parallel execution would speed things up
- The subtask needs a different skill set than your current context
Do the work yourself when:
- The task is simple and sequential
- Context from prior steps is critical and hard to transfer
- Coordination overhead would exceed the work itself
Multi-coordinator support
The service supports multiple concurrent coordinator sessions. Each coordinator manages its own scope of tasks and agents.
wg service create-coordinator # Create a new coordinator session
wg service stop-coordinator <id> # Stop a coordinator (kill agent, reset to Open)
wg service archive-coordinator <id> # Archive a coordinator (mark as Done)
wg service delete-coordinator <id> # Delete a coordinator session
wg config --max-coordinators 4 # Set max concurrent coordinators (default: 4)
wg chat --coordinator 1 "message" # Target a specific coordinator
