Skip to content

Which credential is for what

LumenFlow uses several distinct, narrowly-scoped credentials instead of one all-purpose secret — a signed-in session, a workspace-wide API key for CI, a single-use code for pairing your own machine, and a durable identity for that paired machine. This is the map of who holds each one, how long it lasts, and what it can and can't do.

One secret per job, not one secret for everything#

LumenFlow deliberately keeps identity narrow: the credential that lets you click around the dashboard cannot pair a machine, the code that pairs a machine cannot run your CI pipeline, and none of them can stand in for each other. If something asks you to reuse one of these where a different one belongs, that's a sign to stop and check, not a shortcut to take.

CredentialWhat it's forWho or what holds itLifetime
Dashboard sessionActing as yourself in the browser — chat, settings, approvalsYour signed-in browserAs long as your session stays valid
CI / workspace API keyThe strongest credential: a CI job or self-hosted automation calling the control plane or Sidekick API as a serviceYour CI secrets store, or a git-ignored local env fileUntil you rotate or delete it
Provider (tool) installationThe connection between your workspace and an external tool — email, chat, calendar, ticketsHeld by LumenFlow, scoped to that one provider and workspaceUntil you disconnect it or the provider revokes access
Encrypted connector or model secret (BYOK)An API key you bring for a model provider, or a custom connectorStored encrypted, workspace-scopedUntil you replace or remove it
Node identityYour workspace's record of one paired Linux or Windows machine — what it is, what it's allowed to claimHeld in your workspace, not on the machineAs long as the machine stays paired
Pairing exchange (single-use code)Turning "an owner approved this in a browser" into "this exact machine is authorized"Shown once to the owner/admin who mints itMinutes — then it expires, used or not
Runtime credentialThe durable secret the paired machine itself presents on every requestStored locally on that machine onlyDurable, until rotated or revoked
Assignment leaseProof that a machine currently owns one specific unit of workHeld only in the machine's memory for that one assignmentSeconds to minutes — the life of the assignment

Rotation and revocation#

  • Dashboard session — sign out and back in; a workspace admin can end sessions for everyone.
  • CI / workspace API key — regenerate it from Settings → Advanced. The old key stops authenticating within moments. Delete it the same way if you no longer need it.
  • Provider installation — disconnect and reconnect from the tool's entry in workspace settings. You can also pull access from the provider's own app-management page at any time.
  • Encrypted connector/model secret — paste a new key over the old one in Settings; the previous value is discarded immediately. You can also revoke it at the provider's own dashboard.
  • Node identity and runtime credential — pair again for a fresh identity, or use the machine's row on the workspace Compute page to issue a new runtime credential (the old one is invalidated the moment the new one is issued), drain it (stop new work, let anything in flight finish), quarantine it (stop it claiming anything at all while you investigate), or revoke it outright.
  • Pairing exchange code — it consumes itself the instant a machine exchanges it. An unused one simply expires; mint a fresh one if you need to retry.
  • Assignment lease — not something you rotate by hand; a new one is issued with every claim, and releasing, failing, or completing the assignment ends it.

Prohibited storage and transport#

None of these should ever appear as a literal command-line argument you'd retype from shell history, in a repository file, in a chat message, in a support ticket, or copied onto a second machine:

  • The CI/workspace API key belongs in a CI secrets store or a git-ignored local env file — never a bare export TOKEN=... you'd type interactively, and never inside workspace.yaml or any file you'd commit.
  • The runtime credential belongs in the local file the pairing exchange writes on that one machine — never copied to a second machine, pasted into a ticket, or committed.
  • The pairing code is shown once, in the browser, to the person pairing the machine. Treat it as burned the moment it appears anywhere else — a chat thread, a screenshot, a shared document — and mint a new one.
  • Encrypted connector and model secrets never need to be pasted into a conversation with Sidekick itself; the settings page is the only place that should ever ask for one.

If a request, a ticket, or a piece of software asks you to hand over one of these credentials somewhere other than its own settings page, that request is wrong regardless of how official it looks — pause and verify before you comply.