frouter — Free AI Model Router CLI
frouter is a terminal UI that discovers, pings, and ranks free AI models from NVIDIA NIM and OpenRouter in real time — then writes the best model directly into your OpenCode or OpenClaw config.
When to use this skill
-
Select the fastest responding free LLM for your OpenCode or OpenClaw session
-
Check live availability, latency, and uptime of free models before starting work
-
Configure NVIDIA NIM / OpenRouter API keys interactively with browser auto-open
-
Non-interactively capture the best model ID in shell scripts (frouter --best )
-
Benchmark free model tiers (S+ → C based on SWE-bench Verified scores)
-
Switch models on the fly without manually editing JSON config files
Installation
One-shot (no install)
npx frouter-cli
Global install (recommended)
npm i -g frouter-cli
or with bun
bun install -g frouter-cli
Instructions
Step 1: First run — API key setup wizard
frouter
On first run, the setup wizard opens provider key pages in your browser automatically. Press ESC to skip any provider you don't have a key for yet.
API key sources:
Provider Key URL Prefix
NVIDIA NIM build.nvidia.com/settings/api-keys nvapi-
OpenRouter openrouter.ai/settings/keys sk-or-
Keys are stored at ~/.frouter.json (permissions 0600 ).
You can also pass keys via environment variables:
NVIDIA_API_KEY=nvapi-xxx frouter OPENROUTER_API_KEY=sk-or-xxx frouter
Step 2: Interactive TUI — select and apply a model
frouter
The TUI pings all models every 2 seconds. Use arrow keys to navigate, / to search, and Enter to apply a model to OpenCode or OpenClaw.
Key actions:
Key Action
↑ / ↓
Navigate models
/
Search / filter by name
Enter
Select → target picker (OpenCode / OpenClaw)
T
Cycle tier filter: All → S+ → S → A+ → …
A
Quick API key add/change
P
Settings (keys, provider toggle, live test)
0 –9
Sort by column (press again to reverse)
?
Help overlay
q
Quit
Target picker (after Enter):
Key Action
Enter / G
Write config + launch the tool
S
Write config only (no launch)
ESC
Cancel
Configs written:
-
OpenCode CLI → ~/.config/opencode/opencode.json
-
OpenClaw → ~/.openclaw/openclaw.json
Existing configs are automatically backed up before overwriting.
Step 3: Non-interactive best-model selection (scripts)
Print best model ID after ~10 s analysis
frouter --best
Capture in a variable
MODEL=$(frouter --best) echo "Best model: $MODEL"
Selection tri-key sort: status=up → lowest avg latency → highest uptime.
Step 4: Tune auto-sort behavior (optional)
Pause auto-resorting for 2.5 s after scroll navigation
FROUTER_SCROLL_SORT_PAUSE_MS=2500 frouter
Disable rolling metrics cache (force legacy recompute)
FROUTER_METRICS_CACHE=0 frouter
Or persist in ~/.frouter.json :
{ "ui": { "scrollSortPauseMs": 1500 } }
TUI columns
Column Description
Rank
Tier
SWE-bench score tier: S+ (≥70%) → C (<20%)
Provider
NIM or OpenRouter
Model
Display name
Ctx
Context window size
AA
Arena Elo / intelligence score
Avg
Rolling average latency (HTTP 200 only)
Lat
Latest measured ping latency
Up%
Uptime % this session
Verdict
🚀 Perfect / ✅ Normal / 🔥 Overloaded / 💀 Unusable
Examples
Example 1: Start frouter and apply a model to OpenCode
frouter
Navigate to desired model → Enter → select OpenCode CLI → Enter
Example 2: Get best model for a script
MODEL=$(frouter --best) opencode --model "$MODEL" "refactor this function"
Example 3: Set API key without entering TUI
NVIDIA_API_KEY=nvapi-xxx frouter --best
Example 4: Test-onboard from a clean state
Without touching your real config
npm run test:fresh-start
Model tier scale (SWE-bench Verified)
Tier Score Description
S+ ≥ 70% Elite frontier
S 60–70% Excellent
A+ 50–60% Great
A 40–50% Good
A- 35–40% Decent
B+ 30–35% Average
B 20–30% Below average
C < 20% Lightweight / edge
Best practices
-
Set both API keys — NIM and OpenRouter have overlapping models; having both maximises coverage
-
Use --best in scripts instead of hardcoding a model ID — model availability changes
-
Press S to write config only when you want to set the model without launching the tool
-
T to filter tier — if you only want S+ or S models, press T to cycle the tier filter
-
Keep frouter updated — model catalog syncs daily via GitHub Actions; accept in-app update prompts
References
-
GitHub: jyoung105/frouter
-
npm: frouter-cli
-
Homepage
-
TUI guide — full keyboard shortcuts and column reference
-
Providers guide — NVIDIA NIM and OpenRouter setup