Skip to content

Sign in and set up

Who this is for
Anyone resuming an interrupted setup, or setting up a server
You need
Administrator rights on the computer, and a Google account
Time
10 minutes of attention, plus the model download

Installing normally does this for you. The install command starts Waired and then goes straight into sign-in, so a first-time setup is covered by the Quickstart and you never type waired init yourself.

This page is for the times you do:

  • setup was interrupted and you are resuming it
  • you installed with --no-init
  • you are setting up a server with no desktop
  • you want to know what each choice actually does

Open Terminal (Administrator) — right-click the Start button — and run:

Terminal window
waired init

It prints a sign-in link and waits:

You should see

Sign in using this link:
https://app.waired.ai/login/…
Control Plane: https://app.waired.ai
>> Press Enter to open your browser (or open the link above yourself)...

Press Enter and choose your Google account. You can also copy the link into any browser, on this computer or another one — the terminal does not wait on that keystroke, and picks up as soon as you are signed in.

After sign-in your browser lands on the setup page for this computer. Pick a model, press Continue, and it reports what the computer is doing, live:

Every step is reported by the computer itself. Closing this tab does not stop them.
Step What is happening How long
Download the inference engine Fetching the program that loads and runs models — around 1.5 GB for the standard option, around 4 GB for the high-performance one. The page shows how far it has got and how fast it is going, the same figures the terminal shows. A few minutes
Install the inference engine Unpacking and setting it up. This is the part that needs administrator rights — which is why the terminal window has to stay open. A minute or two; up to 15 for the high-performance option
Connect your coding tools Pointing the coding tools you ticked at Waired. Also administrator work, so it is the terminal that does it — and it is done before the long download rather than after, so nothing is waiting on you later. Seconds
Download the model The model weights, several gigabytes. The page shows how far it has got and how fast it is going. 5–30 minutes
Benchmark the inference speed A short measurement, so Waired knows whether this machine keeps up. Up to 5 minutes

The download step only appears when there is something to download: a computer that already has the inference engine goes straight to the next step. The coding-tools step only appears when the page asked you about them.

The benchmark is a switch on the model step, next to the coding tools, and it is on to begin with. Leave it on and it runs by itself once the model has finished downloading; turn it off and the setup finishes without one.

When it finishes, the reading is on the page — and if it came in under the rate coding tools need on this machine, the page says so and offers Choose a different model ahead of finishing. Nothing is decided for you: a slower model still works, and you can leave it as it is.

The machine’s own figures — its graphics card, its memory — stay under the card for the whole of setup, so the model list can be read against them.

You should see

Every step ticked, and “Everything’s ready — this computer can now run AI on its own.” Press Finish setup for the list of your computers, or Go to device for this one’s page.

While the browser is driving, the terminal asks you nothing. It reminds you to leave it open, and — when the setup page has asked which coding tools to connect — it is this window that writes them, because that needs administrator access the page does not have:

Keep this terminal window open until setup finishes — it does the parts the
browser can't.
🔌 Setting up your coding tools (claude-code, openclaw, opencode)…

Ticking Claude Code there does what the page says it does: it points Claude Code at Waired for everyone who uses this computer. The other two tools only drop files in your own home folder. This is the same routing the terminal asks about after a non-browser install, decided in the browser instead — and --skip-claude-proxy at install time still overrides it.

On an older setup page, which does not ask, it tells you how to do it yourself instead: “You can set up your coding tools later from this terminal with waired link all.”

That happens before the model download, which is deliberate: it is the last thing on this computer that needs administrator rights, and putting it behind a download that can take an hour meant coming back to a setup that had been waiting for you. So the terminal is finished with its share by the time the download starts, and says so — “Setup is continuing in your browser — nothing more is needed from this terminal”. You can close it from then on. The model download and the speed check do not need it, and the coding tools stay connected whether the window is open or not.

If you leave it open, it keeps showing the download’s progress. That is the only reason to.

At “Setup is continuing in your browser…”, press Enter. Nothing moves yet — the terminal first says what taking over means and asks you to confirm:

You are asked

Taking over means this terminal drives setup and the browser page stops.
Any model download keeps running either way.
Take over setup in this terminal? [y/N] (default: No)

Answer y to take over. Pressing Enter again answers No, so a keystroke you did not mean cannot move setup out of the browser; the offer stays open if you change your mind.

The offer closes once you press Continue in the browser. From that point this window is running the installation, and the terminal says so:

You should see

Setup has started in your browser — this window now runs the installation.

Enter still answers, but it no longer switches:

Setup is running in your browser and this window is doing the installation.
To abandon it, press Ctrl-C and run the setup command again.

Abandoning costs the work in progress, which is why it takes a deliberate Ctrl-C rather than a keystroke. If the browser tab is what went wrong, you do not need this: open the computer’s page again and choose Resume setup.

What the terminal asks after that depends on how it is running.

The terminal asks about your coding tools, and nothing else — the model was chosen in the browser, or by the installer. Both questions come after the model has finished downloading, so nothing interrupts the transfer:

You are asked

Whether to set up coding-agent integration, then whether to route Claude Code through Waired. Answer Y to both.

Routing points Claude Code at Waired. Which side answers a turn is then the model you pick in /model: a session starts on Claude Code’s own default, which is an Anthropic model, until you pick a Waired entry.

Answering no to the routing question leaves the connection installed but inactive; turn it on later with sudo waired claude enable.

With --no-browser, --non-interactive, or on a machine where Waired cannot reach a running service to hand over to, waired init does the whole job itself and asks the full set of questions:

  1. Google sign-in. Only the link and a pairing code are printed — open them on another device. The terminal says “Nothing to press here”: no key is needed at this step, and it notices the sign-in on its own.

  2. Run models on this computer? [Y/n]Y on a desktop or GPU box. N on a machine that should only use another computer’s AI; it still joins your network as a gateway/relay. The default follows this machine’s memory: with a model to recommend, Waired defaults to yes; a machine below the recommended spec is warned first and defaults to no. Which model is not decided here — that is step 5, after the inference engine is installed and this computer has been measured. Change your mind later with waired inference on.

  3. Route Claude Code through Waired? [Y/n]

  4. Keep local inference on anyway? [y/N] — asked only if the quick one-time speed measurement, taken right after the inference engine is installed, finds this computer slow for everyday coding work. No (the default) turns local inference off; the machine still joins as a gateway/relay, and waired inference on brings it back.

  5. Choose the model for this computer — a numbered list of the bundled models, with the one recommended for this hardware preselected; press Enter to take it. A model that fits but cannot keep a whole coding session on the GPU says how much of its KV cache is read from system RAM instead — the same figure waired models ls --detail prints. A model that does not fit this computer’s memory at all is listed with the reason, and picking it anyway is confirmed explicitly (Download it anyway? [y/N]No returns to the list). Choosing 0) Don’t download a model now finishes setup with the inference engine installed and no model, which is a normal state, not an error: pick one later from the browser dashboard or with waired models pull <model>. If nobody answers — the terminal closed, nobody at the keyboard — nothing is downloaded: the question is recorded as open and Waired waits until someone chooses. Asked only on the first install — a machine that already has a model keeps it.

  6. Benchmark the inference speed — a short measurement, taken once the model is ready. If this computer cannot keep up, Waired offers a lighter model, names both and says which direction it is offering, so you can weigh the trade-off. If nobody answers — the terminal closed, nobody at the keyboard — the model this machine is running is left alone and nothing is deleted.

Sign-in normally needs a person and a browser. On a fleet of servers, or in a container image that has to come up on its own, there is neither. An auth key stands in: you create it once in the web console while signed in, and each machine presents it instead of signing in.

Create one under Settings → Auth keys, then on the machine:

Terminal window
sudo waired init --auth-key waired_ak_...

Choose one device for a key you use once, or many devices for a key a fleet or a container image shares. Keys expire after at most 90 days, and you can revoke one at any time — revoking stops new machines from joining and leaves the ones already added signed in.

Waired must already be installed and its background service running: an auth key is a credential, not a way to skip the service. If the service is not answering, waired init says so and stops rather than half-joining the machine.

Setting up this way, the machine joins your network and appears in the console straight away, but the browser setup wizard does not open for it — there is no browser. waired init knows that and carries on with setup in the terminal: it does not mention a browser, and it does not wait for one. Everything else, including choosing its model, is available from the console.

The model then downloads in the foreground with a progress bar:

Starting the inference engine…
Preparing to download qwen3.8-27b…
Downloading qwen3.8-27b: 41% 7.3 GB / 17.7 GB (44 MB/s)

The model named on those lines is the one you chose. When setup is running in the browser, that is the model you picked there — not whichever model the computer would have selected for itself.

You should see

╭─ 🎉 Waired is ready — everything completed successfully! ─╮
│ Account you@example.com │
│ Model qwen3.8-27b — 58 tok/s │
│ Claude routed through Waired │
│ Local inference is live via the waired-agent daemon. │
│ Point your coding agent at Waired and start building. │
╰───────────────────────────────────────────────────────────╯

Speed and Model are two different measurements, and both are worth reading. Speed is one whole request end to end — timed on a small stand-in model while Waired was setting up, so you can compare one computer against another. Model is the model you actually chose — the figure after its name is how fast it produces words on this computer. A fast computer can still be paired with a heavy model.

Speed is measured once per install, and again when Waired updates. To take it again — after adding memory or a GPU, say — re-run waired init.

Claude routed through Waired means the machine-wide setting is in place. A new Claude Code session still starts on Claude Code’s own model, which the real Anthropic API answers; pick a Waired entry in /model to have this computer answer — see Use it from Claude Code.

You should see

╭─ 🎉 Waired is ready — local inference starts off on this computer ──────────────╮
│ Account you@example.com │
│ Speed 210.4 s or more per request (target: 45 s or less) │
│ Claude still using the Anthropic API │
│ Signed in and running — this device is on your network. │
│ Local inference starts off here; it can still use your other computers' models. │
│ Turn it on anyway with `waired inference on`. │
╰─────────────────────────────────────────────────────────────────────────────────╯

Nothing failed here. Waired timed this computer, one request would take longer than it thinks is useful, and it left local inference off rather than downloading tens of gigabytes you would then wait on. The computer is on your network and can use the models running on your other computers. If you want it on anyway, that is one command — and waired inference status repeats the reason whenever you ask.

More about that check

You should see

╭─ 🎉 Waired is ready — local inference is switched off on this computer ────────╮
│ Account you@example.com │
│ Claude routed through Waired │
│ Signed in and running — this device is on your network. │
│ Local inference is off here; requests go to your other computers. │
│ Turn it on anytime with `waired inference on`. │
╰────────────────────────────────────────────────────────────────────────────────╯

The other way local inference ends up off: you said so. Answering no to Run models on this computer?, or passing --inference-enabled=false, leaves this computer as a gateway — signed in, on your network, sending requests to your other computers. Nothing failed, and nothing is downloading.

The difference from the box above is who decided. There, Waired measured this computer and advises against it, so turning it on is going ahead anyway. Here nobody is advising against anything, so it is available anytime.

You should see

Engine install skipped (WAIRED_NO_OLLAMA).
* Waired is signed in — engine installs are turned off here
Signed in and running — this device is on your network.
No local inference here; it can still use the models on your other computers.
Add local inference later with: waired runtimes install ollama

This is what you get when you told setup not to install an engine — --skip-ollama on Linux and macOS, -SkipOllama on Windows, or WAIRED_NO_OLLAMA in the environment. Nothing went wrong: the computer is signed in, on your network, and can use the models running on your other machines. waired init exits 0 here, so a script cannot mistake it for a failure.

Not the same as the box above it, even though both end with local inference off. There, Waired timed the computer and decided; here, you decided before it ever looked. The difference that matters is the way back: waired inference on fixes the one above and does nothing here, because this computer has no engine to turn on.

Run sudo waired runtimes install ollama (waired runtimes install ollama from an elevated prompt on Windows) whenever you want this computer to run models itself.

You should see

Model still downloading; it will finish in the background. Run `waired status`
to watch progress, or `waired runtimes benchmark` later to check performance.
* Waired is signed in — local inference is still setting up here
Account you@example.com
Claude still using the Anthropic API
Signed in and running — this device is on your network.
Waired is still setting local inference up in the background; the line above says what it's waiting on.
Watch it with: waired status

Setup finished before the model did. A model is several gigabytes, and on a slow connection it can outlast the window waired init waits in — so setup hands the terminal back and the background service carries on downloading. The line above the box says which step it stopped on: the download, or an engine that had not finished starting.

Nothing is wrong and there is nothing to run. waired init exits 0, and waired status shows the download’s progress. Local inference starts answering on this computer by itself when the file lands; you do not need to run setup again.

The box you get instead of the first one on this page, and the difference is only time. If you want the throughput figure that box shows, run waired runtimes benchmark once waired status says the model is ready.

You should see

No model was chosen for this computer, so nothing is downloading.
Pick one with `waired models pull <model>`, or from the browser dashboard.
* Waired is signed in — no model chosen for this computer
Account you@example.com
Claude still using the Anthropic API
Signed in and running — this device is on your network.
No model is set up here, so local inference has nothing to answer with yet.

Not the box above it, even though both end without a model on the computer. There, one is on its way; here, nothing was ever picked — so there is nothing to wait for and waired status has no progress to show.

This is what a computer Waired judged too small for any of its models gets. Setup still installs the inference engine and still signs the computer in, and it can still use the models running on your other computers. What it does not do is choose a model it cannot run well.

Pick one yourself with waired models pull <model> when you want to, or from the browser dashboard. waired models ls --detail shows which models fit this hardware and why. If a Speed figure appears in the box, that is what one request costs here — the number worth checking before you pick.

That's not right

! The inference engine could not be installed on this device.
no space left on device
Sign-in worked — this device is signed in and running. Only local inference is missing.
Retry the install with: sudo waired init

The inference engine could not be installed — most often no disk space, no network, or the command was not run with administrator rights. Sign-in is unaffected: the computer is on your network and can use the AI on your other machines already. Fix what the message names and run the command again; setup stops there rather than waiting for an engine that is not coming.

That's not right

[!] Local inference could not complete a test generation: HTTP 500
Check `waired status`, then `waired doctor`, for the engine's own reason.
! Waired is signed in — local inference is not answering yet
Signed in and running — this device is on your network.
The inference engine here could not answer a test request; the reason is above.

The inference engine installed and started, took the model, and then could not answer a single test request. This is different from the case above: nothing needs installing, so running the install again changes nothing.

The line above the box is the engine’s own reason, quoted as the engine gave it. Two causes are common — the model is too large for this computer’s memory, and a graphics driver the engine cannot use. waired status shows which model is loaded and how much memory this computer has; waired doctor reports the engine’s own state. waired runtimes benchmark re-runs the same test after a change, and offers a lighter model when one would fit.

Sign-in is unaffected either way: the computer is on your network and can use the AI on your other machines.

Options for servers and scripts
Flag Effect
--no-browser Never open a browser; print the URL and pairing code
--non-interactive Accept the hardware-derived defaults, ask nothing
--inference-bundled-model-id <id> Pin a model instead of letting Waired choose
--inference-enabled=true|false Answer the “run models here?” question without being asked
--control <url> Point at a non-default service
--mask-pii Mask home directory, username, hostname and email in the output, for pasting into a bug report

The Waired app has a Sign in… entry, and it does sign this computer in.

Running setup again on a computer that is already signed in is safe: it re-authenticates and reopens the setup page, and does not count as a new device against your account.

On a computer that is already set up and running a model, setup asks before it starts over:

This device is already set up — Qwen3.5 2B is serving here.
Run setup again? It re-asks every question and re-measures this computer.
No leaves this device exactly as it is. [y/N] (default: No)

Press Enter to leave the computer alone — nothing is changed, and waired status shows what it is doing. Answer y to go through the whole setup again: every question is asked afresh and the computer is re-measured, so the speed check in step 6 may offer a different model than last time.

This question is skipped when you have already said what you want on the command line (--model, --inference-enabled) and with --non-interactive.

It is still asked after a re-authentication — waired init --force-reauth, or a plain waired init on a computer whose sign-in expired. Signing in again happens first, so answering No leaves the computer signed in and otherwise exactly as it was.