Provider health · last 72h — the shape, not just the current status
One cell per hour, oldest left. Grey = no traffic (not "healthy" — an idle hour and a clean hour are different facts). Window is capped at 72h because that is how long the hourly buckets live; anything longer would be invented history.
Estimates, not invoices — incremented with the failover engine's per-request estimate, so a threshold crossing is meaningful even if the absolute $ is ±30%.
Loading…
Grant plan · testing / comps
Manually set a user's plan (no payment). Use free to revoke.
Users
Email
Plan
Auto-renew
Joined
Set plan
Loading…
Page size
User detail
Loading…
Model usage & cost
Real input/output tokens per model, with an approximate cost (provider list prices; cached input billed ~20%). Bars show input (blue) vs output (green) volume.
Loading…
Edit success (per model)
Share of agent edit-tool calls that applied cleanly — detected server-side from edit results (the agent-quality north star). Compare the cheaper tool model vs the frontier one: if success % is comparable, keep the cheaper routing; if it drops, revert tool_call_model_cheap in Settings → Model routing.
Loading…
Skill-pack usage (the moat thesis-test)
Which domain skill packs the agent actually loads (counted server-side from the injected skill block — no Langfuse). The thesis test: if the packs are rarely invoked, the domain-depth bet isn't landing yet.
Loading…
Live in ~30 s — changes apply within the config cache TTL after saving.
Model routing
max_validate_pct Of the users eligible for the pass above, the share that actually gets it — a readable A/B. 100 = everyone (the plain on-switch). Set it to 50 and BOTH arms run at once, so the edit-success board can show the difference instead of you comparing two periods that differ in a dozen other ways. Assignment is stable per user.
telemetry_excluded_emails Accounts whose turns stay OUT of the learning counters (routing/edit outcomes, task-model, edit-format, skills, activation) and out of the A/B arms — but are still BILLED normally. This exists for the coding benchmark, which posts as an ordinary user on purpose: its suites are 19–32 tasks against a handful of real users, so one run would not add noise to the evidence, it would BE the evidence. Comma-separated. Leave EMPTY to record everyone.
tool_call_model Tool/function-call turns
tool_call_model_cheap Cheaper tool turns — empty falls back to tool_call_model
skill_gating_pct % of users (stable sha256(user.id) bucket) who get the NARROWED skill plan instead of the whole ~180-name catalogue. 0 = off, 100 = everyone. ⚠️ NOT a token saving — that block is an identical prefix on every request and our measured cache hit is 95.2%, so it costs ~₹0.0152/request. Gating makes the prefix vary per repo and can LOWER the hit rate. Judge it on answer quality and the Models-tab cache hit; revert if that falls.
tool_compress_enabled Rewrites tool output before it is re-sent to the model (~22% of tokens). Audited 2026-08-08: ten silent signal losses found and fixed. Turn this OFF here the moment a tool result looks wrong — it must never need a deploy.on
tool_compress_shadow Measure only — compute the saving and report it, send the model the ORIGINAL text. The safe way to watch a filter change before trusting it.on
cost_aware_failover_enabled Let the router fall back to a cheaper healthy model when the chosen one is failing, instead of retrying the same one.on
vision_model Routed live, like every other slot. A model put here counts as sighted even if it is not in the model registry, so a new multimodal model can be onboarded before it lands there.
vision_tool_model Where a screenshot goes when the turn ALSO carries tools — every image pasted in Agent mode. Honoured only if the model registry says the id can both see and call tools; otherwise the sighted vision_model keeps the turn. Empty = keep vision_model. Until 2026-09-08 these turns were silently sent to the text tool model and the image was dropped.
Plan daily limits — requests per day per plan
free
trial
pro
proplus
ultra
team
Monthly credits per plan — the depth-weighted credit pool per plan (react to a margin surprise without a redeploy)
free
trial
pro
proplus
ultra
Credit cost per tier — credits charged per request at each routing tier (all four required)
cheap
agentic
frontier
hard
Defaults & rate limits
default_daily_limit Fallback if plan not matched
auth_rate_limit Max auth attempts per window
fx_inr_per_usd USD→INR used to price our COGS against rupee plan prices. A 10% move can flip a plan from profitable to loss-making at cap — see plan_health on /admin/quality. Set it from an invoice, not from memory.
credits_daily_ratio Share of the WEEKLY allowance a single day may use — the anti-binge rail under the weekly gate. At 0.6 a Pro+ day is 1,106 credits, while one p90 agent session (223 turns on the frontier tier) costs 892 — 81% of the day, which is how a Pro+ customer was walled mid-task with 40% of their week still unspent. Raising it is margin-neutral: day, week AND month are all enforced atomically, so the monthly cap still bounds total spend and this only changes pacing inside a week. Do not approach 1.0 — one runaway day would consume the entire weekly allowance.
daily_cap_enabled OFF by default since 2026-08-23, by the owner's decision. The pacing model we match uses a five-hour session window plus a weekly limit and has NO daily cap; this rail was the only place the two differed, and it is the gate a user actually hit. Turning it off cannot cost margin: week AND month are still enforced atomically, so the maximum a plan can spend is unchanged. Switch it back on if a doom-loop turns up — the rail is disabled, not deleted, and credits_daily_ratio above still sizes it.on
auth_rate_window_sec Window size in seconds
login_attempt_limit Failed sign-ins allowed per ACCOUNT before lockout (min 1 — 0 would lock everyone out)
login_attempt_window_sec Lockout window in seconds (a successful sign-in clears the count)
chat_max_concurrent Max in-flight chats per user
support_notify_email New-ticket notifications. Empty = nobody is told; tickets still appear in /tickets.
Spend guard — fleet-wide outage-amplification guard, not per-user billing
Estimated USD. These exist so an outage that re-routes the fleet onto an expensive fallback can be capped without a deploy — that is why they are editable here. The ceiling drops degraded fallbacks for free/trial only; paying tiers are never spend-blocked and no request is ever refused.
spend_hourly_alert_usd ~6x a normal hour → ops email
spend_daily_alert_usd ~10x a normal day → ops email
spend_daily_ceiling_usd Above this, degraded fallbacks are dropped
Downloads — fix the /download page without a redeploy
download_version label shown on the download page (e.g. 1.4.0)
download_checksums JSON map of the SAME artifact keys → sha256 (64 hex). Rendered at /download/checksums — the only way a visitor can verify an installer, since ours are not Authenticode-signed. Update this whenever you replace a file: a stale hash tells someone their good download is tampered.
Auto-renew (Razorpay Subscriptions)
One-time setup: creates a monthly Razorpay plan per paid tier so auto-renew checkout works. Idempotent — safe to click again.
Live promo codes — add, edit, or remove instantly (no redeploy). percent = % off checkout; free_days = grants a plan free for N days with no payment. Removing a code stops it immediately; redemption counts are preserved.
Active coupons
Code
Type
Value
Plan
Expires
Used / Max
Loading…
Add / update a coupon
Code UPPERCASE, alphanumeric
Type
Value percent 1–100, or number of days
Plan required for free_days; blank = any (percent)
Expires YYYY-MM-DD, blank = never
Max uses 0 = unlimited
Measured model quality — the benchmark engine scores each tier/model on the coding-eval and ranks by pass@1. This is the source of truth for routing — measured, not vendor claims. Runs are stored versioned (never overwritten).
Coverage — do the models actually serving traffic have a score in this run?
Loading…
Routing recommendations
Advisory only. Nothing switches automatically — the engine ranks by pass@1, breaks ties on $/solve, and you flip the slot yourself in Settings → Model routing. Benchmark scores are compared against live production signals (TTFT p95, edit-success) because the offline eval is blind to latency.
Loading…
Leaderboard
#
Target
pass@1
Passed
Wall s
Loading…
Capability matrix — pass@1 per difficulty (measured)
Target
Overall
Easy
Medium
Hard
—
Run history — newest first, winner per run (regression tripwire)
When
Label
Winner
pass@1
Targets
—
Context Engine — is semantic_search actually being used? The IDE tool has no logging and falls back to grep silently, so a broken engine and an unused one look identical from the outside. This is the only thing that tells them apart.
Loading…
Live Razorpay mandates — we store ONE subscription id per user and overwrite it with whichever mandate charged last, so a second mandate made the first invisible: on no screen, cancellable through nothing, still charging. New ones are refused now; the ones already out there can only be found by asking Razorpay. Does not run on its own — it calls the Razorpay API.
Did anything break? — user-facing failures, so a silent breakage shows up here instead of waiting for a customer to report it. ide = reported by the app (the class the server can't see); server = what the backend knows (empty_response_healed = a user almost saw an error; _unhealed = they did).
Last 7 days
— a spike means investigate now
TOTAL ERRORS
—
FROM APP (IDE)
—
FROM BACKEND
—
By kind — what is actually failing
Kind
Count
Loading…
By model — which model produced the failure. A heal is a SECOND full provider call we pay for, so a model high on this list is costing twice per affected turn.
Model
Kind
Count
—
By release — which build regressed
Version
Errors
—
Ops error log — provider degraded/failed, reliability, and billing alerts land here instead of email. Each issue is deduped to once per hour, newest first. Email is off by default — flip ops_email_alerts in Settings to also email during a critical window.
Recent alerts
Loading…
What actually serves a request. These are the live values the router reads, not
the defaults baked into the deploy. An A/B rule sends a slice of one tier to a challenger model —
it was the only routing control with no page at all, so stopping one meant a database or a script.
A/B challenger
Loading…
Sets model_ab to {}. Takes effect on the next request.
Tier → model (live)
Edit these on the Settings tab. They are read on every request, so a change is live without a deploy.
Budgets
Voice is billed per audio second and vision per image, so each has its own daily ceiling per plan.
Did users LIKE it? — every other board measures machinery (edit-success = the edit applied; the eval = we pass tests). This is the only one that says the human was happy. A 👎 is also a real failure case worth turning into an eval task.
Last 30 days
SATISFACTION
—
👍 UP
—
👎 DOWN
—
BY TIER
—
What users said went wrong
— their own words; the most actionable list here (and real eval tasks)