Skip to content

API keys and access

This is the managed, multi-tenant control plane

The self-hosted lite image is single-tenant: any x-api-key value is accepted, and there is no key to issue, revoke, or scope. Everything below describes access control in a deployment that runs the multi-tenant control plane in front of ingest/query.

Access is invite-only. There is no self-service signup, and no endpoint that mints a key.

Scopes

Scope Used by Lives in
ingest Your MCP server, sending telemetry Server process, deployment config
read The console and the Query API A browser
admin The operator console Issued out of band
session Your backend, minting session tokens Your servers only

The three are deliberately separate. An ingest key and a read key identify the same organisation, but they live in different places — so one being compromised must not imply the other. The console refuses an ingest key; the ingest endpoint refuses a read key.

Running over stdio?

Then the client launches your server on your user's machine, and none of these keys should be there. Use session tokens instead: your backend keeps the long-lived key and the laptop only ever holds a 3-hour one.

Storage

Key secrets are stored as hashes. The full key is shown once, when it is issued, and cannot be retrieved afterwards — including by an operator. The console lists key prefixes only, so there is nothing in the listing to leak.

Revocation

Revoking a key takes effect within the principal cache TTL (30 seconds) in every running process. There is no restart required.

Rotation

Issue the new key, deploy it, then revoke the old one. Because ingest and read keys are separate, rotating one does not interrupt the other.