Documentation

Admin UI

The control plane serves the admin UI at /ui/ (with compose: http://localhost:18081/ui/). Sign in with a control-plane user (for a new install, ADMIN_EMAIL and ADMIN_PASSWORD), then pick one of your organizations (GET /v1/organizations), or open one by id; the one created at install is 00000000-0000-0000-0000-000000000001. The Flow page asks before leaving with unsaved changes. The token is kept in the browser tab's session storage and sent as a bearer token; the UI uses the same /v1 API, roles and validation as any other client. English and Vietnamese, light and dark themes, keyboard accessible.

Flow shows how a request of the chosen scope (keys without a project, or a project) moves through the gateway: request, API key, L0 sanitizer, the L1, L2 and L3 detectors with the parts guard settings let them scan, then every enabled policy rule in gateway order, the Block, Log and Allow outcomes, the upstreams, the output guard and the client.

Flow page with a simulated request

Rule editor, visual Rule editor, text
Visual condition builder Condition as text

Upstreams manages the named upstreams and the org and project defaults. An upstream's key is never entered in the UI: api_key_env names a UPSTREAM_KEY_* variable set on the gateway, and the operator's UPSTREAM_KEY_ORGS decides which organizations may use it; the form shows a refused variable at the field.

Models shows the gateway's running classifier (and whether its files matched the manifest), a notice when the manifest recommends another version, the installed versions and the last reload, read through the control plane (GATEWAY_URL). Below it, the shadow comparison: agreement rate, requests where the candidate would block or allow differently (admins), and score distributions. See Shadow mode and model reload.

Config as code edits the whole routing and policy configuration as YAML, validates it (?dry_run=true, errors by path, marked in the editor), shows a diff against the loaded version and applies it after a confirmation that lists the changes. When the stored policies cannot be exported as a file that applies again (for example, a rule naming a removed field), the page lists them, each linked to the policy and rule on the Flow page.

Upstreams Config as code
Upstreams Config as code with a diff

Guard settings, API keys (the secret is shown once, at creation), projects, exemplars and the audit log (with the route target of each request) have pages of their own.

Dark theme, Vietnamese Audit log
Flow in Vietnamese, dark theme Audit log

The UI loads nothing from other origins and runs under the control plane's Content-Security-Policy (default-src 'self', no inline scripts or styles); the e2e tests run the production build under that policy and fail on any violation. Screenshots are taken against the mocked API of the e2e tests (npm run screenshots in web/).

Source: README.md#admin-ui @ ca69dad29f02