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.
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.