Skip to content

Console

Watch what the Gateway did, and manage what can call it. Eight surfaces, grouped by whether you are looking or acting.

The Console lives at /dashboard. Every surface has its own URL, so a link to the thing you are looking at is a link somebody else can open, and the browser back button works. The sidebar, the header title and the command palette all read one list — src/app/dashboard/nav.ts — so a surface cannot exist in one and be missing from another.

The grouping is the whole idea. Monitor is read-only: what happened, what it cost, what broke. Operate is what this account can reach — a credential, the model catalogue behind it, a callback. Account is you and your organization.


The surfaces

SurfacePathThe question it answers
Overview/dashboardWhat has this account done lately, and what is left of the allowance?
Usage/dashboard/usageWhat did it cost, is it working, and whose fault is a failure — by model, key or client?
Logs/dashboard/logsShow me the individual requests, and the whole trace row behind one.
Clients/dashboard/clientsWhich client was this spend for, and is any of them near its budget?
API Keys/dashboard/keysWhich credentials exist, what can each one do, and is anything still using it?
Models/dashboard/modelsWhat can this key call, at what price, in which tier?
Webhooks/dashboard/webhooksWhere should a budget alert, a failed call or a day's usage be sent?
Settings/dashboard/settingsWho is on this organization, and which provider keys are its own?

The pages

Usage

Spend from the priced ledger; requests, error rate, p50/p95 and failures from the trace. By model, provider, key or client.

Logs

One row per Gateway request, newest first, with the full trace row behind it.

Clients

Split spend by the client each call was for, cap it with a budget, and export a monthly statement.

API keys

Minting, scopes, who can manage a key, rotation, and how a key is stored.

Models

The rate card for this account: what your key can call, at what price, and what “auto” picks.

Webhooks

Signed POSTs to your endpoint when a client nears its budget, a Gateway call fails, or a day of usage closes — retried on failure. Paid plans.

Settings & billing

Profile, organization members and roles, billing, and your own provider keys.


Everything that reads the ledger is org-scoped

Overview, Usage, Logs and API Keys all read the whole organization and narrow with a filter. An organization is the unit a bill and an incident belong to.


Command palette

Press ⌘K (or Ctrl+K) anywhere in the Console. It opens a search box over the eight surfaces above.

Matching is a plain substring over the label, the hint and a keyword list, so p95 finds Usage and secret finds API Keys. Arrow keys move, Enter runs, Escape closes.

Two surfaces need a migrationUsage and API Keys read tables that arrive with supabase/migrations/20260908_api_keys_and_request_traces.sql. On a deployment where that has not been applied, both say so plainly rather than rendering an empty dashboard that looks like zero traffic.

The Console does not replace the response headers. Everything Usage and Logs know about a request was written from the same code path that set x-lobstack-request-id on the response, so a caller and an operator are looking at the same event from two sides. That mapping is set out on the Usage page.

Lobstack

An AI team that asks before it acts, and an API with a receipt on every call.

© LobstackXLinkedInGitHub