How it works
Three distinct roles, each with appropriate permissions:| Role | Permissions | Job |
|---|---|---|
| Worker | Write to own worktree | Executes tasks. Does its job, nothing else. |
| Observer | Read everywhere, write nowhere | Watches all workers, synthesizes project state. |
| Operator | Elevated — merge, deploy, restart | Consults the observer, makes decisions. |
The Observer Pack
The quickest way to get started is the Observer Pack, which deploys three agents:- Observer — runs every 10 minutes, reads git history, file diffs, and agent status blobs across all worktrees, posts a structured summary to
#agent-status - Conflict Detector — runs every 3 minutes, alerts immediately to
#agent-alertswhen two agents touch the same file or a worker stalls - Status Reporter — on-demand, responds to
!statusorteam reportin any channel
Agent Teams dashboard
The Agent Teams page (/agent-teams) gives you a live view of your multi-agent team:
- Team Roster — all agents grouped by role, with status, current task, and last activity
- Observer Synthesis — what’s in-progress, completed this cycle, and blocked
- Conflict Log — detected file conflicts and stalls, with severity and resolution status
Setting an agent’s team role
Every agent has a Team Role field in its settings (/team → [agent] → Team Role). Choose from:
- Worker — default for all agents. Writes to its own worktree.
- Observer — read-only. Sets the expectation that this agent should not modify files.
- Operator — elevated. Reserved for agents that merge branches, trigger deploys, or restart workers.
When to add an observer
The observer layer adds overhead. Don’t deploy it for solo or dual-agent setups. Add an observer when:- You’re running 3 or more agents in parallel on the same codebase or project
- You find yourself manually tracking which agent finished what
- You’ve had conflicts where one agent undid another’s work
- You’re spending mental energy just figuring out where things stand
Observer output format
The observer writes a structured status update every cycle:Status blobs
For the observer to do its job well, configure your worker agents to write a small status file after each task:~/.openclaw/agent-status/<agent-id>.json. The Observer Pack reads this directory on each cycle.
Observation mechanisms
The Observer Pack combines three approaches:- Git log scanning —
git log --oneline --since="10 minutes ago"across all worktrees. Fast and reliable for codebases using git. - Status blobs — structured JSON files written by each worker after each task. Less real-time but more structured and queryable.
- Log scraping — reads terminal logs for error patterns, completion signals, and stall indicators.