Minimal headless node client for Raspberry Pi / Linux. Connects to the gateway bridge, handles pairing, streams voice.transcript events (stdin/FIFO), subscribes to chat, and can speak responses via local TTS.
Requires Go 1.26 or newer. The preferred toolchain in go.mod is Go 1.27.0, which Go downloads automatically when toolchain switching is enabled; CI uses the same version.
cd clawgo
go build ./cmd/clawgoCross-compile for Pi:
GOOS=linux GOARCH=arm64 go build -o /tmp/clawgo-linux-arm64 ./cmd/clawgo| Flag | Description |
|---|---|
-session-key |
Session for outgoing voice.transcript events (default main). |
-chat-session-key |
Session to subscribe for chat replies (default mirrors -session-key). |
-chat-subscribe |
Enable chat stream+TTS (default true). |
-tts-engine |
system, piper, elevenlabs, or none (system = espeak-ng). |
-tts-system-voice |
espeak voice id (default en-us). |
-tts-system-rate |
Speech rate (wpm). |
-mdns-service |
Bonjour service type (default _clawdbot-node._tcp). |
-stdin |
Read transcripts from stdin (pipe/FIFO). |
-stdin-file |
Read transcripts from a FIFO/file instead of stdin. |
-agent-request |
Send transcripts as agent.request (uses agent + deliver). |
-deliver |
Deliver agent responses to a provider (requires channel + to). |
-deliver-channel |
Delivery provider (telegram/whatsapp/signal/imessage). |
-deliver-to |
Delivery destination id. |
-quick-actions |
Enable built-in quick actions (default true). |
-ping-message |
Message used for telegram ping quick action. |
-router |
Routing plugin name (default default). |
./clawgo pair \
-bridge 100.88.46.29:18790 \
-display-name "Razor Pi"Approve via clawdbot nodes approve <requestId>.
mkfifo /tmp/voice.fifo
# in one terminal
tail -f /tmp/voice.fifo | ./clawgo run \
-bridge 100.88.46.29:18790 \
-stdin \
-chat-subscribe \
-tts-engine system
# elsewhere
printf hey computer turn on the lights
> /tmp/voice.fifoEach line on the FIFO becomes a voice.transcript; chat responses from the main session are spoken via espeak-ng.
Minimal steps:
- Install the binary as
/home/pi/clawgo. - Create a wrapper script that keeps a FIFO (
/home/pi/.cache/clawdbot/voice.fifo) open and pipes it intoclawgo run -stdin. - Create
/etc/systemd/system/clawgo.servicepointing to that wrapper.
The node advertises _clawdbot-node._tcp by default.
dns-sd -B _clawdbot-node._tcp local.Override to _clawdbot-bridge._tcp if you intentionally want it to show up as a gateway beacon:
./clawgo run -mdns-service _clawdbot-bridge._tcp- Node state (
nodeId+ token) lives in~/.clawdbot/clawgo.json. - Caps default to
voiceWake; override via-capsif you expose more commands. - Set
bridge.bind: "tailnet"on the gateway to restrict the bridge to Tailscale.
