Operator Observability
This guide is for Beam operators who need to respond to incidents without reading the source code first.
It covers:
- admin setup and login
- the alert -> trace -> audit workflow
- the operator runbook for five common failure modes
- exports and retention controls
- expected operational guardrails
Roles
Beam uses short-lived admin sessions for the dashboard and observability APIs.
admin: full read/write access, including pruneoperator: read-only observability accessviewer: read-only access for audits, traces, and dashboards
Bootstrap roles with environment variables on the directory:
BEAM_ADMIN_EMAILS=ops@example.com
BEAM_OPERATOR_EMAILS=incident@example.com
BEAM_VIEWER_EMAILS=stakeholder@example.comRequired Admin Setup
The directory must know how to issue and verify admin sessions:
JWT_SECRET=replace-me
BEAM_DASHBOARD_URL=https://dashboard.example.comFor production magic-link delivery, configure either SMTP or Resend:
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=beam
SMTP_PASS=replace-me
# or: SMTP_PASSWORD=replace-me
SMTP_FROM=beam@example.comor:
RESEND_API_KEY=re_xxxLocal development can skip SMTP and Resend. On localhost, the directory returns the dev callback URL directly after a magic-link request.
Sign In
Open the dashboard login page and request a magic link for an authorized email:
POST /admin/auth/magic-linkThe dashboard exchanges the token through:
POST /admin/auth/verify
GET /admin/auth/session
POST /admin/auth/logoutThe browser stores no bearer credential. Verification sets an HttpOnly session cookie, and any legacy dashboard bearer value is removed from local storage. The old static pasted admin key flow is no longer used.
Reproducible Live Admin Path
For release-control dry runs, use one shared inbox instead of a personal mailbox.
Current recommended path:
BEAM_ADMIN_EMAILS=jarvis@coppen.deIf you need to keep an existing personal operator inbox live during the transition, include both:
BEAM_ADMIN_EMAILS=jarvis@coppen.de,tobias.kub@appfor.deOn a machine that already has COPPEN Microsoft Graph credentials, you can request, read, and verify the live admin magic link end to end:
source /Users/tobik/.openclaw/workspace/secrets/all-keys.env
npm run release:admin-auth -- \
--api-url https://api.beam.directory \
--email jarvis@coppen.de \
--mailbox jarvis@coppen.deThe helper script:
- requests
POST /admin/auth/magic-link - polls
jarvis@coppen.dethrough Microsoft Graph for the latestBeam admin sign-in link - extracts the callback token
- verifies it through
POST /admin/auth/verify - confirms the live session with
GET /admin/auth/session
That gives the operator dry run a repo-owned, repeatable path instead of relying on one personal inbox.
Incident Workflow
1. Start From Alerts
Use the Alerts page first. Each card now shows:
- current metric value
- threshold value
- why Beam raised the alert
- why the current severity is
warningorcritical - direct investigation links
2. Jump Into A Trace
Every alert exposes at least one investigation path inside the dashboard:
- filtered intent feed
- direct sample trace
- matching audit history
- specialized dashboards such as
ErrorsorFederation
The trace page is the fastest way to answer:
- what happened to this nonce
- which lifecycle stage it reached
- whether Shield intervened
- whether related audit events exist
For the concrete next-step matrix after that first trace read, use the Operator Runbook.
3. Confirm With Audit History
Use the Audit page when you need control-plane context:
- federation relay actions
- admin and operator actions
- prune history
- role or control changes
Deep links from alerts and traces open the audit view with the relevant nonce, target, or query already applied.
Exports
Exports are read-only snapshots. Use them when you need to:
- hand off an incident to another team
- preserve evidence before cleanup
- compare windows offline
Available datasets:
intentsauditerrorsfederationalerts
Formats:
jsoncsvndjson
Exports respect the selected alert window and never mutate retained data.
Retention And Prune
Retention is controlled from the Alerts page.
Prune is intentionally guarded:
- choose the dataset
- choose the day threshold
- run an admin-only preview
- type the dataset name
- type the exact confirmation phrase
- prune
The API enforces the confirmation fields server-side, not just in the browser UI.
Important behavior:
- pruning
intentsalso removes matchingtraces - prune is irreversible
- export first if you need a handoff artifact
- every successful prune is written to the audit log as
observability.prune
Message Bus Dead Letters
If you want dead-letter operations in the dashboard, configure the message bus in Settings:
- Bus URL
BEAM_BUS_API_KEY
This enables:
- dead-letter inspection
- requeue actions
- queue health visibility
Operational Expectations
Use Beam observability as a triage surface, not just a chart wall.
The normal operator loop is:
- open alert
- inspect trace
- confirm audit history
- export if needed
- prune only after evidence is preserved
If you need a full local environment, start with the Hosted Quickstart.