Store as FRAMEWORKS list. all → ["autogen", "crewai", "langgraph"].
Step 5 — GitHub
"Create a GitHub repo for the bundle? yes / no"
Store as CREATE_GITHUB.
Step 6 — Confirm
Show summary, ask "Shall I proceed? (yes/no)". If no → restart Step 1.
Step 7 — Write team.json
mkdir -p ~/.openclaw/workspace/agi-farm-bundle/
openclaw agents list --json # use output to assign appropriate models per role
Use the openclaw agents list output to assign each agent a model appropriate for
its role. Write resolved model strings directly into the "model" fields.
Model selection cheat sheet (based on openclaw agents list --json output):
Role
Recommended tier
Why
Orchestrator
High-capability (e.g. sonnet, opus)
Needs broad reasoning, delegation judgment
Solution Architect / Researcher
High-capability
Deep analysis + design
Implementation Engineer
Mid-tier (e.g. glm-5, sonnet)
Fast code gen; cost-efficiency matters
Debugger
High-capability (e.g. opus)
Root-cause analysis benefits from deep reasoning
Business Analyst / Knowledge
Mid-high (e.g. gemini-2.0-pro-exp)
Long-context research tasks
QA Engineer
Fast/cheap (e.g. glm-4.7-flash)
High volume, pattern-matching checks
Content / Multimodal
Multimodal-capable (e.g. gemini-2.0-pro-exp)
Vision + rich generation
R&D / Process Improvement
High-capability
Creative + structured experimentation
Tip: assign opus or sonnet to roles that make decisions; use flash/glm-4.7-flash for high-frequency reviewers to manage cost.
3-agent roster:
{"team_name":"<TEAM_NAME>","orchestrator_name":"<ORCHESTRATOR_NAME>","preset":"3",
"domain":"<DOMAIN>","frameworks":<FRAMEWORKS_JSON>,"created_at":"<ISO_TIMESTAMP>",
"agents":[
{"id":"main", "name":"<ORCHESTRATOR_NAME>","emoji":"🦅","role":"Orchestrator", "goal":"Orchestrate the team, delegate tasks, synthesize results", "model":"<MODEL>","workspace":"."},
{"id":"researcher", "name":"Sage", "emoji":"🔮","role":"Researcher", "goal":"Research deeply and surface the insights that matter most", "model":"<MODEL>","workspace":"researcher"},
{"id":"builder", "name":"Forge", "emoji":"⚒️","role":"Builder", "goal":"Implement solutions cleanly and efficiently", "model":"<MODEL>","workspace":"builder"}
]}
5-agent: add to 3-agent roster:
{"id":"qa", "name":"Vigil", "emoji":"🛡️","role":"QA Engineer", "goal":"Ensure every output meets quality standards","model":"<MODEL>","workspace":"qa"},
{"id":"content","name":"Anchor","emoji":"⚓", "role":"Content Specialist","goal":"Craft clear content that communicates complex ideas simply","model":"<MODEL>","workspace":"content"}
11-agent roster:
[
{"id":"main", "name":"<ORCHESTRATOR_NAME>","emoji":"🦅","role":"Orchestrator", "goal":"Orchestrate specialists, delegate tasks, synthesize results", "model":"<MODEL>","workspace":"."},
{"id":"sage", "name":"Sage", "emoji":"🔮","role":"Solution Architect", "goal":"Design robust, scalable architectures", "model":"<MODEL>","workspace":"solution-architect"},
{"id":"forge", "name":"Forge", "emoji":"⚒️","role":"Implementation Engineer", "goal":"Implement clean, well-tested code efficiently", "model":"<MODEL>","workspace":"implementation-engineer"},
{"id":"pixel", "name":"Pixel", "emoji":"🐛","role":"Debugger", "goal":"Find the true root cause of any bug or failure", "model":"<MODEL>","workspace":"debugger"},
{"id":"vista", "name":"Vista", "emoji":"🔭","role":"Business Analyst", "goal":"Research deeply and surface the insights that matter most", "model":"<MODEL>","workspace":"business-analyst"},
{"id":"cipher","name":"Cipher", "emoji":"🔊","role":"Knowledge Curator", "goal":"Curate and surface knowledge so the team never forgets", "model":"<MODEL>","workspace":"knowledge-curator"},
{"id":"vigil", "name":"Vigil", "emoji":"🛡️","role":"QA Engineer", "goal":"Ensure every output meets quality standards", "model":"<MODEL>","workspace":"quality-assurance"},
{"id":"anchor","name":"Anchor", "emoji":"⚓", "role":"Content Specialist", "goal":"Craft clear content that communicates complex ideas simply", "model":"<MODEL>","workspace":"content-specialist"},
{"id":"lens", "name":"Lens", "emoji":"📡","role":"Multimodal Specialist", "goal":"Extract meaning from images, documents, and multimodal inputs", "model":"<MODEL>","workspace":"multimodal-specialist"},
{"id":"evolve","name":"Evolve", "emoji":"🔄","role":"Process Improvement Lead","goal":"Make the team better systematically through continuous improvement", "model":"<MODEL>","workspace":"process-improvement"},
{"id":"nova", "name":"Nova", "emoji":"🧪","role":"R&D Lead", "goal":"Turn hypotheses into proven capabilities through structured experimentation", "model":"<MODEL>","workspace":"r-and-d"}
]
✅ <TEAM_NAME> AGI team is live!
Agents : <PRESET> (<AGENT_NAMES_LIST>)
Workspace: ~/.openclaw/workspace/
Bundle : ~/.openclaw/workspace/agi-farm-bundle/
GitHub : <URL if created>
Next: talk to <ORCHESTRATOR_NAME> · /agi-farm status · /agi-farm dashboard
/agi-farm status
openclaw agents list --json | python3 -c "
import json,sys
for a in json.load(sys.stdin):
print(f' {a.get(\"identityEmoji\",\"🤖\")} {a.get(\"identityName\",a[\"id\"])}: {a.get(\"model\",\"?\")}')
"
python3 -c "
import json
from pathlib import Path
ws = Path.home() / '.openclaw/workspace'
tasks = json.loads((ws/'TASKS.json').read_text()) if (ws/'TASKS.json').exists() else []
t = [t for t in tasks if isinstance(t,dict)]
print(f' Tasks: {len(t)} total · {sum(1 for x in t if x.get(\"status\")==\"pending\")} pending · {sum(1 for x in t if x.get(\"status\")==\"needs_human_decision\")} HITL')
"
openclaw cron list 2>/dev/null | head -15
--no-overwrite skips files that already exist, preserving manual edits.
Add --force (remove --no-overwrite) to overwrite everything.
/agi-farm export
cd ~/.openclaw/workspace/agi-farm-bundle
git add -A
git commit -m "export: $(date +%Y-%m-%d)" 2>/dev/null || echo "Nothing to commit"
git push 2>/dev/null || echo "No remote — run /agi-farm setup first"
/agi-farm dashboard
React + SSE ops room. File-watcher pushes live data to the browser in ~350ms on any workspace .json or .md change. Runs as a persistent macOS LaunchAgent — always on, auto-restarts on crash.
Architecture
dashboard.py ← Python HTTP server (SSE + static)
├── WorkspaceWatcher watchdog file-watcher, 250ms debounce
├── SlowDataCache background thread — caches `openclaw agents list`
│ and `openclaw cron list` every 30s (each takes ~1-2s)
├── Broadcaster thread-safe SSE fan-out to all connected clients
└── /api/stream SSE endpoint — pushes full snapshot on every file change
dashboard-react/ ← Vite + React 18 + Recharts frontend
dist/ ← production build (served by dashboard.py)
src/
hooks/useDashboard.js SSE hook — auto-reconnects on disconnect
components/
Header.jsx live badge, stats, clock
Nav.jsx tab switcher
tabs/
Overview.jsx stats, budget bar, SLA alerts, agent grid, broadcast preview
Agents.jsx full agent cards — model, inbox, quality, credibility, cache age
Tasks.jsx filterable table, expandable rows, ticking deadlines, pagination
Velocity.jsx 7-day charts (Recharts), quality trend, task-type donut
Budget.jsx period bars, threshold markers, per-agent/model breakdown
OKRs.jsx objectives + KRs with progress bars
RD.jsx experiments, backlog, benchmarks
Broadcast.jsx terminal log, color-coded CRITICAL/BLOCKED/HITL