Core Commands¶
version, bootstrap, config validate, context, audit tail and
resolve.
runtime version¶
Prints the version of the installed binary.
This is the version compared against <Runtime Home>/version to decide whether
specs/ and commands/ need refreshing. See
Runtime Home.
runtime bootstrap¶
Prepares the Runtime Home from assets embedded in the binary. Idempotent — safe to run any number of times.
Bootstrap runs automatically before every command, so you rarely invoke it
directly. runtime bootstrap exists so you can see what happened; it never
unlocks anything.
--output json reports the home and capabilities paths, whether the home was
just created, the version transition, and exactly which files were seeded,
refreshed and pruned on that run.
# a throwaway home, for testing
export ENGINEERING_RUNTIME_HOME=/tmp/runtime-home
runtime bootstrap
ls -R /tmp/runtime-home
runtime config validate¶
One read-only report. Never modifies anything. This is the first command to run when something is not working.
It reports:
- Locations — config, policy, context and capabilities paths, plus the active context name
- Auth Providers — each provider's enabled state, whether its CLI binary is installed, and its live auth status
- Allowed binaries — an installed check for every entry in
allowed_binaries - Runtime Providers — each provider, its auth provider, and its operation count broken down by transport
- Policy warnings — every rule that can never match
Policy warnings¶
The report closes with warnings for dead rules:
- a
providers.<name>rule naming an operation the provider does not expose - a block for an unregistered provider
- a
command_policy.rules.<binary>entry for a binary absent fromallowed_binaries
Provider rules are checked against the provider's real operation surface —
the same surface capability validate resolves against. Output is sorted, so
the report is deterministic run to run.
This exists because a denial that matches nothing reads as governance while enforcing nothing. Check the warnings after every policy edit.
runtime context¶
Runtime Context is the execution state — where an operation runs. Full reference: Runtime Context.
context show displays the active context's name, its full target
(environment, github, cloud and kubernetes fields), and every context name
available to switch to.
context use <name> requires that <name> already exists under
contexts.<name> in context.yaml. There is no context create verb —
the file is hand-edited, like config.yaml and policy-config.yaml.
Switching context never re-authenticates: Auth Engine identity and Runtime Context are resolved independently.
runtime audit tail¶
Every operation — success, failure, or denial — is recorded as one
structured JSON line at <Runtime Home>/logs/audit.log.
runtime audit tail # most recent 10 (default)
runtime audit tail -n 20
runtime audit tail --lines 50
runtime audit tail --output json
This is the read side only. There is no write-side CLI verb, because nothing outside the runtime lifecycle is allowed to write an audit record.
Record fields¶
| Field | Meaning |
|---|---|
executor |
OS username ($USER, then $USERNAME, else unknown) |
consumer |
human | ci | ai — from ENGINEERING_RUNTIME_CONSUMER, defaulting to ci when CI is set |
runtime_context |
The active context at execution time |
command |
"<provider> <operation>", e.g. github repo list |
transport |
cli | rest | graphql | file. Empty for command run and the auth verbs |
policy_decision |
Allowed or denied |
status |
Outcome |
message |
Detail, including the denial reason |
duration_ms |
Elapsed time |
The transport field is what lets a reader tell that github repo list went
out over REST while github pr list shelled out to gh.
Following the log¶
audit tail is a snapshot, not a follow. For a live view, poll it or read the
file directly:
watch -n 2 'runtime audit tail -n 5'
tail -f "${ENGINEERING_RUNTIME_HOME:-$HOME/.engineering-runtime}/logs/audit.log"
For grep/jq work at a scale audit tail is not meant for, read the raw log:
runtime resolve¶
Checks whether a full command line would resolve to a real command or provider operation. Zero side effects: no auth, no policy evaluation, no execution, no I/O against a platform.
runtime resolve files write ./notes.txt hello
runtime resolve github repo list acme
runtime resolve auth login github
runtime resolve context use staging
runtime resolve audit tail -n 5
runtime resolve bootstrap
It walks the real command tree for static commands, and calls the same matching a provider uses internally for the operation itself — so a provider command gets its operation checked, not just its provider name.
This is the same guarantee capability validate gives a YAML step, applied to
a raw CLI invocation. It is what validates every runtime … line in the shipped
commands/*.txt cheatsheets, which is why those are safe to copy.
Use it to check a command line in a script or a generated suggestion before anything runs.