◆ Smart Router

◆ Smart Router

•
📡 Providers & Models
Loading
…
● Top Models — Current Ranking
#ModelProviderScoreCapCtxTagsReliabilityLatency24h Reqs
📊 Usage
successfulfailed
ModelProviderRequestsTokens (in/out)Success RateAvg LatencyRate LimitsLast Used
🔌 Recent Requests
TimeModelProviderStatusLatencyUser

API Users

UsernameEmailKey (masked)CreatedStatusAccess24h ReqsActions
Loading
…
🩺 Failure Intelligence — by model & reason

Non-200 rows are per-candidate attempts — the fallback recovers most, so overall success stays high. recovered = the model also succeeded recently (transient); dead = repeated failures with no recent success (drift / quota-exhausted — a self-healing candidate).

ModelProviderFailsReasonStateLast errorLast seen
🔴 Chronic Offenders — 30d track record

Models with ≥10 requests over 30 days and a success rate under 90%. Longer memory than the failure table above — catches a model that fails, goes quiet for a day or two, and would otherwise look "untested" (full trust) again on any short window. This is the same signal the reliability scorer now weighs over a 7-day lookback for exactly this reason.

ModelProviderRequests (30d)Success rateLast errorLast seen
🩹 Auto-quarantined — drift (self-healing)

Models absent from their provider's live /models are staled each poll (so the static catalog stops re-adding dead ids) and auto-restored if they return. Signal is /models-absence, never a status code.

—
Loading
…
🧠 Shadow Classifier — what a smarter router WOULD pick (log-only)

Embedding task classification (bge-m3, GB10) runs off the response path, recorded next to the real keyword decision — it does not affect routing. Offline labeled accuracy: 91.7%. Verified 2026-06-29: on the current capability-dominated ranker, task does not change the served model (the top models are high-capability generalists tagged for every task), so promotion is deferred — making it matter needs a task-weighted ranker, not a classifier flip. The "top-for-task" column below is the deterministic rank-1, which is identical across tasks today.

TimeServed (live)Shadow taskWould route → (top for task)KeywordMarginCxMode
📊 Shadow task distribution
🎯 Quality Steers — per-task system-prompt addendum

Appended to the system prompt on every request matching this task (explicit intent wins over auto-detected; _default applies even with no task at all). Keep entries short. Saves take effect immediately — no restart.

🔌 Providers — activate or update a key

Keys are write-only — never displayed once saved. Saving restarts the router (env vars are only read at process start, unlike the settings above) — a few seconds of downtime for every in-flight request.

ProviderModelsStatusKey
🏷️ Model Labels — search & override

Display name, tags, and coding-capability grade. Overrides are durable — unlike editing the catalog directly, they survive the poller's next re-ingestion (every 6h). Live immediately, no restart. Clear a field (empty) to revert to the auto-ingested value.

ModelDisplay nameTags (comma-separated)Code cap. (0–1)
⚙ Advanced — raw JSON ▸

task_policies — routing behavior (quality/effort/allow_code_only) applied ONLY when a client sets task explicitly.

model_aliases — family alias → id-substring pattern (e.g. opus → sub:opus).

code_only_patterns — lowercased id-substrings restricted to CODE tasks only.