litellm/ui/litellm-dashboard
Abhimanyu Kapur 2e6d196684 feat(auto-router): surface escalation and abandonment quality signals
Cost tells an operator the auto-router is cheaper, not that it is good. This
adds the two quality signals that are already recorded on every request, so no
new instrumentation is needed:

escalation: a turn moved to a costlier model than the turn before it, inside
one session. High precision, low recall. Only upward moves count, since a move
down to a cheaper model is a deliberate price or latency trade, not evidence
the router picked wrong.

abandonment: the caller hung up mid-stream. Low precision, high recall, so it
catches the giving-up that escalation structurally misses.

They render side by side rather than blended, because they fail in opposite
directions and one number would hide which of them fired.

Both are computed for auto-routed sessions and for the same keys' directly
addressed sessions, with identical definitions over LiteLLM_SpendLogs, so the
two are comparable. The baseline is restricted to keys that actually used the
router, since keys carry different model lists and pooling all non-router
traffic would compare unlike populations. It is withheld entirely when the
cohort is too small or when its traffic is not carrying caller-supplied
session IDs, with the reason shown in place of a misleading rate.

Neither signal can come from LiteLLM_AutoRouterSession: that rollup folds a
session to per-model last-touch facts and discards turn order, and escalation
is a question about order.

Also moves avg saved per session up under the headline cost figure.
2026-08-07 20:47:10 -07:00
..
public refactor(ui): migrate MCP, callback, guardrail, SSO, and search tool logos to the shared Logo component (#34169) 2026-07-21 22:22:54 +00:00
scripts chore(ui): add filename, size, JSX-handler, prefer-const, and antd lint rules (#34341) 2026-07-22 19:34:35 -07:00
src feat(auto-router): surface escalation and abandonment quality signals 2026-08-07 20:47:10 -07:00
tests refactor(ui): replace hand-rolled query-param routing with nuqs (#35871) 2026-08-05 13:29:58 -07:00
.env.development hidden dashboard routing, dev and build env files 2025-10-06 19:21:34 -07:00
.env.production remove next env 2026-04-18 16:45:32 -07:00
.npmrc chore(build): move the Admin UI toolchain to Node 24 (#35801) 2026-08-04 12:36:07 -07:00
.nvmrc chore(build): move the Admin UI toolchain to Node 24 (#35801) 2026-08-04 12:36:07 -07:00
.prettierignore feat(ui): generate dashboard API types from the proxy OpenAPI spec (#29816) 2026-06-05 17:20:01 -07:00
.prettierrc added and ran prettier autoformatter 2025-10-04 18:19:48 -07:00
build_release_ui.sh build release ui script 2026-01-17 18:16:14 -08:00
build_ui.sh chore(build): move the Admin UI toolchain to Node 24 (#35801) 2026-08-04 12:36:07 -07:00
build_ui_custom_path.sh chore(build): move the Admin UI toolchain to Node 24 (#35801) 2026-08-04 12:36:07 -07:00
CLAUDE.md test(ui): tier the MCP create tests into unit and integration 2026-08-03 16:22:54 -07:00
components.json refactor(ui): switch shadcn primitives from Radix to Base UI (#32124) 2026-07-07 09:55:41 -07:00
eslint-budgets.json chore: make no-console max 12 2026-08-05 10:45:56 -07:00
eslint-suppressions.json refactor(ui): drop dead locals and unused React state across the dashboard 2026-08-05 18:07:17 -07:00
eslint.config.mjs chore(ui): add filename, size, JSX-handler, prefer-const, and antd lint rules (#34341) 2026-07-22 19:34:35 -07:00
knip.json test(e2e): move Admin UI Playwright suite to tests/e2e/ui (#34196) 2026-07-22 19:43:10 +00:00
next.config.mjs chore(ui): preserve console.warn in prod builds to match lint allow-list 2026-07-03 14:51:14 -07:00
package-lock.json build(deps): bump nanoid to 3.3.17 in the dashboard lockfile 2026-08-07 21:30:09 +00:00
package.json build(deps-dev): bump js-yaml to 4.3.1 2026-08-06 18:14:26 -07:00
postcss.config.js feat(ui): shadcn migration foundation: Tailwind v4, shadcn init, antd cascade fix (#31995) 2026-07-02 19:02:27 -07:00
README.md build(ui/litellm-dashboard): initial commit of litellm dashboard 2024-01-27 12:12:48 -08:00
tsconfig.json test(e2e): move Admin UI Playwright suite to tests/e2e/ui (#34196) 2026-07-22 19:43:10 +00:00
tsconfig.tsbuildinfo feat(complexity_router): let operators rename the four complexity tiers (#35893) 2026-08-05 09:42:57 -07:00
vitest.config.ts chore(build): move the Admin UI toolchain to Node 24 (#35801) 2026-08-04 12:36:07 -07:00

This is a Next.js project bootstrapped with create-next-app.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Inter, a custom Google Font.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out our Next.js deployment documentation for more details.