Custom Environment Variables
Each scale set takes a JSON record of extra environment variables Runaway injects into every runner — chiefly to point package managers at your own registry proxies, so jobs pull dependencies from your network instead of the public internet.
{ "npm_config_registry": "http://verdaccio.lan:4873", "PIP_INDEX_URL": "http://devpi.lan:3141/root/pypi/+simple/", "GOPROXY": "http://athens.lan:3000"}Validation rules
Section titled “Validation rules”Runaway validates the record when you save the scale set:
- Keys must match
^[A-Za-z_][A-Za-z0-9_]*$— a letter or underscore followed by letters, digits, or underscores. - Each value is at most 4 KB.
- At most 32 keys.
- At most 32 KB total across all keys and values.
- Reserved auth and runner keys are rejected. Keys that control runner registration or carry credentials can’t be overridden here; Runaway refuses them at validation and filters them again at spawn time.
Merge order
Section titled “Merge order”Runaway builds each runner’s environment in three layers, last writer wins:
Reserved keys are the one exception: filtered out regardless of layer, so custom env cannot override the base contract’s auth or registration variables.
Do not put secrets here
Section titled “Do not put secrets here”Custom env is stored as plaintext and logged keys-only. It is the right place for registry URLs, proxy hosts, and non-sensitive tuning — not for tokens, passwords, or API keys.
Pointing tools at your own registries
Section titled “Pointing tools at your own registries”Runaway doesn’t bundle a registry proxy — it composes with whatever you already run. The recipes walk through wiring each one through custom env: