tai config env
Read and update the stored env.
tai config env get
Read the stored env config, the operator’s secret-key marks and the stored keys the deployment sets.
A stored key the deployment sets (deployment_keys) keeps the deployment’s value; a write
may remove it, never set it to a new value.
Example: tai config env get
tai config env set
Merge KEY=VALUE pairs into the stored env and reload the fleet.
A hot-class key is re-read in place. A recycle-class key rolls a worker
recycle across the fleet (the response carries the recycle rows; when the
roll converged and the worker that took the write needs its own restart, it
recycles itself after replying, and its supervisor starts it again). A key
that locates the worker bus (a bus URL or the bus namespace), a deployment /
boot-identity (X-band) key and a key the deployment sets are refused under any spelling of their names, naming the
key: a bus key or a key the deployment sets changes in the deployment’s
environment. A write whose resulting stored env would set one name under two
spellings is refused, naming both: to rename a spelling, remove the old one in
the same write.
Values may come from command-line KEY=VALUE arguments, --env-file, and
--stdin combined; at least one assignment is required. The same key from
more than one source (or twice in one source) is an error — no silent
precedence. Argv exposes a value via ps/shell history, so a secret should
ride --env-file or --stdin.
Example: tai config env set LOG_LEVEL=debug --env-file secrets.env
tai config lint
Lint config OFFLINE: a manifest file’s shape plus required-settings resolution.
Validates the manifest file against the Manifest model (a broken manifest
fails loudly with the model error) and checks that every required registered
setting resolves from the environment. No server is started.
Example: tai config lint config/manifest.yml
tai config mode
Read the active config backend mode (file or an external provider’s mode).
Example: tai config mode
tai config profile
Manage versioned settings profiles.
tai config profile apply
Apply a profile — replace the stored env with its band, reload, and recycle the fleet.
Prints the {hot, recycle, refused, fanout} report plus the per-kind fresh list (names + worker
identities only, never env values). DESTRUCTIVE: it replaces the whole stored env band.
Example: tai config profile apply staging
tai config profile delete
Soft-delete a profile, keeping its version history for audit.
Example: tai config profile delete staging
tai config profile diff
Preview a profile against the CURRENT stored env — {added, removed, changed, recycle_keys, refused_keys}.
Values are real; this is a preview, not the apply report.
Example: tai config profile diff staging
tai config profile list
List the settings profiles (reserved @ snapshots excluded).
Example: tai config profile list
tai config profile rollback
Re-point a profile’s active version to version (a store re-point).
The live process is realigned by a later apply, not by this.
Example: tai config profile rollback staging 2
tai config profile set
Create or update a profile (whole-body replace).
The env band is the given KEY=VALUE entries; --secret-key marks which keys are secret. A reserved
@-prefixed name is rejected up front.
The band may come from command-line KEY=VALUE arguments, --env-file, and
--stdin combined; with no source at all the band is empty (a whole-body
replace clears the stored env), but a given --env-file or --stdin that
yields no assignment is an error. The same key from more than one source (or
twice in one source) is an error — no silent precedence. Argv exposes a value
via ps/shell history, so a secret should ride --env-file or --stdin.
Example: tai config profile set staging LOG_LEVEL=debug --env-file secrets.env --secret-key API_KEY
tai config profile show
Show a profile’s active body — {description, env, secret_keys} with real env values.
This authed door round-trips values; masking is display-side only.
Example: tai config profile show staging
tai config profile versions
List a profile’s version history, or — with --version — show one version’s full body.
Full bodies carry real env values; this door is secret-fenced.
Example: tai config profile versions staging / ... versions staging --version 3
tai config reload
Soft-restart this process from its manifest, fanning out to every worker.
Refreshes env, resets settings caches, and re-initializes from the manifest
in-process (no pod restart), then propagates to the fleet; --target restricts
the fan-out to named workers, and only they are judged for a restart.
The soft restart carries every hot key in place. An applied worker’s row
names the recycle-class keys whose value differs from the one it bound
(awaiting_respawn); a worker whose reload was refused at its epoch
build (the build discarded before its swap) replies failed naming the
keys still drifted after the discard (awaiting_respawn); any other
failed reload, a failed discard among them, carries none. Every worker
whose reload built and reports such a key is then restarted one at a time
through the deployment’s supervisor, the answering worker last, after the
reply once the roll converged. A worker whose reload was refused at its epoch build is never
restarted: the stored config did not build on it and a restart may fail
the same way, so it keeps serving its current config, its restart
withheld. Any worker other than the answering one whose state is unknown
(its reload failed otherwise or did not finish, it has no row, its reply
is malformed, or the bus was unreachable) is asked once it is ready, and
restarted unless its reply confirms it clean or states a refused build
(its restart then withheld). The answering worker is never asked: when
its own state is unknown, it needs its own restart, run after the reply
once the roll converged.
The response is the per-worker fleet report, the restart roll it ran
(recycle, null when the roll had no worker to visit: every
addressed worker confirmed no recycle-class key, or the only ones naming one
were refused at their epoch build) and the workers still
awaiting a respawn after it (awaiting_respawn).
Example: tai config reload
tai config settings-schema
List the registered settings groups with their resolved field values.
Example: tai config settings-schema --json

