{"kind":"doc","doc":{"title":"OpenClaw and the Rabbit R1","section":{"slug":"posts","name":"Posts"},"rkey":"1774911232779-openclaw-and-the-rabbit-r1","cid":"bafkreifszwgq4woq7hd6hxuotg42hmo2keq27h3vufig52woxgllaooobq","renderKey":"bafkreifszwgq4woq7hd6hxuotg42hmo2keq27h3vufig52woxgllaooobq@2026-03-30T15:53:00Z@2026-08-25T00:42:26Z@Posts|","href":"/posts/1774911232779-openclaw-and-the-rabbit-r1","publishedAt":"2026-03-30T15:53:00Z","updatedAt":"2026-08-25T00:42:26Z","tags":["ai","pinata","openclaw","rabbit-r1","agents","hardware"],"description":"I got my Rabbit R1 talking to my Pinata-hosted agent. The agent did most of the work.","readingMinutes":2,"markdown":"I've been at Pinata for almost a year. [OpenClaw](https://openclaw.org) is the agent stack I've been working on there. I wanted my [Rabbit R1](https://www.rabbit.tech/) talking to the one I host on Pinata.\n\nThe R1 is a bright orange Teenage Engineering thing with a scroll wheel that does nothing useful. You push the button, talk to your agent, and get a response through the speaker.\n\n## The auth mismatch\n\nPinata's platform requires HTTP auth on every request, including WebSocket upgrades. The R1 sends its token inside the WebSocket connect frame, after the HTTP handshake completes, so Pinata's ingress rejects the upgrade before the OpenClaw gateway ever sees it.\n\nI tried hacking the QR payload with tokens as query params and full URLs in the `ips` field. The R1 firmware mangles all of it: strips protocols, garbles ports, discards query strings.\n\n## The fix\n\nI worked through this with my agent over a few sessions and broke the gateway config twice along the way. Third attempt I started a fresh session with notes from the failures and one rule: don't touch your own gateway.\n\nThe agent used Pinata's port forwarding to expose a WebSocket proxy on an unauthenticated endpoint that forwards to the gateway over localhost, where the gateway validates the token from the connect frame like normal. It wrote the proxy, started it, registered a custom domain via the Pinata API, generated the QR code, and sent me the image over Telegram. I scanned it from the R1 and it paired.\n\nMy contribution to the fix was scanning a QR code.\n\n## What it's like\n\nHold the button, ask a question, get an answer out loud. The agent has memory and pulls context from earlier conversations: my calendar, my notes, whatever we talked about yesterday.\n\nIt wrote the technical sections of the [full writeup on the Pinata blog](https://pinata.cloud/blog/connecting-a-rabbit-r1-to-a-pinata-openclaw-agent/) from its own logs. That post has all the code if you want to set this up yourself.\n\n---\n","media":{},"series":{},"related":[{"title":"Replacing a Rabbit's Brain: Connecting the R1 to Hermes","href":"/posts/1775069974473-replacing-rabbit-s-brain-connecting-a-rabbit-r1-to-hermes","section":"posts","description":"I replaced the OpenClaw agent on my R1 with Hermes, running locally on a MacBook Pro.","publishedAt":"2026-04-01T11:59:00Z"},{"title":"Obsidian Plugins","href":"/experiments/1789490903000-obsidian-plugins","section":"experiments","description":"An overview of three Obsidian plugins the author built: an image uploader that sends embedded images to Pinata and rewrites references as ipfs:// URIs, plus AI-powered generators for note excerpts and tags.","publishedAt":"2026-09-20T05:10:12Z"},{"title":"Koios: Memory, Feedback, and Containment","href":"/posts/1768671170751-koios-memory-feedback-and-containment","section":"posts","description":"Autonomous agent with persistent memory inspired by classical theory of mind","publishedAt":"2026-01-17T09:32:00Z"},{"title":"Intern","href":"/experiments/1789407081000-intern","section":"experiments","description":"Bootstrap for the Autonomous Intern, an agentic Raspberry Pi project running Hermes with Caddy, Tailscale, and a HAL-driven LED ring, plus optional Rabbit R1 support and a single idempotent setup script.","publishedAt":"2026-09-20T05:08:59Z"},{"title":"Now Playing","href":"/posts/1784736733544-now-playing","section":"posts","description":"Putting my Apple Music \"Now Playing\" on display with a Raspberry Pi and a 64x64 LED matrix.","publishedAt":"2026-07-25T17:18:48Z"},{"title":"Intern","href":"/posts/1781835006151-intern","section":"posts","description":"The Autonomous Intern ships as a Raspberry Pi 5 in a desk-toy case running a stack I didn't pick. I flashed it to Debian Trixie, swapped the whole thing for the Hermes agent with its own built-in memory, and folded it all into one setup script.","publishedAt":"2026-06-19T02:10:06Z"}],"prev":{"title":"Koios: Memory, Feedback, and Containment","href":"/posts/1768671170751-koios-memory-feedback-and-containment"},"next":{"title":"Replacing a Rabbit's Brain: Connecting the R1 to Hermes","href":"/posts/1775069974473-replacing-rabbit-s-brain-connecting-a-rabbit-r1-to-hermes"}}}