Signal messaging integration plugin for elizaOS agents
Project description
@elizaos/plugin-signal
Signal messaging integration plugin for elizaOS agents with end-to-end encryption support.
Features
- Secure Messaging: End-to-end encrypted communication via Signal protocol
- Direct Messages: Send and receive direct messages with contacts
- Group Chats: Participate in Signal group conversations
- Reactions: Add emoji reactions to messages
- Contacts: List and manage Signal contacts
- Groups: List and interact with Signal groups
- Typing Indicators: Send typing status notifications
Installation
npm install @elizaos/plugin-signal
# or
bun add @elizaos/plugin-signal
Prerequisites
This plugin requires a running Signal CLI REST API server or direct access to signal-cli.
Option 1: Signal CLI REST API (Recommended)
Run the Signal CLI REST API server using Docker:
docker run -d --name signal-api -p 8080:8080 \
-v signal-cli-config:/home/.local/share/signal-cli \
bbernhard/signal-cli-rest-api
Then register or link your Signal account:
# Register a new number
curl -X POST "http://localhost:8080/v1/register/+1234567890"
# Or link to existing Signal account
curl -X GET "http://localhost:8080/v1/qrcodelink?device_name=elizaOS"
Option 2: Signal CLI Direct
Install signal-cli:
# macOS
brew install signal-cli
# Linux
wget https://github.com/AsamK/signal-cli/releases/latest/download/signal-cli-X.X.X.tar.gz
tar xf signal-cli-*.tar.gz -C /opt
Register your phone number with Signal.
Configuration
Required Environment Variables
# Your Signal phone number in E.164 format
SIGNAL_ACCOUNT_NUMBER=+1234567890
Optional Environment Variables
# Signal CLI REST API URL (if using HTTP API)
SIGNAL_HTTP_URL=http://localhost:8080
# Path to signal-cli executable (if using CLI directly)
SIGNAL_CLI_PATH=/usr/local/bin/signal-cli
# Ignore group messages (only respond to DMs)
SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES=false
Usage
Add to your agent configuration
import signalPlugin from "@elizaos/plugin-signal";
const agent = {
// ... other configuration
plugins: [signalPlugin],
};
Character file configuration
{
"name": "MyAgent",
"clients": ["signal"],
"settings": {
"signal": {
"shouldIgnoreGroupMessages": false
}
}
}
Actions
| Action | Description |
|---|---|
SIGNAL_SEND_MESSAGE |
Send a message to a contact or group |
SIGNAL_SEND_REACTION |
React to a message with an emoji |
SIGNAL_LIST_CONTACTS |
List Signal contacts |
SIGNAL_LIST_GROUPS |
List Signal groups |
Providers
| Provider | Description |
|---|---|
signalConversationState |
Current conversation context and metadata |
Events
The plugin emits the following events:
SIGNAL_MESSAGE_RECEIVED- When a message is receivedSIGNAL_MESSAGE_SENT- When a message is sentSIGNAL_REACTION_RECEIVED- When a reaction is receivedSIGNAL_GROUP_JOINED- When joining a groupSIGNAL_GROUP_LEFT- When leaving a group
API Reference
SignalService
The main service class providing direct access to Signal functionality:
import { SignalService, SIGNAL_SERVICE_NAME } from "@elizaos/plugin-signal";
// Get service from runtime
const signalService = runtime.getService(SIGNAL_SERVICE_NAME) as SignalService;
// Send a message
await signalService.sendMessage("+1234567890", "Hello!");
// Send a group message
await signalService.sendGroupMessage(groupId, "Hello everyone!");
// Add a reaction
await signalService.sendReaction(
"+1234567890",
"👍",
messageTimestamp,
authorNumber
);
// Get contacts
const contacts = await signalService.getContacts();
// Get groups
const groups = await signalService.getGroups();
Security Considerations
- Signal provides end-to-end encryption for all messages
- Your Signal account credentials are stored locally
- The HTTP API should only be accessible from trusted networks
- Consider using HTTPS and authentication for production deployments
Troubleshooting
Bot not receiving messages
- Verify Signal CLI REST API is running and accessible
- Check that your account number is correctly formatted (E.164)
- Ensure the account is properly registered/linked with Signal
Messages not sending
- Verify the recipient number is in E.164 format
- Check that you have an active internet connection
- Ensure Signal servers are reachable
Registration issues
- Use a phone number that can receive SMS
- Wait for the verification code
- Complete the verification process before starting the bot
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file elizaos_plugin_signal-2.0.0a5.tar.gz.
File metadata
- Download URL: elizaos_plugin_signal-2.0.0a5.tar.gz
- Upload date:
- Size: 22.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd1bb28ac4680f3c20c3cf4811639d7637f04d6d858e16c0b0ba94cd3aa88ab5
|
|
| MD5 |
5d24c1d43096e61cf54b2ca3ee6e390f
|
|
| BLAKE2b-256 |
0b9bbafd9bcdc77865f09eb75971be6280e97e6a910b3362cb7dd7c02049dc02
|
File details
Details for the file elizaos_plugin_signal-2.0.0a5-py3-none-any.whl.
File metadata
- Download URL: elizaos_plugin_signal-2.0.0a5-py3-none-any.whl
- Upload date:
- Size: 18.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ed188e275c34d3bcf38b7ff8bff719e1a360a7517fd7a5d13781c2c716fb801
|
|
| MD5 |
b7a263bead5f0bd5aa8a20bd45be68d0
|
|
| BLAKE2b-256 |
a756ca644f5fad27007af4161c23436b09db5c5f63a25d5566ad3c45bb82622e
|