Install
openclaw skills install model-switchboardSafely configure OpenClaw AI models by validating roles, autoloading backups, blocking unsafe changes, and managing via CLI or Canvas UI.
openclaw skills install model-switchboard⛔ HARD RULE: NEVER edit
openclaw.jsonmodel fields directly. Always use this skill's commands. No exceptions. Ever.
Editing openclaw.json directly for model changes is the #1 cause of OpenClaw gateway crashes. Wrong model type in wrong slot = instant death. No backup = hours rebuilding. This skill eliminates that entirely.
openclaw models set) — never raw JSONSWITCHBOARD="$SKILL_DIR/scripts/switchboard.sh"
# View current setup
$SWITCHBOARD status
# Change models
$SWITCHBOARD set-primary "anthropic/claude-opus-4-6"
$SWITCHBOARD set-image "google/gemini-3-pro-preview"
$SWITCHBOARD add-fallback "openai/gpt-5.2"
$SWITCHBOARD remove-fallback "openai/gpt-5.2"
$SWITCHBOARD add-image-fallback "openai/gpt-5.1"
# Preview before applying
$SWITCHBOARD dry-run set-primary "openai/gpt-5.2"
# Discovery & recommendations
$SWITCHBOARD discover # List all available models
$SWITCHBOARD recommend # Get optimal suggestions
# Redundancy (3-deep failover)
$SWITCHBOARD redundancy # Assess current redundancy
$SWITCHBOARD redundancy-deploy # Preview optimal config
$SWITCHBOARD redundancy-apply # Apply optimal config
$SWITCHBOARD redundancy-apply 4 # Custom depth
# Backup & restore
$SWITCHBOARD backup # Manual backup
$SWITCHBOARD list-backups # Show all backups
$SWITCHBOARD restore latest # Undo last change
# Import/Export (portable model configs)
$SWITCHBOARD export config.json
$SWITCHBOARD import config.json
# Cron model validation
$SWITCHBOARD validate-cron-models # Check cron jobs use valid models
# Diagnostics
$SWITCHBOARD health # Gateway + provider status
$SWITCHBOARD validate <model> <role> # Test compatibility
| Role | Purpose | Config Key |
|---|---|---|
| Primary | Main LLM for all conversations | agents.defaults.model.primary |
| Fallback | Ordered backup LLMs | agents.defaults.model.fallbacks |
| Image | Vision/image processing | agents.defaults.imageModel.primary |
| Image Fallback | Backup vision models | agents.defaults.imageModel.fallbacks |
| Heartbeat | Low-cost polling model | agents.defaults.heartbeat.model |
| Coding | Sub-agent code generation | Spawn-time model param |
The validation engine (scripts/validate.py) enforces:
provider/model-name (e.g., anthropic/claude-opus-4-6)llm + tools capabilitiesvision capabilityanthropic — Claude family (Opus, Sonnet, Haiku)openai — GPT familyopenai-codex — Codex OAuth modelsgoogle — Gemini familyopencode — Zen proxy (routes to various models)zai — GLM familyxai — Grok familyopenrouter — Multi-provider gatewaygroq, cerebras — Fast inferenceTo show the visual dashboard:
# Get UI data
DATA=$($SWITCHBOARD ui)
# Present via canvas
# The UI reads window.__switchboardData JSON
The Canvas UI at ui/index.html shows:
When a user asks to change model assignments:
$SWITCHBOARD status$SWITCHBOARD dry-run <action> <model>$SWITCHBOARD <action> <model>NEVER:
openclaw.json directly for model fieldsGateway won't start:
$SWITCHBOARD restore latest
openclaw gateway restart
# Or: openclaw doctor --fix
"Model is not allowed" error: Model isn't in the allowlist. Add it or clear the list:
openclaw config set 'agents.defaults.models."provider/model"' '{"alias":"Name"}'
# Or clear: openclaw config unset agents.defaults.models
Unknown model warning:
The model isn't in model-registry.json. Add it for future validation:
# Edit model-registry.json to add the model entry
model-switchboard/
├── SKILL.md # This file — agent instructions
├── README.md # ClawHub publishing readme
├── model-registry.json # Known model capabilities database
├── scripts/
│ ├── switchboard.sh # Main CLI tool (bash)
│ └── validate.py # Validation engine (python3, no deps)
└── ui/
└── index.html # Canvas dashboard (single-file, no deps)