01Install and pair
One command to install, one scan to pair
On the Linux machine you want to check on from your phone, run the install command as the user you normally log in as. No sudo needed.
Install
curl -fsSL https://botbus.io/install.sh | shNo curl? Use wget:
wget -qO- https://botbus.io/install.sh | shWhat the installer does
- Picks the x86_64 or aarch64 package based on
uname -mand downloads the version listed on this page. - Checks the download against the SHA-256 in the release manifest, and stops without installing anything if it doesn’t match.
- Puts
botbusat~/.local/bin/botbuswithout touching system directories. If~/.local/binisn’t on your PATH, it tells you how to add it. - Runs
botbus up: with a systemd user session it installs the user servicebotbus.service; without one it starts in the background with nohup. - If Claude Code is on the machine (
~/.claudeexists), it installs BotBus’s Claude Code hooks so Claude sessions you start on the computer show up on your phone too. Uninstalling removes them. - Shows a pairing QR code in the terminal and waits for you to scan it with your phone.
When it isn’t run in a terminal (CI, cloud-init, ssh host 'curl … | sh'), the installer only starts the service and doesn’t show a pairing code, so a pairing link carrying keys never ends up in a log. Log in to the machine later and run botbus pair in a terminal.
Keep it running after you log out of SSH
By default, systemd stops user services when your last login session ends. On a server, enable linger for your user so the service keeps running and also starts at boot:
loginctl enable-linger $USERSome systems require admin rights for this; then run sudo loginctl enable-linger $USER. botbus up reminds you when linger is off.
Machines without systemd (containers, some minimal systems) run it in the background with nohup. Logging out of SSH usually doesn’t affect it, but after a reboot you need to run botbus up again. To use this mode even when systemd is available, set BOTBUS_NO_SYSTEMD=1 first.
Pair your phone
- Scan the QR code in the terminal with BotBus on your phone. It’s drawn with text characters, so enlarge the terminal window if it doesn’t fit.
- Can’t scan it (say, you’re using an SSH client on the phone itself)? Open the pairing link printed below the QR code on your phone. The link carries the encryption key: only pass it between your own devices, and don’t paste it into chats or tickets.
- Pairing codes expire; the terminal shows when. If it has expired, run
botbus pairagain. - Already paired and want to add another phone? Run
botbus pairtoo; it creates an invite code. - Once paired,
botbus statusshows the connection state and how many phones are paired.
02Everyday use
Manage it with the botbus command
Every command runs as your user and talks to the background service over a local admin channel that only you can use.
Commands
| Command | What it does |
|---|---|
botbus up [--no-pair] | Installs and starts the background service; shows a pairing QR code if nothing is paired yet. Run it again after replacing the program and it switches the service to the new version |
botbus pair | Pairs a phone; when already paired, creates an invite code for another phone |
botbus status [--json] | Connection state, paired phones, detected agents, and whether an update is available |
botbus agents | Lists detected agents; botbus agents enable|disable <kind> turns one on or off (such as claude or codex; ACP agents are acp:<id>) |
botbus phones | Lists paired phones; botbus phones remove <id> removes one |
botbus unpair | Dissolves the whole pairing group; every phone has to scan again |
botbus logs [-f] | Shows the service log: the journal under systemd, or ~/.local/share/botbus/daemon.log with nohup |
botbus down | Stops the background service and keeps the credentials |
botbus update | Updates to the latest version |
botbus uninstall [--purge] | Removes the service and the program; --purge also deletes credentials and data |
botbus --version | Shows the version |
The botbus share, link, list, and mcp commands that agents use in phone tasks work the same as on the Mac. Dev previews (botbus preview) aren’t supported on Linux yet.
Update
botbus update- Downloads the new version for your architecture according to the release manifest on botbus.io, checks its SHA-256 and Ed25519 signature, replaces the program, restarts the service, and confirms that the new version is running.
botbus statustells you when an update is available (it checks once a day).- You can also rerun the install command: once the new program is in place, the
botbus upit runs switches the service to the new version.
Uninstall
botbus uninstallStops and removes the background service, deletes ~/.local/bin/botbus, and removes BotBus’s hooks from Claude Code’s settings. Credentials stay in ~/.config/botbus, so you won’t need to pair again after reinstalling.
botbus uninstall --purgeAlso deletes credentials and data (~/.config/botbus, ~/.local/share/botbus). The computer then shows as offline on your phone, and you can remove it there.
03Troubleshooting and reference
When something’s off
Common problems
- The botbus command isn’t found
~/.local/binisn’t on your PATH. Runecho 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.profile && . ~/.profile, or call~/.local/bin/botbusdirectly. - Claude Code or Codex doesn’t show up on the phoneThe systemd service uses the PATH from the moment you ran
botbus up. Install the agent first, make surewhich claude(orwhich codex) finds it in your terminal, then runbotbus upagain so the service picks up the new PATH.botbus agentslists the agents it detected. - Claude Code sessions started on the computer don’t show up
botbus upinstalls the hooks when~/.claudeexists, and they use curl to report events to BotBus. Runbotbus upagain after installing Claude Code, and install curl if it’s missing. Sessions you start from the phone don’t rely on hooks. - It can’t connect and the log mentions certificates or TLSThe system is missing root certificates. Install ca-certificates (Debian / Ubuntu:
sudo apt install ca-certificates; Alpine:apk add ca-certificates), then runbotbus down && botbus up. Minimal container images often lack them. - The machine has no systemdBotBus falls back to running in the background with nohup, which also works in containers; run
botbus upafter a reboot. - The service stops when you log out of SSHEnable linger for your user; see Keep it running after you log out of SSH.
- The service won’t start or reports a problemCheck
botbus logs(add-fto follow).botbus statusalso reports causes such as credentials that can’t be read. - Log lines show <private>By default the log redacts strings such as task content and paths. To debug, run
botbus down, then temporarily runBOTBUS_LOG_PRIVATE=1 botbus daemonin the foreground; press Ctrl-C when done and runbotbus up. That log contains task content, so review it before sharing.
Manual install
If you’d rather not pipe a script into your shell, download, verify, and unpack it yourself. The files for this version:
| Architecture | File | Size | SHA-256 |
|---|---|---|---|
| x86_64 | botbus-1.0.5-linux-x86_64.tar.gz.sha256 | 30.5 MB | fb75f3bc4bcaa62651653ce293514d6060ed422518e62c52f4649b3a7c128063 |
| aarch64 | botbus-1.0.5-linux-aarch64.tar.gz.sha256 | 29.1 MB | 5de0fa259dc4625674917381a8dfc7cc275228ae7b39a498c8535b7255373103 |
VERSION=1.0.5
ARCH=$(uname -m) # x86_64 or aarch64
FILE=botbus-$VERSION-linux-$ARCH.tar.gz
curl -fLO https://botbus.io/downloads/linux/$FILE
curl -fLO https://botbus.io/downloads/linux/$FILE.sha256
sha256sum -c $FILE.sha256
mkdir -p ~/.local/bin
tar -xzf $FILE -C ~/.local/bin botbus
~/.local/bin/botbus upsha256sum -c should print OK; you can also compare against the SHA-256 in the table above. Release packages also carry an Ed25519 signature, which botbus update verifies.
Where files live
| Location | Contents |
|---|---|
~/.local/bin/botbus | The program: a single fully static binary |
~/.config/botbus/ | Pairing credentials (file mode 0600) and settings |
~/.local/share/botbus/ | Data; the daemon.log log when running with nohup |
~/.config/systemd/user/botbus.service | The systemd user service |
$XDG_RUNTIME_DIR/botbus/ | The admin socket the botbus command uses to talk to the service; it only accepts connections from the same user |
If XDG_CONFIG_HOME or XDG_DATA_HOME is set, those locations are used instead.
Security
- End-to-end encryption: tasks, conversations, and commands are encrypted on this machine before they leave it, and the server only relays ciphertext it can’t read. See End-to-end encryption.
- Pairing credentials live only in
~/.config/botbuswith file mode 0600; other users on the same machine can’t read them or connect to your admin socket. - The pairing link carries keys, so it’s only printed in your terminal and never written to the log.
- The installer checks the SHA-256 from the release manifest;
botbus updatealso verifies the Ed25519 signature.