The Gateway dashboard is the browser Control UI served at / by default (override with gateway.controlUi.basePath).

Quick open (local Gateway):

Key references:

Auth is enforced at the WebSocket handshake via the configured gateway auth path:

See gateway.auth in Gateway configuration.

The Control UI is an admin surface (chat, config, exec approvals). Do not expose it publicly. The UI strips credentials from the URL after load. After a successful token-mode connection, it keeps the shared secret in sessionStorage for the current browser tab and Gateway origin; passwords stay in memory only. Prefer localhost, Tailscale Serve, or an SSH tunnel.

Fast path (recommended)

Auth basics (local vs remote)

Automatic browser handoff

An identity-aware HTTPS host can provide automatic login for direct dashboard links while keeping the Gateway's existing token and device authentication. After an initial connection fails because authentication is missing, the Control UI makes one same-origin request to GET /.well-known/apus/browser-bootstrap (under the Control UI base path, if configured). Existing credentials are tried first. Explicit credentials, remote Gateway selections, pairing failures, and rejected credentials do not trigger this recovery.

This endpoint belongs to the deployment's authenticated proxy or handoff service. Apus does not expose an unauthenticated credential issuer. The service must independently verify the browser's identity and authorization before using the host's apus dashboard --json handoff. Return only its single-use browser credential:

{ "bootstrapToken": "<single-use-browser-bootstrap>", "bootstrapProfile": "owner" }

Use Content-Type: application/json and Cache-Control: no-store, reject cross-origin requests, and never return the shared Gateway token. The UI rejects redirects, responses larger than 8 KiB, and tokens longer than 4096 printable ASCII characters. The request has a 45-second deadline and is cancelled if the connection changes or the page stops. Successful recovery preserves the current dashboard route. If no endpoint is configured or the host declines the request, the existing login instructions remain available.

Open in Telegram

Telegram bots can open the Control UI as a Telegram Mini App with /controlui. The separate /dashboard chat command creates or updates a session dashboard. If you used /dashboard for the Mini App in an earlier release, see the migration guidance.

Requirements:

The Mini App performs a bounded one-time dashboard handoff and redirects to Control UI with a short-lived bootstrap token. It does not expose a shared gateway token in the URL, and it does not receive the administrator grant reserved for handoffs issued directly by the Gateway host.

Non-goals for v1:

If you see "unauthorized" / 1008

Related