Signal
Signal integration uses the signal-cli REST API as a bridge between KinBot and the Signal protocol.
Prerequisites
Section titled “Prerequisites”You need a running instance of signal-cli-rest-api with a registered phone number. This acts as the Signal “bot” identity.
- Deploy signal-cli-rest-api (Docker recommended):
Terminal window docker run -d --name signal-cli \-p 8080:8080 \-v signal-cli:/home/.local/share/signal-cli \bbernhard/signal-cli-rest-api - Register a phone number with signal-cli (see signal-cli docs)
- In KinBot, add a Signal channel:
- API URL: The URL of your signal-cli REST API instance (e.g.,
http://localhost:8080) - Phone Number: The registered phone number in E.164 format (e.g.,
+1234567890)
- API URL: The URL of your signal-cli REST API instance (e.g.,
- Optionally, restrict to specific group IDs or phone numbers with the allowlist
Configuration
Section titled “Configuration”| Field | Required | Description |
|---|---|---|
| API URL | ✅ | signal-cli REST API base URL (stored encrypted) |
| Phone Number | ✅ | Registered Signal number (E.164 format) |
| Allowed Chat IDs | ❌ | Restrict to specific groups or numbers |
How It Works
Section titled “How It Works”- Inbound: KinBot receives messages via signal-cli’s webhook/polling mechanism. The adapter extracts text, attachments, and sender info, routing them to the Kin.
- Outbound: Messages are sent via the signal-cli REST API. Long messages (>2,000 chars) are split. Attachments are uploaded as base64.
Features
Section titled “Features”- Text messages
- Image, document, audio, and video attachments
- Group and direct message support
- Automatic message chunking
Requirements
Section titled “Requirements”- A running signal-cli REST API instance
- A registered Signal phone number
- Network connectivity between KinBot and signal-cli