RouterOps / Import
Import Studio
Turn raw router dumps into controlled profiles.
fallback1 provider node1 drift alert
Import flow
The old page dumped you into a textarea. This gives the path upfront.
Step 1
Paste a real dump
Drop raw 9router JSON exactly as captured so RouterOps can normalize the truth, not a hand-edited guess.
Step 2
Normalize the profile
Flatten aliases, combos, keys, and settings into a controlled baseline that can actually ship cleanly.
Step 3
Review rendered outputs
Check the Claude settings and canonical payload before any machine applies them.
Why this matters
Bad imports are how weird alias regressions sneak in. The import studio now reads like an operator workflow instead of a raw utility panel.
Raw input
9router dump
Normalized output
RouterOps profile
Rendered targets
Claude + router payload
Normalize a router dump
Operator-first layout: input on the left, rendered truth on the right.
Input
db.json
Action
Normalize
Output
Profile
Paste a full live dump
Import checklist
Small guardrails so this page does real work instead of just looking nice.
Paste a full router dump instead of a trimmed snippet.
Normalize first so aliases and secrets get cleaned consistently.
Review rendered outputs before treating the profile as source of truth.
Imported profile preview
Kevin baseline — normalized from raw router state.
Provider nodes
1
Connections
2
API keys
1
Alias routing
claude-opus-4.8lz/claude-opus-4.8
opus-4-8cc/claude-opus-4-8
Rendered Claude settings
Deterministic output target for `~/.claude/settings.json`.
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:20128",
"ANTHROPIC_MODEL": "opus-4-8",
"ANTHROPIC_API_KEY": "sec***en"
},
"model": "opus-4-8",
"smallFastModel": "claude-sonnet-5",
"theme": "auto"
}Rendered router payload
Canonical router state that local agents should apply.
{
"providerNodes": [
{
"id": "node-lz",
"name": "LZ",
"prefix": "lz",
"baseUrl": "https://lightningzeus.com/v1",
"options": {
"id": "node-lz",
"name": "LZ",
"prefix": "lz",
"baseUrl": "https://lightningzeus.com/v1"
}
}
],
"providerConnections": [
{
"id": "conn-claude",
"provider": "claude",
"authType": "oauth",
"name": "Account 1",
"priority": 1,
"isActive": true,
"defaultModel": "opus-4-8",
"secrets": {
"accessToken": "sec***en",
"refreshToken": "sec***en"
},
"metadata": {
"id": "conn-claude",
"provider": "claude",
"authType": "oauth",
"name": "Account 1",
"priority": 1,
"isActive": 1,
"defaultModel": "opus-4-8"
}
},
{
"id": "conn-lz",
"provider": "lz",
"authType": "apikey",
"name": "LightningZeus",
"priority": 2,
"isActive": true,
"defaultModel": "claude-opus-4.8",
"secrets": {
"apiKey": "lz-***ey"
},
"metadata": {
"id": "conn-lz",
"provider": "lz",
"authType": "apikey",
"name": "LightningZeus",
"priority": 2,
"isActive": 1,
"defaultModel": "claude-opus-4.8"
}
}
],
"combos": [
{
"id": "combo-opus",
"name": "opus-4-8",
"models": [
"lz/claude-opus-4.8",
"cc/claude-opus-4-8",
"cx/gpt-5.5"
],
"kind": null
}
],
"modelAliases": {
"claude-opus-4.8": "lz/claude-opus-4.8",
"opus-4-8": "cc/claude-opus-4-8"
},
"apiKeys": [
{
"id": "prod-key",
"name": "prod-key",
"value": "rk_***90",
"metadata": {
"id": "prod-key",
"name": "prod-key"
}
}
],
"settings": {
"comboStrategy": "fallback",
"requireLogin": true,
"requireApiKey": true,
"mitmRouterBaseUrl": "http://localhost:20128"
}
}