> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.aiplanet.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Operator console

> Manage keys, models, budgets, and usage from the private operator console.

AI Planet managed deployments expose the operator console at the Platform's
`/gateway` path. The browser uses a same-origin `/gateway/api/*` facade while
the private gateway Admin API remains `/admin/*` behind the deployment edge.
Self-managed installations may keep the bundled `/admin/ui` default. The
console manages concrete models, aliases, and application API keys and shows
usage, cost, budgets, alerts, and reservation state. The same workflows remain
available through the Admin API for automation.

<Frame caption="The gateway console overview: request, token, and spend totals for the selected period, daily spend, request volume, top virtual keys, and requests by model.">
  <img src="https://mintcdn.com/aiplanet/HCpBly2Dz7WdHHWf/images/llm-gateway/console-overview.png?fit=max&auto=format&n=HCpBly2Dz7WdHHWf&q=85&s=7f824803f1b895dac179a326beb99f4b" alt="AI Gateway console overview page" width="1920" height="1080" data-path="images/llm-gateway/console-overview.png" />
</Frame>

Platform members enter through the signed organization handoff. Break-glass
operators can use the console's `/operator/login` route. Successful login
creates an opaque session in an `HttpOnly`, `SameSite=Strict` cookie scoped to
the console path; the browser never stores an admin API key. Keep the raw Admin
API on a private operator origin.

The first administrator is bootstrapped from a password environment variable during deployment. System admins can create and disable `system_admin`, `system_operator`, `org_admin`, `org_operator`, and `org_viewer` users under **API Keys → Administrators**. Organization roles require one organization scope; the API forces all tenant data and key mutations into that scope. System operators manage global gateway resources but not identities. Legacy `admin`, `operator`, and `viewer` records continue to work as aliases.

## Create an API key

Flow: **API Keys → Create key → choose aliases and endpoints → set limits and budget → Create**.

The console displays the raw token exactly once. Put it in the application's secret manager before closing the result dialog.

<Frame caption="Create an application API key with model, endpoint, RPM, TPM, expiry, and budget scopes">
  <img src="https://mintcdn.com/aiplanet/HCpBly2Dz7WdHHWf/images/llm-gateway/key-creation.png?fit=max&auto=format&n=HCpBly2Dz7WdHHWf&q=85&s=180dfa917a911a3580d2e286bf990743" alt="Create an application API key with model, endpoint, RPM, TPM, expiry, and budget scopes" width="1440" height="900" data-path="images/llm-gateway/key-creation.png" />
</Frame>

For repeatable provisioning, use [Create a key with the API](/llm-gateway/administration/api-keys#create-a-key).

## Inspect an API key

Flow: **API Keys → Details**.

The read-only detail view shows tenant, application, environment, model and endpoint scopes, RPM/TPM, budget, expiry, rotation-overlap deadline, status, and whether the key is owned by deployment configuration or the database. Organization-scoped users can inspect only keys returned for their organization. Raw tokens and token hashes are never available in this view.

Use the [List keys API](/llm-gateway/administration/api-keys#list-keys) to retrieve the same safe metadata for automation.

## Edit an API key

Flow: **API Keys → Edit → change policy → Save changes**.

The key ID, tenant/application identity, environment, role, and token remain unchanged. You can edit its display name, model and endpoint scopes, RPM/TPM limits, expiry, and budget. The same raw token continues to work under the new policy, and no token is displayed or returned.

For budget changes, the dialog states that the new limit applies immediately to the current period and shows spent, reserved, committed, and available-after-save amounts on one line. A changed reset interval appears separately because it starts with the next period and does not reset current usage or move the current period deadline. Lowering the limit below spent plus reserved usage adds a separate warning, requires confirmation, and causes new requests to fail until capacity is available; existing reservations can still settle. Budget enforcement cannot currently be removed through an edit.

See [Update a key](/llm-gateway/administration/api-keys#update-a-key) for the API contract and deployment-owned key behavior.

## Review usage

Flow: **Overview → select time range → filter application, environment, model, or provider**.

<Frame caption="Gateway request, token, cost, latency, error, and attribution overview">
  <img src="https://mintcdn.com/aiplanet/HCpBly2Dz7WdHHWf/images/llm-gateway/usage-dashboard.png?fit=max&auto=format&n=HCpBly2Dz7WdHHWf&q=85&s=5216cf649f0d5e363cc520adc8bc9dd7" alt="Gateway request, token, cost, latency, error, and attribution overview" width="1440" height="1690" data-path="images/llm-gateway/usage-dashboard.png" />
</Frame>

The [Usage and cost APIs](/llm-gateway/administration/usage) expose the same source data.

When database payload capture is enabled, a **View** action appears on eligible rows under **Overview → Recent requests**. It opens the retained input and output for that one request. Rows without retained content show **Not stored**; a row may lose its payload before its usage metadata because payload retention is configured separately.

## Set and monitor a budget

Set the budget and duration while creating a key. The Overview shows spent, reserved, available, utilization, reset, alert delivery, and reservation state.

<Frame caption="Per-key budget utilization, remaining balance, reset, alerts, and reservations">
  <img src="https://mintcdn.com/aiplanet/HCpBly2Dz7WdHHWf/images/llm-gateway/budget-detail.png?fit=max&auto=format&n=HCpBly2Dz7WdHHWf&q=85&s=38555e6d1ba7f5c55f078ee5fb071d31" alt="Per-key budget utilization, remaining balance, reset, alerts, and reservations" width="1376" height="157" data-path="images/llm-gateway/budget-detail.png" />
</Frame>

Use the [Budget APIs](/llm-gateway/administration/budgets) for monitoring automation.

## Configure models

Flow: **Models → Add model → review provider mapping, capabilities, and pricing → Add alias → select one or more weighted targets**.

<Frame caption="Concrete provider models and stable weighted application aliases">
  <img src="https://mintcdn.com/aiplanet/HCpBly2Dz7WdHHWf/images/llm-gateway/model-routing.png?fit=max&auto=format&n=HCpBly2Dz7WdHHWf&q=85&s=b3c2b86f68f9812d932ade396b52f479" alt="Concrete provider models and stable weighted application aliases" width="1440" height="900" data-path="images/llm-gateway/model-routing.png" />
</Frame>

Provider credentials and provider API bases remain deployment configuration. The console can add model routes only for those configured providers. See [Models and providers](/llm-gateway/administration/models).

## Console security

The console belongs on the private operator surface. Its HTML and static assets do not require authentication, but every data request requires a valid session and every mutation requires the CSRF token bound to that login. OIDC Authorization Code + PKCE and an AI Planet Platform organization-membership handoff are available when configured; local passwords remain the audited break-glass path. Platform handoff tokens are short-lived, single-use, and submitted by form POST rather than stored by the browser. Admin bearer keys are for API automation, not browser login. See [Security](/llm-gateway/security) for session, role, audit, and network controls.
