Chat with AI on Signal
SignalGPT is a Python bot that connects Signal messaging with DeepSeek's AI API, allowing you to get AI responses directly in your Signal conversations.
- Receive Signal messages and respond with AI-generated answers
- Automatic timestamp tracking to avoid duplicate responses
- Profile picture changes to indicate online/offline status
- Conversation logging for debugging and record-keeping
- Simple setup with Signal's command-line interface
- Linux / Windows support in one file (changing OSCHOICE variable)
- Python 3.7+
- Java Runtime Environment (JRE) 17+ (required for signal-cli)
- A Signal account with phone number verification
- DeepSeek API key
git clone https://github.com/rainerigius/SignalGPT.git
cd SignalGPT
pip install requests
-
Download signal-cli 0.13.13 from the official releases:
wget https://github.com/AsamK/signal-cli/releases/download/v0.13.13/signal-cli-0.13.13.tar.gz
Or download manually from:
https://github.com/AsamK/signal-cli/releases/tag/v0.13.13 -
Extract the archive:
tar -xzf signal-cli-0.13.13.tar.gz
-
Rename the extracted folder:
mv signal-cli-0.13.13 signal-cli
Edit the following variables in the script:
MY_NUMBER = "+1234567890" # Your Signal-registered phone number
DEEPSEEK_API_KEY = "your_deepseek_api_key" # Your DeepSeek API key
DEEPSEEK_MODEL = "deepseek-chat" # or "deepseek-reasoner" for better performance but slower response time
OSCHOICE = "Windows" # Change to "Windows" if running on Windows
You have to create your own red.png and green.png files.
-
Message Reception:
- The bot continuously checks for new Signal messages using
signal-cli
- Messages are parsed and filtered to avoid duplicates
- The bot continuously checks for new Signal messages using
-
AI Processing:
- Valid messages are sent to DeepSeek's API
- Responses are sanitized to work with Signal's formatting
-
Message Sending:
- AI responses are sent back to the original sender
- All interactions are logged for reference
-
Status Indicators:
- Profile picture changes to green.png when online
- Changes to red.png when shutting down
-
Run the script:
python signalgpt.py
-
If this is your first time:
- The bot will attempt to register your phone number
- You'll receive an SMS verification code
- Enter the code when prompted
-
The bot will then:
- Start listening for messages
- Change its profile picture to indicate it's online
- Simply send a message to your bot's number from any Signal client
- The bot will respond with AI-generated content
- All conversations are logged in
response_log.txt
SignalGPT/
├── signal-cli/ # Signal CLI binaries
├── signalgpt.py # Main bot script
├── last_message.txt # Stores last processed timestamp
├── response_log.txt # Conversation history
├── green.png # Online status avatar
└── red.png # Offline status avatar
You can modify:
AVATAR_ONLINE
/AVATAR_OFFLINE
- Change status indicator images- System prompt in
get_deepseek_response()
- Adjust AI behavior sanitize_text()
- Modify how messages are cleaned before sending
Problem: "Error on bin/signal-cli.bat or bin/signal-cli"
Solution: Check the OSCHOICE
variable and restart the bot
Problem: "Signal number not registered"
Solution: Delete the signal-cli/data
folder and restart the bot
Problem: Messages not being received
Solution: Check your internet connection and verify signal-cli is working:
Windows
./signal-cli/bin/signal-cli.bat -a YOUR_NUMBER receive
Linux
./signal-cli/bin/signal-cli -a YOUR_NUMBER receive
Problem: API errors
Solution: Verify your DeepSeek API key and quota
- Your DeepSeek API key is stored in plaintext - keep it secure
- Signal credentials are stored in
signal-cli/data
- protect this directory - Consider using environment variables for sensitive data
MIT License - Free for personal and educational use