Install
openclaw skills install ai-model-router-v2Automatically routes requests between local and cloud AI models based on task complexity and privacy, with auto-detection and context tracking.
openclaw skills install ai-model-router-v2Compact, intelligent model routing that just works.
# Install
npx clawhub@latest install ai-model-router
# First run - auto-detects your models
python3 skill/core/router.py "What is Python?"
# List available models
python3 skill/core/router.py --list
Your Request → Analyze → Select Model
↓
Simple? → Primary (fast/cheap)
Complex? → Secondary (capable)
Private? → Primary (forced)
| Pattern | Points |
|---|---|
| Microservices, architecture | +10 |
| Design, implement, optimize | +5 |
| Explain, analyze, compare | +3 |
| Syntax, example, "what is" | -3 |
Threshold: 5 (simple vs complex)
| Feature | Status |
|---|---|
| Auto-detect local models | ✓ (Ollama, LM Studio) |
| Cloud model registry | ✓ (7 built-in) |
| Privacy detection | ✓ (API keys, passwords) |
| Context tracking | ✓ (conversations) |
| JSON config | ✓ (optional) |
| CLI interface | ✓ |
| Core code size | ~200 lines |
# Route a task
python3 skill/core/router.py "Design a system"
python3 skill/core/router.py "What is a for loop?"
# Options
--json # JSON output
--force primary # Force primary model
--list # List all models
--status # Show status
from skill.core.router import RouterCore
router = RouterCore()
result = router.route("Design microservices")
print(result.model_name) # "Claude Opus 4"
print(result.reason) # "complex_task(score=15)"
print(result.confidence) # 0.75
Create ~/.model-router/models.json:
{
"primary_model": {"id": "ollama:llama3:8b"},
"secondary_model": {"id": "anthropic:claude-opus-4"},
"models": [...]
}
Without config: Auto-detects local + uses cloud registry.
Automatically forces primary (local) when sensitive data detected:
sk-..., api_key)password, passwd)bearer, secret)core/router.py - Core routing engine (~200 lines)modules/detector.py - Auto-detection (optional)modules/context.py - Context tracking (optional)This version combines: