boxd machine exec commands and coding agents run in, and into services your machine starts at boot. No per-VM setup, no .env files to copy around.
There are two kinds:
Both are injected into your machines the same way (as environment variables). The difference is at rest: env var values are stored in cleartext and shown by
list; secret values are sealed and never returned by the API β not even to you. To change a secret you re-set it.
Manage them from any boxd CLI β the laptop CLI or the in-VM CLI β or from the console.
Environment variables
Secrets
get, and list never returns a value. Rotate one by running set again with the new value.
Naming
Names must be valid environment identifiers (letters, digits, underscores; not starting with a digit). TheBOXD_* prefix is reserved for boxdβs own variables.
Scope (in an org context)
When youβre working in an org context,--scope decides which of the orgβs machines receive the variable:
all (your personal machines) β the --scope flag is ignored. boxd env scope <name> <scope> moves an existing secret between scopes without re-entering its value.
How they reach a machine
On boot β and on every login shell β boxd resolves the env vars and secrets in scope for that machine and exports them. So theyβre present for:- interactive shells (
ssh <vm>.boxd), boxd machine execcommands,- the pre-installed coding agents, and
- services your machine starts at boot.