Advanced install options
The one-liners on the Install page are all a normal install needs. This page covers the extra installer knobs for non-default setups — self-hosted or staging control planes, pinned versions, and Waired development itself.
Point at a specific control plane
Section titled “Point at a specific control plane”By default the client enrolls against the production control plane. To target a different one, pass its URL at install time:
curl -fsSL https://github.com/waired-ai/waired-agent/releases/latest/download/install.sh \ | sudo bash -s -- --control https://your-control-plane.example.com# Flags need the script on disk (the piped form can't pass parameters):iwr -useb https://github.com/waired-ai/waired-agent/releases/latest/download/install.ps1 -OutFile $env:TEMP\install.ps1& $env:TEMP\install.ps1 -Control 'https://your-control-plane.example.com'The installer records the URL on the machine, so a later waired init on that
machine enrolls against the same control plane without repeating the flag. Pass
--control again only to change it.
You can also set the control plane for the first time with
waired init --control <URL>. For per-org installer wrappers, the
WAIRED_CONTROL_URL environment variable is a lower-priority fallback used when
no --control / -Control flag is given.
Pin a specific version
Section titled “Pin a specific version”WAIRED_VERSION pins the installer to an exact release instead of the latest
stable (edge is also accepted — see
Edge channel):
curl -fsSL https://github.com/waired-ai/waired-agent/releases/latest/download/install.sh \ | WAIRED_VERSION=1.2.3 sh$env:WAIRED_VERSION = 'v1.2.3'iwr -useb https://github.com/waired-ai/waired-agent/releases/latest/download/install.ps1 | iexChoose the install location (Windows)
Section titled “Choose the install location (Windows)”A fresh interactive install.ps1 run asks for the install location (Enter
keeps the default C:\Program Files\Waired). To pin it non-interactively,
pass -InstallDir <path> (script on disk) or set WAIRED_INSTALL_DIR for the
piped one-liner:
$env:WAIRED_INSTALL_DIR = 'D:\Waired'iwr -useb https://github.com/waired-ai/waired-agent/releases/latest/download/install.ps1 | iexThe resolved location is recorded in the registry (HKLM\SOFTWARE\Waired),
so later updates, re-runs and uninstall.ps1 find a relocated install
automatically. Linux (apt layout) and macOS (WAIRED_DARWIN_BINDIR) keep
their existing conventions.
Development preset (--dev / -Dev)
Section titled “Development preset (--dev / -Dev)”For Waired development and dogfooding only: --dev (Linux / macOS) or -Dev
(Windows) pre-configures the install for the built-in development control
plane, so the post-install waired init enrolls there without further flags.
--control / -Control takes precedence when both are given.
curl -fsSL https://github.com/waired-ai/waired-agent/releases/latest/download/install.sh | sh -s -- --deviwr -useb https://github.com/waired-ai/waired-agent/releases/latest/download/install.ps1 -OutFile $env:TEMP\install.ps1& $env:TEMP\install.ps1 -DevClean install (--clean / -Clean / WAIRED_CLEAN=1)
Section titled “Clean install (--clean / -Clean / WAIRED_CLEAN=1)”Full wipe first, then a fresh install — the recipe lives on the Install page
(Clean install).
Two details worth knowing here: WAIRED_CLEAN=1 is the environment-variable
form (it’s how the piped Windows iwr | iex one-liner opts in, and works on
every OS), and --yes / -Yes skips the confirmation for unattended hosts —
without it, a non-interactive run refuses to wipe.
Every installer flag
Section titled “Every installer flag”Linux and macOS use install.sh; Windows uses install.ps1 with the
PowerShell spelling of the same option. Both accept the environment-variable
form, which is how the piped one-liner passes an option without writing the
script to disk.
install.sh |
install.ps1 |
Environment variable | What it does |
|---|---|---|---|
--dry-run |
-DryRun |
Print every privileged command without running any of them. | |
--yes, -y |
-Yes |
Assume yes at every prompt, including the pre-install summary. | |
--no-init |
-SkipInit |
Do not run waired init after installing. Without this, installing signs you in and sets you up in one pass. |
|
--skip-ollama |
-SkipOllama |
WAIRED_NO_OLLAMA=1 |
Do not install the AI software. Use it when you already run your own Ollama. |
--skip-claude-proxy |
-SkipClaudeProxy |
WAIRED_NO_CLAUDE_PROXY=1 |
Leave Claude Code pointed at the Anthropic API instead of your own AI. |
--mask-pii |
-MaskPII |
WAIRED_PII_MASK=1 |
Hide your home folder, username, machine name and account email in the output, for screenshots and bug reports. Best-effort. |
--log-level <level> |
-LogLevel <level> |
WAIRED_LOG_LEVEL |
Start the agent at this log detail: debug, info (default), warn or error. Use debug for pre-release debugging. Change it later without reinstalling via waired config log-level. |
--check |
-Check |
Report whether a newer version is available; change nothing. | |
--update |
-Update |
Update an existing install rather than installing fresh. | |
--edge, --latest |
-Edge, -Latest |
WAIRED_VERSION=edge |
Install or switch to the latest main build. Not a stable release — see What’s new. |
--stable |
-Stable |
Install or switch to the latest stable release. | |
--clean |
-Clean |
WAIRED_CLEAN=1 |
Wipe everything first, then install fresh. Destructive; asks to confirm unless --yes. |
--control <URL> |
-Control <URL> |
WAIRED_CONTROL_URL |
Enroll against a specific control plane. |
--dev |
-Dev |
The built-in development control plane. For Waired development only. | |
-InstallDir <path> |
WAIRED_INSTALL_DIR |
Where to install (Windows). | |
--non-interactive |
-NonInteractive |
Never ask anything. Also signs in on a computer with no terminal, where the default is to skip sign-in — see below. | |
--inference-enabled true|false |
-InferenceEnabled |
Answer “run AI models on this computer?” without being asked. | |
--share-with-mesh true|false |
-ShareWithMesh |
Answer “let your other devices use this computer’s AI?” without being asked. | |
WAIRED_VERSION=1.2.3 |
$env:WAIRED_VERSION |
WAIRED_VERSION |
Pin an exact release. |
WAIRED_STATE_DIR |
Where Waired keeps identity and settings. macOS and Windows only — see below. | ||
WAIRED_OLLAMA_INSTALL_TIMEOUT |
How long the AI software’s one-time download may take before Waired gives up. Defaults to 60m — raise it (e.g. 3h) only on a very slow connection. |
Installing on a computer with no screen
Section titled “Installing on a computer with no screen”On a server, a CI runner or an image build there is nobody to sign in, and signing in needs a browser. So the installer installs Waired and starts it, then stops before sign-in and tells you to finish later:
Note: No terminal detected — sign-in skipped. To finish setup: - run: sudo waired initAdd --non-interactive / -NonInteractive if you want it to try anyway — it
takes the sensible answer to every setup question instead of asking. --yes is
not the same thing: it answers the questions, but still stops before sign-in.
Moving where Waired keeps its files
Section titled “Moving where Waired keeps its files”WAIRED_STATE_DIR moves identity, keys and settings somewhere other than the
default.
It works on macOS and Windows, where the installer registers the background
service and can point it wherever you like. On Linux it is ignored: the
service definition ships inside the package with the standard location
(/var/lib/waired) already written into it, so the installer has nothing to
choose. Uninstalling with --clean removes a relocated folder as well.
Run the script with --help / -Help for the authoritative list, or read
packaging/install/README.md
in the repository.