Signal's E2E encryption pairs well with NanoClaw's container isolation. Voice transcription runs locally too, so nothing leaves the machine unless intended.
What's supported:
Typing indicators, reactions, quoted replies, polls
Signal text styling (bold, italic, strikethrough, spoiler, monospace) with UTF-16 offset handling
Image/audio/file attachments (send and receive)
Voice message transcription (local, via Whisper)
Group metadata (members, admins, description)
All existing NanoClaw features (scheduled tasks, per-group isolation, etc.)
How it works: signal-cli runs in JSON-RPC mode. Newline-delimited JSON from stdout gets parsed, messages route to the right group queue, a container spawns, and responses go back via stdin RPC calls. The Signal channel is ~800 lines.Setup: run /add-signal in Claude Code, or set SIGNAL_ONLY=true to drop WhatsApp. Needs Java 21+ and signal-cli, no npm dependencies.
Upstream skill PR: https://github.com/qwibitai/nanoclaw/pull/490