Documentation

Run the console

The console is the web application your people use to read verdicts, compare models, query the ledger, manage virtual keys and gather evidence. This page says how to run it and what it needs. It runs as its own process, next to the platform, and is not part of the platform Helm chart.

What it needs

  • The enforcement hook, for virtual keys and the health check.
  • The audit service, for the ledger and for budgets.
  • Your sign-in proxy (oauth2-proxy), which is the only part that talks to your identity provider.
  • The catalogue directory and your policy configuration, which it reads from disk.
  • Two tokens the console's server holds and the browser never sees: the hook's admin token and the audit query token.

Run it

Build once and start the server. It needs Node 22.12 or later.

npm run build
npm start

A container image can be built from the Dockerfile in the console's directory, with --build-arg UI_BUILD_ID=<a commit id or tag>. The image runs as a non-root user and listens on port 8080. This image has not been built or run in a real estate. The server speaks plain HTTP unless you give it a certificate and key; put it behind a reverse proxy that terminates TLS, or set both UI_TLS_CERT and UI_TLS_KEY.

VariableDefaultWhat it sets
UI_HOST, UI_PORT127.0.0.1, 5173Where it listens. The image sets 0.0.0.0 and 8080
UI_GATEWAY_URLhttp://127.0.0.1:8095The hook's address
UI_AUDIT_URLhttp://127.0.0.1:9090The audit service's address
UI_OAUTH2_PROXY_URLhttp://127.0.0.1:4180The sign-in proxy
UI_GATEWAY_ADMIN_TOKENnot setThe hook's admin token. Without it the Keys view does not work
UI_AUDIT_QUERY_TOKENnot setThe audit service's query token. Without it the Ledger and Budgets do not work
UI_POLICY_CONFIGThe policy configuration the hook itself loads
UI_CATALOGUE_DIRThe admission records and provenance artefacts
UI_CLIENT_CATALOGUE_DIRnot setYour own models' records. Unset means none
UI_BUILD_IDnot setA build id the console reports at /version
UI_RATE_LIMIT600API requests per client per minute. 0 turns it off
UI_TRUST_PROXYnot set1 reads the client address from X-Forwarded-For; use it only behind a proxy you control

Keep the two tokens in a secret store and out of any repository.

Who can do what

Every API call needs a signed-in session. The role comes from your identity provider through the sign-in proxy.

  • Everyone signed in can read Admission, Compare reports and Compliance.
  • The admin role also sees Ledger and Entitlement, and can start a Compare run. Anyone without it is told that those sections are for administrators, and the console makes no request for them.
  • A request that changes something, such as issuing or revoking a key, is refused if it comes from another site. The person who acts is recorded from the session, not from anything the browser sends.

Checking that it is running

AddressMeaning
/healthzThe process is up
/readyzThe hook, the audit service and the sign-in proxy each answer. A 503 lists which one does not, as true or false
/versionThe package version and the build id

None of these needs a session and none returns a secret. The console also shows a banner across the top when it cannot reach the hook or the audit service. The footer's Copy diagnostics button copies the build, the page, the time and recent failed calls, with no cookies or account details, for a support request.

Limits

  • The console has not run in a real estate. It has been tested against stand-in services.
  • Cookie settings come from your sign-in proxy, not from the console.
  • Ledger downloads are limited to the 1,000 rows the audit service returns in one call.
  • Starting a Compare run needs the comparison tool on the console's host, or a prebuilt one named by UI_COMPARE_BIN.