Skills openclaw-admin
Manage and inspect the OpenClaw multi-agent gateway — list agents, check model health, view routing rules, manage crons, inspect context budgets, and run system diagnostics.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/atiati82/openclaw-admin" ~/.claude/skills/clawdbot-skills-openclaw-admin && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/atiati82/openclaw-admin" ~/.openclaw/skills/clawdbot-skills-openclaw-admin && rm -rf "$T"
manifest:
skills/atiati82/openclaw-admin/SKILL.mdsource content
OpenClaw Admin — Gateway Management Skill
Use this skill when you need to:
- List or inspect active agents and their models
- Check which Ollama models are running
- View or modify routing rules, crons, or triggers
- Inspect context budget allocations
- Run gateway health diagnostics
- Hot-reload the gateway after config changes
Config File Locations
| File | Purpose |
|---|---|
| Master gateway config (agents, channels, scheduler, tools) |
| Deterministic keyword → agent routing |
| Scheduled jobs (heartbeat, reports) |
| Webhook-triggered actions |
| Token budgets per model |
| Agent prompt files |
Commands
List All OpenClaw Agents
cat ../openclaw.json | python3 -c " import json, sys data = json.load(sys.stdin) agents = data.get('agents', {}) print(f'{'ID':<20} {'Role':<35} {'Model':<45} {'Provider':<12} {'Enabled'}') print('-' * 130) for aid, a in agents.items(): enabled = '❌' if a.get('enabled') == False else '✅' print(f'{aid:<20} {a.get(\"role\",\"\"):<35} {a.get(\"model\",\"\"):<45} {a.get(\"provider\",\"\"):<12} {enabled}') print(f'\nTotal: {len(agents)} agents') "
Check Ollama Models Running
ollama list 2>/dev/null || echo "Ollama not running"
List Active Crons
cat config/CRONS.json | python3 -c " import json, sys crons = json.load(sys.stdin) print(f'{'Name':<30} {'Schedule':<20} {'Enabled'}') print('-' * 60) for c in crons: enabled = '✅' if c.get('enabled', False) else '❌' print(f'{c[\"name\"]:<30} {c[\"schedule\"]:<20} {enabled}') "
List Routing Rules
cat config/ROUTING.json | python3 -c " import json, sys data = json.load(sys.stdin) routes = data.get('routes', []) print(f'{'Route':<25} {'Primary Agent':<20} {'Keywords (first 5)'}') print('-' * 80) for r in routes: name = r.get('name', '') primary = r.get('agents', [''])[0] if r.get('agents') else '' keywords = ', '.join(r.get('keywords', [])[:5]) print(f'{name:<25} {primary:<20} {keywords}') print(f'\nTotal: {len(routes)} routes') chains = data.get('chains', []) if chains: print(f'\nChains: {len(chains)}') for c in chains: steps = ' → '.join(c.get('steps', [])) print(f' {c[\"name\"]}: {steps}') "
View Context Budgets
cat config/CONTEXT_BUDGETS.json | python3 -c " import json, sys data = json.load(sys.stdin) models = data.get('models', {}) print(f'{'Model':<50} {'Window':<12} {'Budget':<10} {'Slot'}') print('-' * 100) for m, v in models.items(): print(f'{m:<50} {v[\"context_window\"]:<12} {v[\"budget\"]:<10} {v.get(\"_slot\",\"\")}') "
List Active Triggers
cat config/TRIGGERS.json | python3 -c " import json, sys triggers = json.load(sys.stdin) print(f'{'Name':<25} {'Watch Path':<20} {'Enabled'}') print('-' * 55) for t in triggers: enabled = '✅' if t.get('enabled', False) else '❌' print(f'{t[\"name\"]:<25} {t.get(\"watch_path\",\"\"):<20} {enabled}') "
Gateway Health Check (Full)
bash ./status.sh
Check Scheduled Jobs in openclaw.json
cat ../openclaw.json | python3 -c " import json, sys data = json.load(sys.stdin) jobs = data.get('plugins', {}).get('scheduler', {}).get('jobs', []) print(f'{'Name':<30} {'Cron':<18} {'Timezone':<18} {'Enabled'}') print('-' * 80) for j in jobs: enabled = '❌' if j.get('enabled') == False else '✅' print(f'{j[\"name\"]:<30} {j[\"cron\"]:<18} {j.get(\"timezone\",\"\"):<18} {enabled}') print(f'\nTotal: {len(jobs)} scheduled jobs') "
Quick Agent Count Summary
echo "=== Agent Ecosystem Summary ===" echo "" echo "OpenClaw agents (openclaw.json):" cat ../openclaw.json | python3 -c "import json,sys; d=json.load(sys.stdin); a=d['agents']; e=[k for k,v in a.items() if v.get('enabled')!=False]; print(f' {len(e)} active / {len(a)} total')" echo "" echo "Routing agents (ROUTING.json):" cat config/ROUTING.json | python3 -c "import json,sys; d=json.load(sys.stdin); print(f' {len(d.get(\"routes\",[]))} routes, {len(d.get(\"chains\",[]))} chains')" echo "" echo "Crons (CRONS.json):" cat config/CRONS.json | python3 -c "import json,sys; c=json.load(sys.stdin); e=[x for x in c if x.get('enabled')]; print(f' {len(e)} active / {len(c)} total')" echo "" echo "Triggers (TRIGGERS.json):" cat config/TRIGGERS.json | python3 -c "import json,sys; t=json.load(sys.stdin); e=[x for x in t if x.get('enabled')]; print(f' {len(e)} active / {len(t)} total')" echo "" echo "Ollama models:" ollama list 2>/dev/null | tail -n +2 | wc -l | xargs -I{} echo " {} models loaded" echo "" echo "Skills:" ls -d skills/*/ 2>/dev/null | wc -l | xargs -I{} echo " {} skills installed"
Rules
- Always use
for JSON parsing — never usepython3 -c
(not guaranteed installed).jq - All config paths are relative to the
workspace root.clawdbot/
is one level up atopenclaw.json
(relative to skill dir) or../../openclaw.json
(relative to workspace).../openclaw.json- Never modify
without explicit user approval.openclaw.json - When reporting agent status, always distinguish between OpenClaw agents and ROUTING.json agents — they are separate systems.
- After any config modification, remind the user to hot-reload: the gateway picks up changes on next request, or restart with
.npx thepopebot