Headless E2E Runbook
End-to-end validation runbook for the Thoth headless control plane using thothctl, the Thoth Control Plane API, proxy check-ins, SIEM webhooks, and PAM callback flows.
Use this runbook to validate the headless control plane end to end without relying on dashboard flows.
This runbook answers two questions:
- Is the headless control plane working end to end in this environment?
- Are
thothctlcommands sufficient by themselves for full validation?
Scope
Validated surfaces:
- tenant settings bootstrap
- SIEM/SOAR webhook test path
- MDM provider upsert + sync trigger
- browser provider/policy/enrollment control-plane state
- endpoint registration + check-in telemetry
- PAM callback resolution path
Tools used:
thothctlfor bootstrap actionsthothfor endpoint/proxy runtime health checks- Thoth Control Plane API (
curl) for readback and deeper verification
Quick answer on command coverage
thothctl now covers bootstrap + operational readbacks + callback simulation, but full E2E validation still requires a few direct API checks.
thothctl command coverage now includes:
- tenant settings upsert
- optional webhook test call
- optional MDM provider upsert
- optional MDM sync trigger
- browser providers list/upsert (
browser providers list|upsert) - browser policies list/upsert (
browser policies list|upsert) - browser enrollments list/upsert (
browser enrollments list|upsert) - browser endpoint policy sync/apply (
browser sync) - settings readback (
settings get) - MDM provider inventory (
mdm list) - endpoint inventory and stats (
endpoints list,endpoints stats) - approval queue reads (
approvals list) - PAM callback signing + send flow (
pam callback) - evidence SLO readback (
evidence slos) - governance evidence materialization (
evidence backfill) - decision field backfill (
evidence decision-backfill)
You still need direct API calls for:
- explicit check-in assertions
- full operational audits and policy/runtime evidence checks
Prerequisites
thothandthothctlare installed from the current release.- Thoth Control Plane API URL is reachable over HTTPS for non-local environments.
- Admin auth session is available:
- recommended: file-backed session (
$HOME/.thoth/admin-token.jwt)
- recommended: file-backed session (
Set baseline env vars:
Optional explicit override:
Validate binaries:
Create or refresh your admin auth session:
--apex-domain and --auth-token-file are optional overrides.
For non-interactive pipelines, prefer org API key auth (THOTH_API_KEY or --org-api-key).
Phase 1: Bootstrap with thothctl
Run:
Expected JSON includes:
settings_updated=truewebhook_tested=truemdm_provider_upserted=truemdm_sync_started=true
Phase 1A: Create scoped API keys with least privilege
Create endpoint-scoped key for runtime health + policy operations:
List scoped keys:
Validate positive authorization decision:
Validate negative scope decision (different endpoint):
Expected:
- positive check:
valid=true,permission_allowed=true,scope_allowed=true - negative check:
scope_allowed=false
Revoke key after validation:
Phase 2: Settings + MDM readback (Control Plane API verification)
Add auth header for non-local:
Verify settings:
Verify webhook test endpoint independently:
Verify MDM provider inventory:
Trigger sync explicitly (optional second run):
Acceptance:
- provider exists and is enabled
- sync call returns accepted/success state
Phase 2B: Browser control-plane validation
Upsert browser provider and policy:
Validate list/readbacks:
Enroll one browser identity:
Run endpoint policy sync/apply:
Acceptance:
- browser provider is present and enabled
- browser policy compiles and is returned by list/readback
- enrollment record is present for expected user/device/provider tuple
- sync output reports
applied,rendered, ordry_runper provider with target paths
Phase 3: Endpoint registration and check-ins
Option A (recommended): proxy-driven registration/check-in
Run governed proxy path and then check:
Then verify endpoint appears:
Option B (API smoke): manual registration + check-in
Acceptance:
- endpoint is returned by
GET /endpoints - stats reflect total/online increments
Phase 4: PAM callback path validation
1) Configure PAM in tenant settings
Ensure settings include:
pam.enabled=truepam.providerpam.callback_secretpam.request_url(HTTPS)
2) Simulate callback signature
Dry run (generate signature/payload without sending):
Acceptance:
- valid callback resolves approval
- replayed callback is safely ignored
- mismatched
request_idreturns conflict and does not resolve
Phase 5: Evidence checks (headless operational validation)
Run:
Expected:
- endpoint telemetry reflects active check-ins
- governance feed shows routed decisions/events
- evidence SLO report returns non-empty coverage metrics
- alerts reflect violations or risk changes as scenarios trigger
Fail criteria
Fail the run if any of these occur:
thothctl bootstrapdoes not return success flags- webhook test cannot reach destination
- MDM sync cannot be triggered
- endpoint registration/check-in does not update stats
- PAM callback accepts invalid signature or mismatched request correlation
Command coverage matrix
| Capability | thothctl | Control Plane API |
|---|---|---|
| Tenant settings upsert | ✅ | ✅ |
| Webhook test trigger | ✅ | ✅ |
| MDM provider upsert | ✅ | ✅ |
| MDM sync trigger | ✅ | ✅ |
| Browser provider/policy/enrollment upsert | ✅ | ✅ |
| Browser provider/policy/enrollment readback | ✅ | ✅ |
| Browser policy sync/apply summary | ✅ | ❌ |
| Scoped key create/authorize/revoke | ✅ | ✅ |
| Endpoint list/stats verification | ✅ | ✅ |
| Explicit endpoint check-in assertions | ❌ | ✅ |
| PAM callback correlation and replay tests | ✅ | ✅ |
| Approval queue reads | ✅ | ✅ |
| Evidence SLO readbacks | ✅ | ✅ |
| Evidence and decision-field backfill triggers | ✅ | ✅ |
| Audit feed and deep evidence checks | ❌ | ✅ |
thothctl is the right CLI for bootstrap and config application.
Control Plane API verification remains required for comprehensive end-to-end operational testing.