Get started
Without Docker
A Mac, or a Linux server without Docker, runs Vyre straight from the npm package. There is one
background process, running as your own login account (never root), with its data in ~/.vyre
in that account's home. Vyre's history reads the same ~/.claude/ as your own claude. The
install line from the Vyre app installs a Linux server with Docker, or a Mac that stays on as a
service, as in Install; this page is for running Vyre from the package instead,
and you pair it from your Vyre app.
What you need
- Node 22.5 or newer (
node --version). - Claude Code:
npm install -g @anthropic-ai/claude-code. - On Linux: systemd.
Install the package
Vyre is not on npm yet, so install the same tarball the Docker box builds from:
npm install -g https://vyre.run/box/vyre.tgz
Once Vyre is published, this becomes npm install -g vyre.
The package is about 6 MB. Search by meaning uses a local model of about 130 MB, which Vyre
fetches into ~/.vyre (embedder/ and models/) the first time it indexes; until then search
matches keywords. vyre recall --setup fetches it now.
Run it
On this Mac
vyre up # role local: this Mac talks to your box
vyre up --box # or: this Mac is the box
vyre up --connect https://alex.vyre.run # a box you already set up
A Mac's role is local by default. vyre up starts Vyre on this Mac, asks where Vyre should run
(or saves the address you gave with --connect; it pairs nothing and asks nothing, and pairing is
vyre link pair <code> with the code the box shows), offers once to add Vyre's line to Claude Code's status line, and builds and
opens the Lumen (--no-capsule skips that). The full walk-through is
Install.
vyre up --box sets the role to box and prints the pairing line (wink.server.code), which you
pair from your Vyre app. The Mac then serves your phone, so it has to stay awake for the
phone to reach it. For a Mac that is the always-on server, use the Vyre app's
install line (Install): it installs Vyre as a
service that starts when the Mac does, which vyre up --box does not.
There is no login item. vyre up starts Vyre, and restarts it when the installed version or
the role has changed. Some commands, such as vyre recall, vyre start and vyre capsule, also
start it when it is not running; others, such as vyre status, only report. The rest:
vyre status # is it running, and what is it running
vyre down # stop it
vyre modules # every module and whether it started
Its output goes to ~/.vyre/logs/vyred.out, and its log to ~/.vyre/logs/, one file
per day (2026-09-27.log).
On a server
npm install -g https://vyre.run/box/vyre.tgz
sudo vyre up --system --user alex
vyre up
This installs Vyre under systemd. --user names the account it runs as; it can never be root. Under sudo it defaults to the
account that ran sudo. Add --dry-run to see every change without making one.
vyre up --system does this, and running it again changes only what differs:
- Creates
~/.vyrefor that account, mode 0700. - Sets up what watchers run behind: bubblewrap and, where Ubuntu restricts user namespaces, its AppArmor profile.
- Writes
vyre.servicein/etc/systemd/system/. It runs Vyre as the account withRestart=alwaysandNoNewPrivileges=yes,VYRE_HOMEset to~/.vyre, and optional environment from~/.vyre/env. Vyre opens no listener of its own on the network: its built-in network and the relay carry every connection. - Runs
systemctl daemon-reload,systemctl enable vyre.serviceandsystemctl restart vyre.service.
Then pair it from your Vyre app: vyre call wink.server.code '{"qr":true}' on the server shows the
QR code and the long code, and you pick the three words the app shows. Pairing is described in
Your private network.
Without Docker there is no Headscale or node program in the package, so the network reports
"no binary" and the relay carries every connection. That still works. To get the direct path, put
headscale 0.29.4 and wink-forwarder on the server and set VYRE_HEADSCALE_BIN and
VYRE_WINK_FORWARDER_BIN (the network looks for those two). The Mac server installer carries both;
a plain npm install does not.
If this happens
vyre up --system says systemd is required
Without systemd there is no system install. Run
vyre daemon(Vyre in the foreground) as the account under your own supervisor, withVYRE_HOMEset, and restart it when it exits.
Upgrade
sudo npm install -g https://vyre.run/box/vyre.tgz && vyre up
vyre up sees an older version running, stops it, and systemd starts the new one. If an
upgrade changed the units, vyre up prints the line to rewrite them:
sudo vyre up --system --user alex.
Remove
sudo vyre uninstall --system
sudo npm rm -g vyre
vyre uninstall --system disables and removes the vyre.service unit. ~/.vyre (the vault, memory and
config) stays unless you add --purge, which deletes it and cannot be undone. --dry-run
works here too.
Back up and restore
The same two commands as on a Docker box, run as the account itself:
vyre backup # vyre-backup-YYYY-MM-DD.vyre, in this folder; asks for a passphrase
vyre down # restore needs Vyre stopped
vyre restore vyre-backup-2026-09-27.vyre --force
vyre up
Under systemd, stop it with sudo systemctl stop vyre instead of vyre down. The backup
holds your settings, the store (vyre.db), the sealed vault, watchers, module data,
certificates, names, artifacts, project files and session transcripts, sealed with the
passphrase you typed. Keep the file somewhere only you can read, and the passphrase apart from it.
Where to go next
- Your private network: pairing, direct or relay, and your address.
- CLI reference: every
vyrecommand. - Configuration reference:
role,network.portand the rest.