← All guides

Update your operator (without losing your identity)

Update a running Halo operator safely: refresh the CLI, restart the service, verify with doctor — wallet, reputation, and earnings all carry over.

An operator is a long-running service, so updating it has two parts: update the CLI, then restart the service so it actually runs the new code. A daemon that auto-restarts on crash still runs the old build — only a restart picks up the update.

Your wallet is your identity — earnings, League points, and dashboard pairing all live on it. The whole procedure below leaves ~/.halo/ untouched.

1. Update the CLI

npm rm -g halo-cli
bash <(curl -fsSL https://raw.githubusercontent.com/warden-protocol/run-halo/main/skill/scripts/install.sh)

The first command matters: the installer exits early if halo is already on your PATH. Details in update the halo CLI.

2. Restart the service

There’s no restart subcommand — uninstall and reinstall the unit:

halo service uninstall serve
halo service install serve

If you pass daemon arguments, pass them again after --, exactly as you did the first time. If your wallet keystore is passphrase-protected, export HALO_PASSPHRASE before install — it’s baked into the service unit’s environment so the daemon can unlock the wallet unattended.

Downtime is a few seconds. Still, updates count as offline time like any other restart, so prefer low-traffic hours — the same advice as in keep your operator online.

3. Verify

halo doctor --json          # install + wallet state, provider, relay health
halo service status serve   # is the daemon back up?
halo service logs serve     # watch the first requests arrive

Check that doctor reports the same wallet address as before — it will, unless someone passed --rotate-wallet, which is never part of an update.