Environment and profiles

Strado resolves a profile at startup, and the profile decides where state lives and which ports it takes. Individual environment variables override individual parts of it.

The two profiles

stabledev
How it runsthe installed appnpm start or npm run desktop
State~/.strado~/.strado-dev
HTTP port77777877
CDP port92229322
Window titleStradoStrado Dev

The point is that an installed Strado and a build from source run side by side without touching each other's state, ports, or sessions.

Heads up

The profile comes from the npm scripts, not from detection. Running electron . inside packages/desktop bypasses them, leaves STRADO_PROFILE unset, and lands you on stable~/.strado, port 7777 — which collides with an installed Strado if both are running. Use npm run desktop.

Stable is the default on purpose: the same server runs headless on a runner, and a runner must keep using ~/.strado.

Variables

Each of these overrides one part of the profile, and each is read at startup.

VariableEffect
STRADO_PROFILEstable or dev. Unset or empty means stable; any other value refuses to start, naming what it got.
STRADO_HOMEThe state directory, replacing ~/.strado or ~/.strado-dev.
STRADO_CONFIG_DIRWhere config/ lives, replacing the profile's default.
STRADO_LOG_DIRWhere strado.log is written, replacing <state>/logs.
PORTThe HTTP port the server listens on.
STRADO_CDP_PORTThe debugging port the preview browser exposes.
STRADO_TELEMETRY0 disables anonymous usage counts.
STRADO_INPROC_PTY1 forces in-process terminals instead of the daemon.

STRADO_HOME is the useful one for isolation: point it somewhere else and you get a completely separate instance — its own credentials, its own tracked time, its own sessions — which is how you test something without touching your real setup.

Note

STRADO_INPROC_PTY=1 exists for the test suite and as break-glass. Sessions started that way die with the server, which is exactly the property the daemon exists to avoid. Do not leave it set.

On a runner

A runner reads ~/.strado/runner.env at start, as plain KEY=VALUE lines, and anything already in the environment wins over it.

VariableEffect
STRADO_RUNNER_AUTOUPDATE0 turns off automatic updates. strado-runner update still works.
STRADO_FORWARD_PORTSExtra ports this runner will forward, as numbers or from-to ranges.

Everything else

Strado sets a good number of other STRADO_* variables internally — pointing at the bundled web assets, the daemon script, the sandbox assets, session identity, and so on. They are implementation detail, they change without notice, and setting them yourself is a good way to get a confusing failure. If you find yourself reaching for one, the answer is probably STRADO_HOME.

Where to go next