Pre-release
This release is a pre-release and may not be stable for production use.
@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
Metadata
Release files for elizaos-plugin-signal 2.0.0a5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| elizaos_plugin_signal-2.0.0a5.tar.gz | 22.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| elizaos_plugin_signal-2.0.0a5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.0 kB
Release files / elizaos_plugin_signal-2.0.0a5.tar.gz
| Download URL | elizaos_plugin_signal-2.0.0a5.tar.gz |
|---|---|
| Size | 22.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cd1bb28ac4680f3c20c3cf4811639d7637f04d6d858e16c0b0ba94cd3aa88ab5
|
|
BLAKE2b-256 checksum How to use checksums |
0b9bbafd9bcdc77865f09eb75971be6280e97e6a910b3362cb7dd7c02049dc02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / elizaos_plugin_signal-2.0.0a5-py3-none-any.whl
| Download URL | elizaos_plugin_signal-2.0.0a5-py3-none-any.whl |
|---|---|
| Size | 18.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4ed188e275c34d3bcf38b7ff8bff719e1a360a7517fd7a5d13781c2c716fb801
|
|
BLAKE2b-256 checksum How to use checksums |
a756ca644f5fad27007af4161c23436b09db5c5f63a25d5566ad3c45bb82622e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|