Engineering
Wire Grok Bot → self-hosted OpenBot: Tailscale Serve + POST/poll bridge
Local-first agents stay on your metal; you still want Grok Bot as the front door.
What hurt
@O_Piekielniak wired self-hosted OpenBot (Docker on LXC, Tailscale on the CT) to Grok Bot via one dedicated bridge agent. Flow: read short-lived auth key from host (never paste into chat) → POST /v1/agents/{bridgeId}/messages with text + unique clientMessageId → 202 deliveryId → poll GET …/deliveries/{id} until completed → answer in answer. Skipped reverse SSH on purpose. Tip only. Not affiliated with xAI.
What to install or create
OpenBot + Tailscale Serve → one bridge agent → Grok Bot POST then poll deliveries.
Bots
OpenBot bridge caller
POSTs to OpenBot bridge agent over Tailscale Serve, then polls delivery until answer.
Plugins
None on day one. Follow the first-run steps.
Routines
None on the first run. Watch one manual pass first.
The prompt
This is a tip, not a pasteable system prompt. The author did not publish one. Follow the first-run steps.
First run
- 1Read https://x.com/O_Piekielniak/status/2115606746324729871 (credit @O_Piekielniak).
- 2Run OpenBot self-hosted; put Tailscale on the host/CT and expose via Tailscale Serve.
- 3Create one bridge agent that only handles cross-system messages.
- 4From Grok Bot: POST /v1/agents/{bridgeId}/messages with JSON text + unique clientMessageId using a short-lived host key (400 without id, 401 without key).
- 5Poll GET /v1/agents/{bridgeId}/deliveries/{deliveryId} until completed; read answer. No reverse SSH required.
Approval fence
Auth keys stay on the OpenBot host; rotate on restart; never commit or chat-paste them.
What to tweak
Steal POST + clientMessageId + poll loop; keep secrets on the host.
Source
ozz1ee @O_Piekielniak · Original post
Not affiliated with xAI. We did not write this prompt. Third-party template terms still apply.
Pro pack
Want the full setup, not just the idea?
Pro packs give you the job text, prompts, schedules and pitfalls for popular use-cases.