Note: This has only been tested on Windows. If you're on macOS or Linux, testing and PRs with fixes are very welcome.
Talk to Claude Code from your phone via Signal. Send a Note to Self message, and it arrives in your Claude Code session. Claude can reply back.
signal-cli links as a secondary device on your Signal number. When you send a Note to Self, the message syncs to signal-cli, which forwards it to Claude Code as a channel event. Claude's replies come back through Signal.
- Java 25+ — Adoptium /
brew install openjdk/apt install openjdk-25-jre-headless - Node.js 21+
- Signal on your phone
git clone <repo-url>
cd signal-channel
npm install
npm run setupThe setup script will:
- Check for Java 25+
- Download and install signal-cli (if not already installed)
- Open a QR code in your browser — scan it with Signal to link your device
- Add the MCP server config to
~/.claude.json - Install slash commands globally
Then start Claude Code with the channel:
claude --dangerously-load-development-channels server:signalSend a Note to Self on Signal. Claude sees it and replies.
After setup, these are available in any Claude Code session:
| Command | Description |
|---|---|
/signal:send <message> |
Send a message to your phone via Signal |
/signal:access |
View and manage the sender allowlist |
/signal:access pair <code> |
Approve a sender's pairing code |
/signal:access policy allowlist |
Lock down to approved senders only |
/signal:uninstall |
Remove everything cleanly |
Environment variables (set in the env block of your MCP config in ~/.claude.json):
| Variable | Description | Default |
|---|---|---|
SIGNAL_ACCOUNT |
Your phone number (required) | — |
SIGNAL_CLI_PATH |
Path to signal-cli binary | signal-cli (on PATH) |
SIGNAL_DAEMON_PORT |
TCP port for signal-cli daemon | 7583 |
SIGNAL_PREFIX |
Only forward messages starting with this prefix | — (all messages) |
If you use Note to Self for other things, set SIGNAL_PREFIX so only tagged messages reach Claude:
"env": {
"SIGNAL_ACCOUNT": "+1234567890",
"SIGNAL_PREFIX": "cc"
}Then "cc what's the weather" is forwarded (as "what's the weather"), but "buy milk" is ignored. Case-insensitive.
Instead of Note to Self, you can register signal-cli with a separate phone number as a primary device. This gives Claude its own number that you (and others) can DM directly.
- Get a number that can receive one SMS (prepaid SIM or eSIM)
signal-cli -a +1NEWNUMBER registersignal-cli -a +1NEWNUMBER verify <CODE>(from the SMS)- Set
SIGNAL_ACCOUNT=+1NEWNUMBERin your MCP config
cd signal-channel
npm run uninstallStops the daemon, unregisters the linked device, removes signal-cli, channel state, slash commands, and MCP config. Use --keep-signal-cli to keep signal-cli installed.