Install — VPS
The bridge install on a Linux VPS is identical to the local Mac flow — arpc is the same CLI, the bridge dials outbound to gateway.arp.run. The only difference is the service unit (systemd instead of launchd).
Prerequisites
- A VPS with Node.js 24+
- An agent (KyberBot, custom, etc.) already running locally
- A
.agentdomain + handoff bundle fromcloud.arp.run, placed in your agent folder
Steps
# 1. Install the CLI
npm i -g @kybernesis/arp@latest
# 2. Initialize ARP in the agent folder
cd ~/agent-folder
arpc init --framework kyberbot
# 3. Install the bridge service (systemd unit)
arpc service install
# 4. Verify
arpc service status
arpc host status
The systemd unit lives at ~/.config/systemd/user/arpc-host.service (user-mode) or /etc/systemd/system/arpc-host.service (system-mode, if you ran with sudo).
Differences from the Mac install
- No tunnel needed. The bridge already dials outbound; a public IP isn't required for inbound peer traffic.
- systemd, not launchd. Same logical model (auto-restart on crash + on boot).
- Larger logs. systemd's journal can be queried via
journalctl --user -u arpc-host -f.
Auto-start on reboot
# user-mode systemd
loginctl enable-linger $USER
systemctl --user enable arpc-host
Without enable-linger, user services stop when you log out. With it, they keep running.
Common operations
| What | Command |
|---|---|
| Stop the bridge | systemctl --user stop arpc-host |
| Start the bridge | systemctl --user start arpc-host |
| Restart | systemctl --user restart arpc-host |
| Tail logs | journalctl --user -u arpc-host -f |
| Uninstall | arpc service uninstall |
Troubleshooting
See Troubleshooting. VPS-specific things:
- Outbound HTTPS blocked — some hosting environments restrict outbound to whitelisted IPs. The bridge needs reach to
gateway.arp.run(Railway-hosted; resolves to a few IPs). - clock drift — the bridge signs envelopes with timestamps; a few minutes of drift causes signature failures.
timedatectl set-ntp true.
Related
- Local (Mac) — same flow with launchd
- Cloud (self-host) — running your own gateway instead of
gateway.arp.run