Channels

Signal

The Signal channel connects Open Astra agents to Signal via the signal-cli REST bridge. Signal does not have an official bot API, so this integration requires running a separate signal-cli service that manages a registered Signal phone number.

Prerequisites

  • A dedicated phone number for the Signal bot (not your personal number)
  • The signal-cli REST API running and registered with that phone number
  • Network access from the Astra gateway to the signal-cli REST API

Setup

First, run the signal-cli REST API using Docker:

bash
docker run -d \\
  --name signal-api \\
  -p 8080:8080 \\
  -v signal-data:/home/.local/share/signal-cli \\
  bbernhard/signal-cli-rest-api

# Register your phone number
curl -X POST http://localhost:8080/v1/register/+15551234567 \\
  -H 'Content-Type: application/json' \\
  -d '{"use_voice": false}'

# Verify with the SMS code
curl -X POST http://localhost:8080/v1/register/+15551234567/verify/123456

Then configure Astra:

bash
SIGNAL_API_URL=http://localhost:8080
SIGNAL_PHONE_NUMBER=+15551234567

Configuration in astra.yml

yaml
channels:
  signal:
    enabled: true
    defaultAgent: assistant-agent
    allowedPhoneNumbers: []     # Empty means all contacts allowed
    pollIntervalMs: 3000        # How often to poll for new messages
Signal does not support webhooks — the integration polls the signal-cli REST API at the configured interval. Set a reasonable poll interval to avoid overwhelming the signal-cli service.