Skip to main content

CLI configuration

PreviewAvailable on: WindowsShips in the preview channel only. Not a stable release.

Environment variables, instance isolation, and how the CLI decides which daemon to talk to.

Which daemon am I talking to?

The most common CLI confusion is not a broken daemon — it is the CLI reaching a different daemon than the one your app is running.

The entire runtime is namespaced by a data-suffix environment variable:

VariableEffect
NALA_DATA_SUFFIXNamespaces data directory, socket, auth token, and pipes
WMUX_DATA_SUFFIXThe same mechanism under the historical name

Development builds set -dev. That is why a dev build and a packaged build coexist without interfering — and why a CLI invocation with a different suffix reports "cannot reach the daemon" while an app is plainly running.

Diagnose it:

nala doctor --json

Compare the resolved data directory and socket path against the app you expect to be talking to.

Environment variables

VariablePurpose
NALA_DATA_SUFFIX / WMUX_DATA_SUFFIXInstance isolation
NALA_TELEMETRYSet to 0 to disable lifecycle reporting
NALA_DESKTOP_PATHInstaller-owned hint to the desktop executable
NALA_CLI_PATHPath to the CLI bundle, injected on launch
NALA_REQUIRE_PI_RUNTIMESet to 1 so builds fail loudly without the Pi runtime

NOTE

NALA_DESKTOP_PATH is treated as a hint, not an instruction. It is used only after validating that it is an absolute path to an existing file with the expected executable name. This is deliberate — an environment variable should not be able to redirect the CLI into launching an arbitrary binary.

Invocation name

Both nala and wmux binaries point at the same CLI bundle; the invocation name is detected and subcommands route accordingly. Some subcommands are reachable only when invoked as nala.

Project configuration

A project may carry nala.json (preferred) or the legacy wmux.json, discovered per project root and trust-gated. It can declare layout, startup processes with a restart policy, and supervision burst limits.

SECURITY

A project config is content from whoever wrote the repository. It is gated behind trust for that reason — opening a folder must not be enough to make it run processes.

Telemetry

nala telemetry

Inspects or persistently changes the preference. Lifecycle reporting is bounded and identifier-free. Override for one invocation:

$env:NALA_TELEMETRY = "0"

Diagnostics

nala doctor
nala doctor --json

The --json form is what to attach to a bug report — after reviewing it.

WARNING

Diagnostics contain absolute paths, workspace and repository names, and provider details. Those routinely reveal usernames and unreleased project names. Redact before sharing.