---
title: "Robion server on Linux — install & pairing"
description: "Run the Robion server headless on any Linux box (a Raspberry Pi is enough): one-line install, pair your phone and the macOS app over Tailscale, agents run 24/7."
url: "https://robion.app/server/"
lang: en
---

# Agents that keep working after you close the lid.

The Robion server runs headless on any always-on Linux machine — a home server, a Raspberry Pi 5, a VPS. Your phone and the macOS app connect to it over your Tailscale network and its projects join the same cockpit, next to the local ones. Closing your laptop stops nothing.

## Before you start

- **Linux** — x64 or arm64; Debian/Ubuntu shown here, any distro with systemd works.
- **Node.js ≥ 22.13** — curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs
- **Build tools** — sudo apt-get install -y build-essential python3 (the terminal layer compiles once during install).
- **Tailscale** — Logged in on both the server and your devices; enable HTTPS certificates in the admin console (DNS → HTTPS), then: sudo tailscale set --operator=$USER.
- **Claude Code** — Installed and logged in on the server under the same user — agents run there.

## Install

One line; safe to re-run (it is also the updater):

```sh
curl -fsSL https://robion.app/install.sh | sh
```

- downloads the latest server release and verifies its checksum,
- builds it in ~/.robion-server/versions/<version> (a few minutes on small boxes),
- sets a systemd user service up — the server survives reboots, updates never kill running agents,
- exposes it on your tailnet and prints a one-time pairing link.

## Expose it on your tailnet

The installer tries this itself. If it reports “Access denied” — or “remote enable” does later — Tailscale on Linux needs a one-time grant so the server may drive tailscale serve without root:

```sh
sudo tailscale set --operator=$USER
robion-server remote enable
```

robion-server remote status prints the https://<machine>.<tailnet>.ts.net URL once the proxy is up. The tailnet must have HTTPS certificates enabled (admin console → DNS → HTTPS Certificates).

## Pair your devices

A pairing link is single-use and valid for 10 minutes — mint one any time:

```sh
robion-server pair
```

**Phone** — Open the link on the phone; the web app loads directly from your server. Add it to the home screen and allow notifications.

**macOS app** — Settings → Servers → paste the pairing link → connect. The server's projects appear in the rail next to your local ones, grouped under the server's name.

## Update

Fetches the latest release, builds it beside the current one and switches atomically — running agents survive:

```sh
robion-server update
```

Roll back any time: robion-server versions, then robion-server use <version>. Day to day: robion-server status | logs | restart | pair.

## Troubleshooting

### “remote enable” fails with an access error

Let robion drive tailscale serve without root:
sudo tailscale set --operator=$USER
and enable HTTPS certificates in the Tailscale admin console (DNS → HTTPS). Then: robion-server remote enable && robion-server pair.

### The server does not come up

journalctl --user -u robion-server -n 50 shows why; the app log lives in ~/.local/share/robion/logs/. The service starts at boot only with lingering on: loginctl enable-linger $USER (the installer does this).

### Where is my data?

Projects, tasks and the pairing token live in ~/.local/share/robion and survive updates; installed versions live in ~/.robion-server/versions.

### The macOS app has no “Servers” section

Multi-server support needs Robion 0.11 or newer — update the app first (Robion → Check for updates).