3.4 KiB
3.4 KiB
summary, read_when
| summary | read_when | ||
|---|---|---|---|
| Signal support via signal-cli (JSON-RPC + SSE), setup, and number model |
|
Signal (signal-cli)
Updated: 2026-01-06
Status: external CLI integration. Gateway talks to signal-cli over HTTP JSON-RPC + SSE.
What it is
- Signal provider via
signal-cli(not embedded libsignal). - Deterministic routing: replies always go back to Signal.
- DMs share the agent's main session; groups are isolated (
signal:group:<groupId>).
The number model (important)
- The gateway connects to a Signal device (the
signal-cliaccount). - If you run the bot on your personal Signal account, it will ignore your own messages (loop protection).
- For "I text the bot and it replies," use a separate bot number.
Setup (fast path)
- Install
signal-cli(Java required). - Link a bot account:
signal-cli link -n "Clawdbot"then scan the QR in Signal.
- Configure Signal and start the gateway.
Example:
{
signal: {
enabled: true,
account: "+15551234567",
cliPath: "signal-cli",
dmPolicy: "pairing",
allowFrom: ["+15557654321"]
}
}
Access control (DMs + groups)
DMs:
- Default:
signal.dmPolicy = "pairing". - Unknown senders receive a pairing code; messages are ignored until approved.
- Approve via:
clawdbot pairing list --provider signalclawdbot pairing approve --provider signal <CODE>
- Pairing is the default token exchange for Signal DMs. Details: Pairing
Groups:
signal.groupPolicy = open | allowlist | disabled.signal.groupAllowFromcontrols who can trigger in groups whenallowlistis set.
How it works (behavior)
signal-cliruns as a daemon; the gateway reads events via SSE.- Inbound messages are normalized into the shared provider envelope.
- Replies always route back to the same number or group.
Media + limits
- Attachments supported (base64 fetched from
signal-cli). - Default cap:
signal.mediaMaxMb. - Use
signal.ignoreAttachmentsto skip downloading media.
Delivery targets (CLI/cron)
- DMs:
signal:+15551234567(or plain E.164). - Groups:
signal:group:<groupId>. - Usernames:
username:<name>(if supported by your Signal account).
Configuration reference (Signal)
Full configuration: Configuration
Provider options:
signal.enabled: enable/disable provider startup.signal.account: E.164 for the bot account.signal.cliPath: path tosignal-cli.signal.httpUrl: full daemon URL (overrides host/port).signal.httpHost,signal.httpPort: daemon bind (default 127.0.0.1:8080).signal.autoStart: auto-spawn daemon (default true ifhttpUrlunset).signal.receiveMode:on-start | manual.signal.ignoreAttachments: skip attachment downloads.signal.ignoreStories: ignore stories from the daemon.signal.sendReadReceipts: forward read receipts.signal.dmPolicy:pairing | allowlist | open | disabled(default: pairing).signal.allowFrom: DM allowlist (E.164).openrequires"*".signal.groupPolicy:open | allowlist | disabled(default: open).signal.groupAllowFrom: group sender allowlist.signal.textChunkLimit: outbound chunk size (chars).signal.mediaMaxMb: inbound/outbound media cap (MB).
Related global options:
routing.groupChat.mentionPatterns(Signal does not support native mentions).messages.responsePrefix.