Set an environment variable.
Syntax
$ vela env set <key> [--public] -t <target>$ vela env set STRIPE_SECRET_KEY -t production # prompts, without echo
$ vela env set WHATSAPP_MODE --public -t preview # prompts, with echo
$ vela env set VELASTACK_API_KEY -t all # every server the app is deployed to
$ vela env set STRIPE_SECRET_KEY # asks which environment firstThe value is always prompted for, never taken as an argument, so it cannot land in shell history. A secret is typed without echo; a public value with echo, so the prompt tells you which kind you are setting. The key has to be a valid environment variable name.
Options
--public- Readable back withvela env getand invela env list. Without it the value is secret: written, never read back.PUBLIC_*keys are public regardless, since SvelteKit ships them to the browser.-t, --target <target>-local,all,preview,preview:<branch>,productionor a bound target. Asked for when missing; required in CI.
Setting a key again with or without --public moves it between the two.
What happens next
On a server the instance is restarted so the value takes effect; -t all and -t preview restart every instance the layer reaches, on every bound server. Two exceptions, each said aloud: a key the app imports from $env/static is baked at build time, so the command says “redeploy to apply” instead; and the PocketBase superuser credentials wait for a vela deploy, which is what reconciles them with the database.
Locally the value is written to .env; restart vela dev to pick it up.