Signal

PocketPaw connects to Signal via the signal-cli REST API. Signal is ideal for users who prioritize privacy and end-to-end encryption.

Prerequisites

You need a running signal-cli-rest-api instance. This provides the HTTP API that PocketPaw communicates with.

Terminal window
# Run signal-cli REST API via Docker
docker run -d --name signal-api \
-p 8080:8080 \
-v ./signal-cli:/home/.local/share/signal-cli \
bbernhard/signal-cli-rest-api

Register your phone number with signal-cli before using it with PocketPaw.

Setup

Start signal-cli REST API

Ensure signal-cli-rest-api is running and your number is registered.

Configure

Terminal window
export POCKETCLAW_SIGNAL_API_URL="http://localhost:8080"
export POCKETCLAW_SIGNAL_PHONE_NUMBER="+1234567890"

Start

Terminal window
pocketpaw --signal

Configuration

SettingEnv VariableDescription
API URLPOCKETCLAW_SIGNAL_API_URLsignal-cli REST API URL
Phone numberPOCKETCLAW_SIGNAL_PHONE_NUMBERYour registered Signal number
Allowed numbersPOCKETCLAW_SIGNAL_ALLOWED_NUMBERSComma-separated allowed numbers

How It Works

The Signal adapter uses HTTP polling:

  1. Every 2 seconds, it sends GET /v1/receive/{number} to the signal-cli API
  2. New messages are converted to InboundMessage events
  3. Responses are sent via POST /v2/send to the signal-cli API

No Streaming

Signal doesn’t support message editing, so responses are accumulated and sent as a complete message.

Installation

Signal support uses httpx (a core dependency), so no extra installation is needed:

Terminal window
curl -fsSL https://pocketpaw.xyz/install.sh | sh