Prerequisites
- A dedicated phone number for the bot (cannot be your personal Signal number)
- signal-cli installed on your system
- Java Runtime Environment (JRE) 17 or newer
Quick Start
The interactive onboarding can guide you through Signal setup:Installing signal-cli
macOS (Homebrew)
Ubuntu/Debian
From Binary
- Download the latest release from signal-cli releases
- Extract:
tar xf signal-cli-*.tar.gz - Add to PATH or use full path in config
Verify Installation
signal-cli 0.11.12
Registering a Signal Number
Register your number
Replace You’ll receive an SMS with a verification code.
+15555550123 with your bot’s phone number (E.164 format):Linking as a Secondary Device (Alternative)
If you prefer to link signal-cli as a secondary device:- Open Signal → Settings → Linked Devices
- Tap ”+” to add a device
- Scan the QR code
Configuration
Basic Setup
Configure Signal inopenclaw.config.json:
| Key | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable Signal channel |
account | string | - | Bot’s phone number in E.164 format (e.g., +15555550123) |
cliPath | string | "signal-cli" | Path to signal-cli binary |
dmPolicy | string | "pairing" | DM access policy: pairing, allowlist, open, disabled |
allowFrom | string[] | [] | Allowed sender identifiers (phone numbers or UUIDs) |
DM Policies
pairing(recommended): Unknown senders get a pairing code; approve withopenclaw pairing approve signal <identifier>allowlist: Only senders inallowFromcan messageopen: Anyone can message (setallowFrom: ["*"])disabled: Ignore all Signal DMs
AllowFrom Formats
Signal supports two identifier formats: Phone numbers (E.164 format):Group Configuration
Signal groups work automatically once configured. To restrict access or settings per group:Media Handling
Signal supports:- Images (JPEG, PNG, GIF)
- Videos (MP4)
- Audio files
- Voice messages
- Documents
Reactions
Signal supports emoji reactions:Multi-Account Support
You can configure multiple Signal accounts:Troubleshooting
signal-cli not found
signal-cli not found
Ensure signal-cli is installed and in your PATH:If not found, either:
- Add signal-cli to your PATH
- Specify the full path in config:
Registration failed
Registration failed
Common issues:
- Number already registered: Cannot use a number already registered to Signal
- Invalid number format: Must be E.164 format (e.g.,
+15555550123) - SMS not received: Check phone number is correct and can receive SMS
- Rate limited: Wait 24 hours before retrying
Verification code invalid
Verification code invalid
- Ensure you’re using the exact code from SMS (including dashes if present)
- Code expires after 10 minutes - request a new one if expired
- Don’t add extra spaces or characters
Messages not being received
Messages not being received
Check status with probe:Common issues:
- signal-cli daemon not running
- Sender not in
allowFrom(if using allowlist policy) - Check logs:
openclaw logs --follow | grep signal
Cannot send messages
Cannot send messages
Ensure recipient is registered with Signal:If not registered, you’ll see an error. They must install Signal first.
Groups not working
Groups not working
Ensure:Join a group (if you have an invite link):
- Bot is a member of the group
- Group ID is correctly configured
- Group policy allows messages
Linked device disconnected
Linked device disconnected
If you linked as a secondary device and it disconnects:
- Unlink old device in Signal app
- Run
signal-cli link -n "OpenClaw"again - Scan new QR code
Running signal-cli Daemon
For production use, run signal-cli as a daemon:Security Considerations
- End-to-end encryption is maintained through signal-cli
- Registration credentials are stored in
~/.local/share/signal-cli/data/by default - Backup credentials regularly - you cannot recover them if lost
- Use a dedicated number - don’t share with other services
- Use allowlist mode for production bots with known users
Advanced Configuration
Custom Data Directory
Daemon Socket Path
Next Steps
iMessage Setup
Set up iMessage on macOS
Pairing Guide
Learn about pairing codes and approvals
Configuration Reference
Full configuration options
Multi-Channel
Using multiple channels together

