Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hermes for Rabbit R1

A native Rabbit R1 platform adapter for NousResearch/hermes-agent — talk to Hermes AI (full memory, skills, crons) directly from your R1, from anywhere.

Tested and working on real R1 hardware via both Tailscale Funnel and Cloudflare Tunnel.

Already have Hermes set up?

Send this to your agent:

Set up the Rabbit R1 adapter for me: https://github.com/mpotter2002/HermesRabbitR1

Your agent will read the install instructions from this repo and walk you through the full setup.

The problem

The Rabbit R1's current connection setup (used by OpenClaw) is designed for local/LAN use only — everyone has to be on the same network. The install script even warns:

"Do not run on cloud instances where your IP is publicly accessible."

Walk out your front door onto cellular — your R1 stops working. This adapter fixes that by adding a secure tunnel so your R1 works from anywhere.

Current R1 setup (LAN) This adapter
Home WiFi (same network) Yes Yes
Coffee shop WiFi No Yes
Cellular / mobile data No Yes
Travelling No Yes
Shared memory with Telegram/Discord No Yes
Skills, crons, tools No Yes
TLS encryption No Yes

How it works

R1 (anywhere with internet)
    |  wss://yourhost.ts.net  (TLS encrypted)
    v
Your VM or home server
    |
    v
rabbit_r1.py  (Hermes BasePlatformAdapter)
    |
    v
Hermes -> Claude / Ollama / any AI  (full memory, skills, crons)

The adapter runs a WebSocket server with a tunnel so the R1 connects via a stable public wss:// URL — exactly the same model as Telegram. Works from home, coffee shop, cellular, anywhere.

Features

  • Works from any network — not just home WiFi
  • Full Hermes AI — same memory, skills, and crons as your Telegram/Discord setup
  • Shared memory — tell Hermes something on Telegram, your R1 already knows it
  • Secure — TLS end-to-end, random token auth, device ID validation
  • QR code pairing — saved as PNG and printed on startup, scan with R1 to connect
  • Two tunnel options — Tailscale Funnel (no extra account) or Cloudflare Tunnel (free account)
  • Standard adapter pattern — same as telegram.py, discord.py, ready for upstream PR
  • Cost effective — works with free local models via Ollama, zero API costs if you want

Setup guide: VM / cloud server

If you run Hermes on a VM or cloud server (Google Cloud, AWS, DigitalOcean, etc.), you need a tunnel so your R1 can reach it from the internet.

1. Install dependencies

pip install websockets qrcode

2. Test the protocol first (no Hermes needed)

# Terminal 1: Start a tunnel
tailscale funnel --bg 18789
# OR: cloudflared tunnel --url http://localhost:18789

# Terminal 2: Run the test server
RABBIT_R1_HOST=yourhost.ts.net \
RABBIT_R1_PUBLIC_PORT=443 \
RABBIT_R1_PROTO=wss \
python test_server.py

Scan the QR code with your R1. It should echo back your messages.

3. Wire into Hermes

cp gateway/platforms/rabbit_r1.py /path/to/hermes-agent/gateway/platforms/

Then apply the integration changes listed in docs/platforms/rabbit_r1.md.

4. Configure

Add to your Hermes .env file:

RABBIT_R1_TOKEN=$(openssl rand -hex 32)
RABBIT_R1_TUNNEL=tailscale    # or cloudflare, or none
RABBIT_R1_PUBLIC_URL=wss://yourhost.ts.net  # if tunnel auto-detect fails

5. Start

# Make sure the tunnel is running
tailscale funnel --bg 18789

# Restart Hermes
hermes gateway restart

The QR code will be saved as a PNG at ~/.hermes/rabbit_r1_qr.png. Open it on any device and scan with your R1.

Setup guide: local machine (home server, Raspberry Pi, etc.)

If you run Hermes on a machine on your home network, the R1 can connect directly over WiFi without any tunnel.

1. Install dependencies

pip install websockets qrcode

2. Configure

export RABBIT_R1_TUNNEL=none    # no tunnel needed on local network
export RABBIT_R1_PORT=18789
# RABBIT_R1_TOKEN auto-generates if not set

3. Start Hermes

The adapter will detect your LAN IP and generate a QR code. Scan it with your R1 while on the same WiFi network.

Want it to work from outside your home too? Add a tunnel:

# One-time setup
sudo tailscale set --operator=$USER
tailscale funnel --bg 18789

# Then set in .env:
RABBIT_R1_TUNNEL=tailscale

Now your R1 works from anywhere, not just home.

Getting the QR code

The QR code can be accessed in multiple ways:

Method How
PNG file (recommended) Saved automatically at ~/.hermes/rabbit_r1_qr.png
Terminal Printed in the gateway logs on startup
Generate on any device Run the Python snippet below with your token

Generate a QR code on any machine with Python:

pip install qrcode
python3 -c "
import qrcode
qr = qrcode.QRCode(border=1)
qr.add_data('{\"type\":\"clawdbot-gateway\",\"version\":1,\"ips\":[\"YOUR_HOST\"],\"port\":443,\"token\":\"YOUR_TOKEN\",\"protocol\":\"wss\"}')
qr.make(fit=True)
qr.print_ascii(invert=True)
"

Replace YOUR_HOST and YOUR_TOKEN with your actual values from the gateway logs.

Tunnel options

Option Extra account? Stability Setup
Tailscale Funnel (recommended) No Stable URL, survives reboots tailscale funnel --bg 18789
Cloudflare Tunnel Free account Stable URL Install cloudflared
none N/A LAN only (same network) Nothing

Both tunnels have been tested and confirmed working on real R1 hardware.

Keeping the tunnel running (important)

The tunnel must stay running for your R1 to connect. Use --bg to run it as a persistent background process that survives terminal closes and reboots:

# One-time setup (Tailscale)
sudo tailscale set --operator=$USER
tailscale funnel --bg 18789

This saves the funnel config — it will automatically restart when Tailscale restarts (including after reboots).

To verify the tunnel is running:

tailscale funnel status

If you want extra reliability, you can create a systemd service that monitors and restarts the tunnel:

# Create the service file
cat > ~/.config/systemd/user/tailscale-funnel.service << 'EOF'
[Unit]
Description=Tailscale Funnel for Rabbit R1
After=network-online.target

[Service]
ExecStart=/usr/bin/tailscale funnel 18789
Restart=always
RestartSec=10

[Install]
WantedBy=default.target
EOF

# Enable and start
systemctl --user daemon-reload
systemctl --user enable tailscale-funnel
systemctl --user start tailscale-funnel

For Cloudflare Tunnel, a similar systemd service is recommended since cloudflared runs as a foreground process. See the Cloudflare docs on running as a service.

Security

  • TLS encryption via the tunnel (wss://) — all traffic encrypted end-to-end
  • Random 32-char hex token — required for every connection
  • Device ID validation — only your specific R1 is accepted
  • Token rotates each session (new QR code = new token)
  • No ports raw-exposed to the internet

Shared memory with other platforms

Because this is a standard Hermes platform adapter, it shares the same Hermes brain as your Telegram, Discord, and other platforms:

  • Tell Hermes something on Telegram -> your R1 already knows it
  • Set a cron job on your R1 -> can deliver to Telegram
  • Same skills and tools available everywhere
  • Run Telegram and R1 simultaneously — use whichever device is in your hand

PR to NousResearch/hermes-agent

This is developed here first (tested on real R1 hardware), then submitted as a PR to the main hermes-agent repo. See docs/platforms/rabbit_r1.md for the full list of 16 integration points.

Project structure

gateway/platforms/rabbit_r1.py   -- main adapter (~600 lines)
test_server.py                   -- standalone test server (no Hermes needed)
tests/gateway/test_rabbit_r1.py  -- unit tests
docs/platforms/rabbit_r1.md      -- integration guide for the PR

About

Native Rabbit R1 platform adapter for Hermes AI — talk to Hermes from your R1 from anywhere

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages