OpenClaw Signal Setup Guide: Connect in 5 Steps
OpenClaw was previously known as Clawdbot and Moltbot. This guide applies to all versions.
Connect OpenClaw to Signal in 5 steps. Install signal-cli, register a phone number, configure OpenClaw, pair your account, and start chatting.
Key takeaways
Install signal-cli on your server. Register a dedicated phone number with Signal. Tell your OpenClaw agent (previously known as Clawdbot and Moltbot) to use it. Message the bot from your personal Signal, approve the pairing code, and you are chatting with your AI over end-to-end encryption.
Always review commands your agent suggests before approving them. Don't paste prompts from sources you don't trust.
Fixes when it breaks. Workflows when it doesn't.
OpenClaw guides, configs, and troubleshooting notes. Every two weeks.
Introduction
I run OpenClaw on three channels. Telegram for quick tasks. Discord for my dev server. Signal for anything I want fully private.
Signal is the most privacy-focused channel OpenClaw supports. Every message is end-to-end encrypted per the Signal Protocol. Signal does not log message content on its servers. There is no ads business model, no tracking, no data sales. The setup is more involved than Telegram. Signal does not have a public bot API, so you need signal-cli running on the same server as your OpenClaw gateway. That adds a dependency. But once it runs, it is rock solid.
If you have not set up OpenClaw yet, start with How I Finally Got OpenClaw Running 24/7: $6/Month on DigitalOcean. Come back when your gateway is running.
What You Will Need
Before starting:
- OpenClaw installed and gateway running - See How I Finally Got OpenClaw Running 24/7: $6/Month on DigitalOcean if you need a server.
- A dedicated phone number - This number becomes your bot's Signal identity. VoIP numbers work in most regions. A cheap prepaid SIM works too.
- Java 17 or later on your server - signal-cli requires it.
- About 15 minutes - More than Telegram, but worth it for the privacy.
Signal requires a real phone number for account registration. You cannot share a number between your personal Signal and the bot. They need to be separate accounts.
Step 1: Install signal-cli
signal-cli is an open-source command-line interface for Signal. It handles the Signal Protocol cryptography and connects to Signal's servers. Check your Java version first:
java --versionYou need Java 17 or later. If you are on Ubuntu 22.04 or newer, the default OpenJDK works.
Download the latest release (check github.com/AsamK/signal-cli/releases for the current version number):
VERSION="0.13.4"
wget "https://github.com/AsamK/signal-cli/releases/download/v${VERSION}/signal-cli-${VERSION}-Linux-x86_64.tar.gz"
tar xf "signal-cli-${VERSION}-Linux-x86_64.tar.gz"
sudo mv "signal-cli-${VERSION}" /opt/signal-cli
sudo ln -s /opt/signal-cli/bin/signal-cli /usr/local/bin/signal-cliVerify the install:
signal-cli --versionYou should see signal-cli 0.13.4 or your installed version.
Alternative: Install via package manager (Arch Linux, NixOS)
On Arch Linux:
yay -S signal-cliOn NixOS:
environment.systemPackages = with pkgs; [ signal-cli ];On other distributions, the manual download above is the most reliable method.
Step 2: Register a Phone Number
You need to register your dedicated phone number with Signal via signal-cli. This is a two-step process: request an SMS verification code, then confirm it. Request the SMS code:
signal-cli -a +1XXXXXXXXXX registerReplace +1XXXXXXXXXX with your phone number in international format. Signal sends an SMS with a 6-digit verification code.
Verify with the code:
signal-cli -a +1XXXXXXXXXX verify 123456Replace 123456 with the code from the SMS.
If that works, your number is registered. Signal-cli stores account credentials in ~/.local/share/signal-cli/data/.
No SMS? Try voice verification
If you do not receive the SMS within a minute, use voice verification:
signal-cli -a +1XXXXXXXXXX register --voiceSignal calls your number and reads a 6-digit code aloud. Works well with VoIP numbers that support incoming calls.
If the call does not come through either, check that your VoIP provider allows inbound calls from US numbers. Some budget providers block international calls by default.
After verification succeeds, run the same verify command:
signal-cli -a +1XXXXXXXXXX verify 123456Running signal-cli as a daemon
For OpenClaw to connect to signal-cli, you should run it as a daemon. OpenClaw supports two daemon modes: D-Bus and JSON-RPC. JSON-RPC is simpler to set up without D-Bus dependencies.
Create a systemd service:
sudo nano /etc/systemd/system/signal-cli.servicePaste this:
[Unit]
Description=Signal CLI Daemon
After=network.target
[Service]
User=molty
ExecStart=/usr/local/bin/signal-cli -a +1XXXXXXXXXX daemon --socket /tmp/signal-cli.sock
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetEnable and start it:
sudo systemctl daemon-reload
sudo systemctl enable signal-cli
sudo systemctl start signal-cliStep 3: Configure OpenClaw
With signal-cli running, tell OpenClaw to connect to it. The simplest approach: tell your agent through whatever channel is already working (terminal, Telegram, Discord):
"Set up Signal with account ID +1XXXXXXXXXX using signal-cli daemon at /tmp/signal-cli.sock"
Your agent will:
- Add the Signal config to your OpenClaw config
- Restart the gateway
- Confirm when Signal is ready
Alternative: Config file
Edit openclaw.json directly:
{
"channels": {
"signal": {
"enabled": true,
"accountId": "+1XXXXXXXXXX",
"daemon": {
"mode": "unix-socket",
"socketPath": "/tmp/signal-cli.sock"
}
}
}
}Restart the gateway after editing:
openclaw gateway restartLook for Signal channel started in the logs to confirm:
openclaw logs --followStep 4: Pair Your Personal Signal Account
OpenClaw uses pairing to control who can message your bot. Without pairing, anyone who learns your bot number could chat with your AI.
- Open Signal on your phone
- Start a new chat with your bot's phone number
- Send any message, such as "hello"
The bot replies with a pairing code:
Your pairing code is: XYZ789 Reply to approve, or run: openclaw pairing approve signal XYZ789
Approve it by telling your agent: "Approve Signal pairing code XYZ789"
Or use the CLI directly:
openclaw pairing approve signal XYZ789Once approved, you're paired.
Why pairing exists
Signal numbers are public. Anyone with your bot's number can message it. Pairing ensures only approved users get AI access. Per the OpenClaw pairing docs, codes expire after 1 hour if not approved.
You can pre-approve users by adding their Signal number to channels.signal.allowFrom in config. But walking through the pairing flow is easier for most setups.
Step 5: Send Your First Message
With pairing approved, message your bot:
"What can you help me with?"
Your OpenClaw agent responds through Signal. Your agent can access your full context just like on any other channel. The conversation is end-to-end encrypted. Every exchange goes through the Signal Protocol before it reaches the server.
I sent my first message asking for a summary of my open GitHub issues. Got a reply in seconds. The response was in my pocket, on my phone, fully private.
That is the full setup. Your AI is now available anywhere Signal is.
Troubleshooting
signal-cli registration fails
In my experience, the issue comes down to phone number format. Signal requires E.164 format: + followed by country code and number, no spaces or dashes.
- Correct:
+14155552671 - Wrong:
415-555-2671,1 (415) 555-2671
VoIP numbers: Most work, but some providers block SMS from Signal. If registration fails, try a different VoIP provider or use voice verification.
Gateway not picking up Signal messages
Check that signal-cli is actually running:
systemctl status signal-cliIf it stopped, check the logs:
journalctl -u signal-cli -n 50Then check OpenClaw logs:
openclaw logs --followLook for Signal channel started. If you see an error connecting to the socket, verify the socket path in your config matches the path in your systemd service.
Bot responds slowly or not at all
Signal-cli can have high CPU usage on first startup while it syncs. Give it a minute. If it stays unresponsive, restart the service:
sudo systemctl restart signal-cli
openclaw gateway restartPairing code never appears
The bot number needs to be registered and signal-cli must be running. If you message the bot and get no reply at all:
- Check
signal-clidaemon is running - Check OpenClaw logs for
Signal channel started - Verify your config has the correct socket path
For troubleshooting patterns common across all OpenClaw channels, see Fix OpenClaw Telegram Errors: 401, Silent Bots, and Pairing Issues. The gateway and pairing troubleshooting steps apply to Signal as well.
FAQ
Q: Can I use my personal Signal number for the bot?
No. Each Signal number is one account. You cannot share it between personal use and the bot.
Get a dedicated number for OpenClaw. A cheap prepaid SIM works. Google Voice works in the US. Twilio numbers work in many regions. The bot number can be a phone you never use for anything else. Keep it registered and paid up so signal-cli stays connected.
Q: Do VoIP numbers work for Signal registration?
In my experience, most do. Google Voice numbers work. Twilio numbers work. Some budget VoIP providers have issues with SMS delivery from Signal. If registration fails with one VoIP number, try another provider or use voice verification.
Q: Is this more private than Telegram?
Yes, for message content. Signal uses the Signal Protocol, which provides end-to-end encryption and forward secrecy. Telegram's default chats are not end-to-end encrypted. For an AI assistant handling sensitive information, Signal is the better choice.
Q: Can I run Signal and Telegram simultaneously on the same OpenClaw instance?
Yes. OpenClaw runs multiple channels at the same time. Configure both in your config and both run without conflict. See OpenClaw Telegram Setup in 5 Minutes if you want to add Telegram too.
Each channel gets its own isolated session. A message on Signal does not affect your Telegram context. They run as separate conversations.
Q: What happens if signal-cli crashes?
OpenClaw loses the Signal connection until signal-cli restarts. The systemd service with Restart=on-failure handles this automatically. Message senders get a temporary failure response from the Signal client side.
Q: Does this work with Signal groups?
OpenClaw Signal supports group messaging. Configure the group policy in channels.signal.groupPolicy. By default, the bot only responds to direct messages. Once you have Signal running, try connecting your OpenClaw Second Brain for memory-powered conversations from any channel.
Sources
- OpenClaw Signal Documentation - Official channel docs
- signal-cli GitHub Repository - Installation and daemon setup
- Signal Protocol Documentation - Signal encryption specifications
- OpenClaw Configuration Reference - Config fields
Conclusion
You now have Signal connected to your OpenClaw agent.
- Installed signal-cli with Java
- Registered a dedicated phone number
- Configured OpenClaw with the socket path
- Paired your personal Signal account
- Started chatting over end-to-end encryption
OpenClaw on Signal gives you a fully private AI assistant. No Telegram metadata. No Discord logs. Just encrypted messages between you and your agent.
If you want to compare channels, the OpenClaw Telegram Setup in 5 Minutes guide covers the simpler path. Or use both. Each channel gets isolated context, so they don't interfere.
Ready to level up? Set up the OpenClaw Second Brain on EmergentWeirdness to give your agent persistent memory across all your channels.
Changelog
- 2026-02-17: Initial publication.
- 2026-02-25: Added changelog.
Fixes when it breaks. Workflows when it doesn't.
OpenClaw guides, configs, and troubleshooting notes. Every two weeks.



