Skip to content
openclawOS

A private AI assistant on Signal — fully self-hosted

Signal is the most privacy-respecting mass-market messenger. Pair it with openclawOS for an AI agent that respects the same privacy posture, end to end.

Dipankar Sarkar 7 min read
  • signal
  • privacy
  • tutorial
  • self-hosted

If you’ve chosen Signal, you’ve chosen privacy on purpose. Adding an AI assistant to it shouldn’t compromise that choice. openclawOS pairs Signal cleanly — the bot’s keys live on your hardware, decrypted messages stay there, and only the relevant prompt goes to your chosen LLM.

What you need

  • A computer to run openclawOS (Mac, Linux box, Raspberry Pi 4, a $5 VPS, anything).
  • A phone number for the bot. Second SIM, Twilio, or Numero.
  • An LLM key. We recommend Anthropic Claude Opus 4.6 if your threat model can include sending prompts to Anthropic. For full local: point at an Ollama endpoint.

Setup

openclaw apps install signal

openclawOS bundles signal-cli. The wizard:

  1. Asks for the phone number.
  2. Sends a verification SMS or voice call.
  3. Prompts for the six-digit code.
  4. Registers a Signal device under that number.

You can also link as a secondary device to an existing Signal account by scanning a QR (matches the “Linked Devices” flow on a Signal client).

How conversations flow

A message from a Signal contact arrives at the Gateway already decrypted (signal-cli handles that). It hits a binding, routes to Pi, and Pi generates a reply. The reply gets sent via signal-cli, encrypted to the recipient.

The decrypted content lives in the Gateway’s SQLite database (which you should encrypt with FileVault/LUKS). The LLM provider sees the active turn of the conversation; not the full thread, not the cryptographic identities.

Group chats

Pi works in Signal groups. Default: listens for an @-mention of its name. Sessions can scope per-user (each member’s questions stay isolated) or per-group (one shared session for the whole group).

Disappearing messages

Signal’s disappearing message timers are respected. If a chat has a 24-hour timer, Pi’s memory of that chat expires the same way. This matters for privacy hygiene — you don’t want a “forgetting” messenger paired with a “remembering” agent.

Why this is special

Signal users typically have a sharp privacy threat model. Pairing an AI assistant has historically meant compromising that — every “Signal AI bot” SaaS routes messages through an external server. openclawOS doesn’t. Your Signal stays Signal, your AI stays yours.

The “activist” stack

A common openclawOS-on-Signal setup:

  • Raspberry Pi 4 at home, on Tailscale only (no public ports).
  • Signal account on a Twilio number.
  • Local Ollama running Llama 3.1 70B for full air-gapped inference.
  • vector memory for long-term notes.

Nothing leaves the local network. The AI is helpful within a fully self-hosted privacy boundary. It’s a small win for a specific audience but a meaningful one.

Frequently asked

No. signal-cli registers a Signal account locally on your Gateway. Decryption happens inside your process. The LLM provider sees only what you choose to send — typically the latest message or two.

Run your own gateway.

Free, MIT, no signup. Pi is waiting.