Signal
Connect a Signal number through a signal-cli daemon: register or link the number, keep the daemon on loopback, and approve people by phone number.
On this page
Habakkuk talks to signal-cli running as a daemon in HTTP mode. signal-cli keeps the account's keys; Habakkuk never sees them.
Set it up#
Give the bot its own number. Then either register it:
signal-cli -a +15551234567 register # add --captcha ... if Signal asks for one
signal-cli -a +15551234567 verify 123-456 # the code from the SMSor link signal-cli to an existing phone as a secondary device: signal-cli link -n habakkuk prints a sgnl:// URI. Turn it into a QR code and scan it under Settings > Linked devices.
Keep the daemon running, for example under systemd:
signal-cli -a +15551234567 daemon --http 127.0.0.1:8080Warning
Keep the daemon on loopback. It has no authentication: anything that can reach the port can send as your number.
Then configure the channel:
channels:
signal:
type: signal
account: "+15551234567" # the bot's number, registered or linked in signal-cli
api_url: http://127.0.0.1:8080 # the defaulthabakkuk doctor checks that the daemon answers.
Access#
Add people to allow_from by number ("+15557654321"), or approve them with habakkuk pair.
Groups#
In groups the bot answers mentions, replies, and messages that start with the agent's name.
What works#
- Text and attachments in and out (up to 100 MB).
- Typing indicator.
- Approvals are answered with yes or no.
Troubleshooting#
| Symptom | Cause and fix |
|---|---|
signal-cli daemon not reachable at http://127.0.0.1:8080 |
Start the daemon with --http, or set api_url to where it listens. |
signal needs account, the bot's number in international format |
Set account with the leading +. |
| Messages arrive in the phone but not in Habakkuk | A linked signal-cli only receives while the daemon runs. Check it under your service manager. |