Host bots on your own server
Run Neoo Connect on a VPS or homelab with one pairing command, so your bots keep working 24/7 on a machine you control.
A self-hosted server is a machine you run (a VPS, a homelab box, a Raspberry Pi) that hosts your bots with Neoo Connect. It works like a Neoo Cloud machine, on your own hardware: bots, routines, webhooks, tables and the knowledge base run there while your computers are off. It shows up in the environment menu as Your server · name, and you move a bot to it like to any other environment.
Add your server
- Open a bot, click the button next to its message field (Where this bot runs) and choose Add your server.
- Type a name (for example VPS Paris) and click Generate command.
- Copy the command and run it on your server, within 15 minutes. Choose Docker or Install script.
- The dialog shows Connected once the server has joined your account. It then appears as Your server · VPS Paris in the environment menu.
The pairing token in the command is single use, valid for 15 minutes, and tied to your account. The server creates its own key, joins the Neoo hub, and only then is the token consumed, so a start that failed (no network, container killed) can be retried with the same command until it expires. The token never appears in a URL, and Neoo never writes it in its logs. It is shown once: if you lose it, generate another.
With Docker
docker run -d --name neoo-bots --restart unless-stopped \
-v neoo-bots:/data \
-e NEOO_PAIR_TOKEN='vpt_…' \
ghcr.io/vato-group/neoo-connect:latest
The image is based on Node 22, runs as a non-root user, keeps everything (state, provider sign-ins, bot folders) in the /data volume, publishes no port, and reports its health to Docker. After the first start the token is no longer needed: you can remove it from your command or compose file.
With the install script
curl -fsSL https://api.vatoide.com/api/releases/connect/install.sh | sh -s -- --bot-host --pair 'vpt_…'
The script installs Neoo Connect for the current user, pairs it, and installs a user service that starts it at boot. It needs curl and tar, and no root access. Because the token is on the command line, it is visible to other users of the machine while the script runs and stays in your shell history: it is harmless after 15 minutes or once used, but prefer Docker on a shared machine.
Equivalent manual steps, with the token in the environment instead of the command line:
NEOO_PAIR_TOKEN='vpt_…' vato-connect pair --name "VPS Paris"
vato-connect start --bot-host (or VATO_CONNECT_BOT_HOST=1) runs the bot host in the foreground.
Connect your model accounts
A server never receives your provider accounts from your computer. Sign in on the server itself, like on any Connect runner:
docker exec -it neoo-bots vato-connect accounts add claude
Use codex or gemini for the other providers. The sign-ins stay in the server's volume. A bot can only be moved to the server if its provider is connected there; otherwise the option is greyed out with the reason.
What's different on your server
| Feature | On your server | On Neoo Cloud |
|---|---|---|
| Always on | Yes: never put to sleep, never woken by Neoo. If the machine is off, its bots can't be reached. | Sleeps after 4 hours, wakes on a message or routine. |
| Models | The accounts you connect on the server (Claude, Codex, Gemini). | Accounts copied from your computer, or Neoo AI. |
| Credits | None: you use your own subscriptions. | Included in the plan. |
| Computer Use | Only if the machine has a desktop session. | Not available. |
| Neoo Vault | Not copied automatically. | Items copied to Neoo Cloud. |
| Routines, webhooks, tables, knowledge base | Yes, same as Neoo Cloud. | Yes. |
| Privacy | End-to-end encrypted between your devices and the server; Neoo only relays messages. | Same. |
Manage and revoke servers
Add your server also lists your servers and their state (waiting, connecting, connected). Click the trash icon next to a server to revoke it: its session is closed immediately and it can no longer reach your account. Bots that were on it stay on the machine, but you can't write to them from Neoo anymore. A server can only act for the account that paired it.
If a server stops connecting after you revoked it, or after 30 days, generate a new command and run it again.
Troubleshooting
- This server is not paired: start it with
NEOO_PAIR_TOKEN, or runvato-connect pair. - Token refused: it expired (15 minutes), was already used, or was revoked. Generate a new command.
- The server never shows as connected: check that it can reach
https://api.vatoide.comover HTTPS and WebSocket, then readdocker logs neoo-bots. - Update Neoo on name to move bots there: the server runs an older Connect. Pull the latest image or rerun the install script.