Set up an Enterprise Runtime¶
Goal: convert one existing local Runtime Home into a sticky Enterprise-managed installation without changing command/capability execution.
1. Create a Runtime key¶
Sign in to the company app-ui as an administrator. In API Keys, create one key for this Runtime and copy the plaintext immediately. app-api never shows it again and stores only a peppered verifier.
Keep the key in the machine's secret/process environment. Do not put it in
config.yaml, source control, command output, or audit records.
2. Configure the Portal client¶
export RUNTIME_PORTAL_ENABLED=true
export RUNTIME_PORTAL_BASE_URL=https://customer-control-plane.example
export RUNTIME_PORTAL_PATH_PREFIX=/api/v1
export RUNTIME_PORTAL_API_KEY='<show-once-runtime-key>'
runtime portal status
The base URL is the company's app-api deployment, not the public API reference
site. /api/v1 is the only accepted prefix.
3. Register once¶
Registration binds the key to this stable installation identity. Runtime pins the returned organization and Ed25519 public signing key only after verifying a fresh-nonce signed receipt for the exact Control Plane origin and identities, verifies and atomically installs the first policy/config generation, then records sticky Enterprise-managed state. If any step fails, local authority remains unchanged.
After registration, RUNTIME_CONFIG_FILE, RUNTIME_POLICY_FILE, Runtime Home
local files, and disabling Portal networking cannot override or undo Enterprise
authority. The last verified managed generation is used offline. Missing,
edited, substituted or rolled-back managed state fails closed. Governance
generations do not expire in this initial contract; they remain active until a
newer verified monotonic generation is installed.
4. Refresh published governance manually¶
Policy and configuration may be edited/published independently in app-ui, but Runtime receives one signed atomic pair. Sync never downloads credentials, context, commands, or executable content. An unchanged generation returns no documents and performs no install. Capability source locations are managed configuration; Runtime still never fetches capability content.
Key recovery¶
For a normal key incident, an administrator creates a replacement bound to the
same Runtime. Set the new RUNTIME_PORTAL_API_KEY; its first heartbeat or sync
activates it and revokes the predecessor without changing policy/config or
trust.
After an ephemeral demo database reset, create a new unclaimed key and run
runtime portal register again. Recovery succeeds only when the organization
and already-pinned signing key match. A key cannot replace signing trust.
Audit¶
Runtime audit stays local. Portal keys are never used for audit delivery. A future optional OpenTelemetry exporter will use its own exporter credentials and destination.
Operational examples on this site were verified against Runtime 0.9.8. After bootstrap, the version-exact files in Runtime Home win.