A Signal messenger client for BlackBerry Android devices.
Built on top of signal-cli via the signal-cli-rest-api Docker image, with a companion SignalBerry Bridge for offline message persistence.
Signal Network
│
▼
signal-cli-rest-api (Docker, port 5000)
│ WebSocket /v1/receive
▼
SignalBerry Bridge (Docker, port 9099)
│ SQLite — persists messages offline
▼
SignalBerry Android (HTTP polling + WebSocket)
The Android app connects directly to signal-cli-rest-api for real-time messages (WebSocket) and sending. The bridge runs alongside it and stores every message to SQLite so the app can catch up on messages received while it was closed.
- Realtime messaging — WebSocket receive + send; bridge polling catches up missed messages
- Message status — 🕒 pending → ✓ sent → ✓✓ delivered → ✓✓ read
- Replies — long-press a message to quote-reply
- Emoji reactions — react to messages; syncs across devices
- Images — send from gallery, receive and view full-screen
- Light / dark mode — toggle in Settings
- Conversation list — snippet, timestamp, and unread badge per contact
- Search — filter contacts in the message list
You need two Docker containers running on a machine reachable from your Android device. The easiest way is to use the SignalBerry Bridge repo, which ships a docker-compose.yml that starts both.
git clone https://github.com/cengizozel/SignalBerryBridge
cd SignalBerryBridgeCreate a .env file in the bridge directory:
SIGNAL_NUMBER=+12223334444
docker compose up -d --buildThis starts:
signal-api— signal-cli-rest-api on port5000signal-bridge— SignalBerry Bridge on port9099
Open this URL in a browser on the Docker host:
http://YOUR_HOST:5000/v1/qrcodelink?device_name=signal-api
On your phone: Signal → Settings → Linked Devices → "+" → scan the QR code.
Verify it worked:
curl http://YOUR_HOST:5000/v1/accounts- Open SignalBerry on your device.
- Enter
YOUR_HOST:5000as the API Host and your Signal number in E.164 format. - Tap Connect — your contacts will load and you can start chatting.
- The device running Docker and the Android device must be on the same network (or the Docker ports must be reachable).
- No TLS or authentication — intended for local / trusted network use only.
- A background service handles real-time delivery and notifications when the app is not in the foreground.
- Groups, voice/video, disappearing messages, and stickers are not supported.

