Skip to content

Who decides

ExaMLOps automates the loop from drift to retraining, but some decisions stay with people. Each one passes through a gate and releases one part of the system, and the decision is recorded — in the hash-chained audit trail or, for approvals made in the dashboard, in the control plane's approval table. This tour walks through them; the catalogue below lists every human action the platform has.

  1. A developer changes a model. CI works out which models the commit touched and files one pending approval per model with the control plane. Nothing trains yet.
  2. An operator approves or rejects it. From the CLI (exa approvals approve JPCP) or the dashboard's Approvals page. Either can carry a reason; the dashboard asks for one on rejection.
  3. Approval starts the training flow. The control plane dispatches the training deployment for that model. Approvals nobody answers expire after 72 hours, so a stale change cannot be approved weeks later.
  4. Promotion waits for a metric. exa pipeline promote jpcp --if-rmse-lt 5.0 moves the alias only if the condition holds. Evaluation and judge-calibration gates can block it too; --force overrides a failing gate and is recorded.
  5. Traffic moves in steps. exa serve traffic JPCP --production 90 --canary 10 sets the weights the model router reads, so a new version takes a slice of traffic before it takes all of it.
  6. The autopilot acts only when switched on. Its kill-switch is off by default. exa autopilot enable lets it act and exa autopilot disable stops it; each exa autopilot run — from your own scheduler — runs one drift → retrain → promote cycle.
  7. Autonomy levels decide whether it acts or asks. Each behaviour is AUTONOMOUS, REVIEW or DISABLED. Under REVIEW, or when a policy rule says require_approval, the autopilot does not act: it writes a human_approval_required event to the audit trail and an operator follows up with the normal commands.
  8. A cluster is approved before any job lands on it. exa hpc connect registers a cluster as PENDING. Placement refuses it until a sysadmin runs exa hpc approve.
  9. Agents ask before they write. Skipper pauses every mutating tool and asks; through its web UI and exa ask, the approval is single-use and expires after 10 minutes by default. The MCP server offers write tools only when started with --allow-writes, and the dashboard copilot runs a read-only agent that only proposes commands.
  10. Decisions are recorded. Commands such as exa approvals, exa pipeline promote, exa hpc approve and the autopilot write to the hash-chained audit trail: who, what and why, each event carrying the hash of the one before it, so an edited record breaks the chain. Approvals made from the dashboard or Skipper are recorded in the control plane's approval table — the calling credential and the time — and approvals also as an outbox event; the signed-in person is not recorded there. exa audit verify walks the chain; with an external anchor configured, exa audit verify-worm checks it against that too.

What is not wired yet

The approval queue guards model changes from CI. Retrains started by drift — through exa drift trigger, the bus bridge's error-rate tracker or the autopilot — go to the control plane directly, governed by cooldowns, the control plane's rate limit, the corruption veto and, for the autopilot, the autonomy levels above — not by the queue. Routing them through the queue is on the roadmap.

The roles

Role Who it is What it can do
Dashboard viewer Signed in with the viewer password Read everything, run read-only commands in the CLI console, acknowledge alerts, ask the copilot
Dashboard admin Signed in with the admin password Every governed action: approve, promote, trigger retrains, change traffic, manage secrets, connections and projects
CLI operator Whoever runs exa; recorded as EXAMLOPS_ACTOR or the login user Anything the configured credentials allow; the control plane checks its token's read/write scope
Project owner, editor, viewer Relations on a project, checked when multi-tenancy is on Owner ⊇ editor ⊇ viewer; relations on a project apply to everything inside it
Sysadmin By convention, the operator responsible for the HPC fleet (the dashboard requires the admin role) Registers, approves and rejects clusters
Skipper user Anyone chatting with the agent Approves or denies each write the agent proposes

The dashboard's CLI console sorts every command into four tiers: read (any signed-in user), admin, destructive (admin, and the command path must be typed back to confirm) and CLI-only (never run from a browser).

Every human action

Data

Action How Gate
Record a dataset revision exa data snapshot FData --backend minio --path ./data/FData Admin
Prune old telemetry exa data retention-prune --days 90 --dry-run Admin; typed confirmation in the console
Keep a synthetic dataset the quality gate rejected exa data synth generate … --force Override, recorded
Feed back delayed ground-truth labels exa eval feedback ingest … Admin
Restore platform state from a backup exa backup restore <path> Confirmation

Training and retraining

Action How Gate
Approve a pending model change exa approvals approve JPCP · dashboard Approvals Approval queue
Reject a pending model change exa approvals reject JPCP --reason "…" · dashboard Approval queue (reason optional in the CLI)
Retrain a model now exa retrain JPCP --dataset PM100Dataset (--dry-run to preview) · dashboard Pipelines Confirmation, policy
Set an evaluation regression gate exa eval gate set JPCP --suite … --metric … --mode block Admin
Record an LLM-judge calibration exa eval calibrate <judge> --from <file> Uncalibrated judges cannot gate

Promotion and serving

Action How Gate
Promote when a metric passes exa pipeline promote jpcp --if-rmse-lt 5.0 Metric, evaluation and calibration gates
Override a failing promotion gate exa pipeline promote … --force Override, recorded
Set or remove a version alias Dashboard Models page Admin
Change the traffic split exa serve traffic JPCP --production 90 --canary 10 Confirmation
Start an A/B test or shadow traffic Dashboard Traffic page · exa serve ab …, exa serve shadow … Admin
Propose promoting a challenger exa serve challenger promote JPCP (the alias then moves with exa pipeline promote) Significance policy, no SLO regression
Roll an alias back exa models rollback run JPCP --dry-run Confirmation
Move or roll back a prompt label exa prompt label triage prod 3 · exa prompt rollback … Evaluation gate on prod label moves by default (--force overrides, recorded); rollback is not gated

Drift and the autopilot

Action How Gate
Set a drift baseline exa drift baseline JPCP · exa drift input baseline JPCP Confirmation
Clear drift snapshots exa drift reset JPCP Confirmation
Turn drift-triggered retraining on or off exa drift auto-retrain enable JPCP --dataset PM100Dataset Admin
Fire retrains for drifted models exa drift trigger (--dry-run to preview) Cooldown, corruption veto
Switch the autopilot on or off exa autopilot enable · exa autopilot disable Kill-switch
Set a behaviour's autonomy level exa autopilot autonomy drift_auto_retrain REVIEW (granting AUTONOMOUS needs --ack) Autonomy level
Freeze, kill or resume an autopilot run exa autopilot interrupt <run-id> --freeze Kill-switch
Keep one model away from autonomous action exa autopilot quarantine JPCP --reason "…" Kill-switch
Acknowledge an alert Dashboard Alerts page Any signed-in user

HPC fleet

Action How Gate
Register a cluster exa hpc connect <login-host> --name cluster-a --user me --key ~/.ssh/id_ed25519 Starts PENDING
Approve a cluster exa hpc approve cluster-a · dashboard Facility Cluster admission
Reject a cluster exa hpc reject cluster-a --reason "…" Cluster admission

Governance and security

Action How Gate
Write policy rules (allow, deny, require approval) policy.yaml in the config directory · exa policy … Policy
Sign a tenant's policy bundle exa policy bundle sign --tenant acme Admin
Classify a system's EU AI Act risk tier exa compliance classify JPCP --risk-tier … --purpose … Promotion blocked until classified
Record a sampled audit review exa audit review --sample 20 --notes "…" Recorded review
Review every autonomous action exa audit autonomy --last 30d Admin
Set, rotate or re-encrypt secrets exa secrets set … · exa secrets rotate … · exa secrets rewrap --dry-run Admin; typed confirmation in the console for rotate and rewrap
Sign or verify a model artifact exa models sign jpcp 18 --path … · exa models verify … Verify before load
Issue or revoke a gateway key exa gateway key issue … · exa gateway key revoke … Admin
Create or delete a named connection exa connection create … · dashboard Connections Admin; delete asks for confirmation

Projects and access

Action How Gate
Create, archive or delete a project exa project create research … · exa project archive research Confirmation to delete
Add or remove a member exa project add-member research alice --role editor Admin
Grant or revoke a relation exa project grant alice editor project:research Admin
Assign a resource to a project exa project assign research JPCP --kind model Admin
Set a project's quota or budget exa project set-quota … · exa finops budget set research --gpu-hours 500 Admin

Agents and MCP

Action How Gate
Approve or deny a write Skipper proposes In the Skipper chat Single-use, expiring confirmation
Let Skipper remember a procedure In the chat, then exa agent memory review approve <id> Review queue
Erase agent memories exa agent memory delete … Confirmation
Allow MCP clients to write exa mcp serve --allow-writes Off by default
Run a command the copilot proposed Dashboard copilot panel The copilot only proposes

Read more