Start

Credentials map

One table for “what do I paste where?” — Admin login, Agent Protocol clients, runners, and connector secrets are different trust domains.

CredentialWhere it livesWho uses itAdmin login?
API key with adminauth.keys in langgraph.json / HelmOperators, curl to /admin-apiYes
auth.admin_keysSame config objectBreak-glass Admin onlyYes (Admin only)
API key read/writeauth.keysApp backends (Agent Protocol)No
JWT with admin claimYour IdPSSO operatorsYes
RUNNER_TOKEN_*Env on control plane + runnersRunner ↔ plane gRPC/HTTPNo
RUNNER_TENANTS_*Env on control planeTenant allow-list per runner kindNo
Connector ${ENV} / secret_refSecrets / env / VaultPlane vends run-bound sessionsNo
Postgres / Redis URLsEnv / SecretControl plane processNo

How to implement (Supported)

  1. Mint a long random operator key; put it in a secret store; reference via env substitution in config if you use ${VAR}.
  2. Put admin on that key (or use admin_keys).
  3. Issue separate read/write keys per app / tenant — never share the Admin key with product backends.
  4. Set runner tokens per kind; when client auth is on, also set RUNNER_TENANTS_* (fail-closed otherwise).
  5. Keep connector secrets out of git; use ${NAME} or auth.secret_ref in connector YAML (see Secrets).

In the product

Admin is an ops console — it does not mint or list API keys
Runkite Admin overview

What to expect

Reference: docs/auth.md · Admin login · Security