ClaireDocs

Ask Claire

Search the project, not the web.

Answers are grounded in Claire’s published documentation and include the source pages used.

⌘/Ctrl + J opens Ask Claire anywhere in docs.

Architecture overview

How Claire connects mobile, desktop, the API, Matrix, and plugins.

CurrentshippedReviewed 2026-08-15View source ↗

Claire is a unified messenger. The mobile and desktop clients talk to a Bun API. In PLATFORM_MODE=matrix, the API talks to Synapse and mautrix bridges, and messages are stored in Postgres through Supabase.

How a message reaches Claire — Mobile and desktop clients call the Bun server, which persists to Supabase and Redis and bridges messaging networks through Synapse and mautrix.

The moving pieces#

  • ClientsReact Native (Expo) on iOS and Android, with the shared web client hosted in Electron on desktop
  • APIBun + Express on port 3001
  • StoragePostgres via Supabase, with Redis for sessions and queues
  • BridgingSynapse (Matrix homeserver) with one mautrix bridge per network
  • Extensibilitypackages/plugin-sdk, sandboxed and approval-gated

A single MatrixBridgeAdapter handles every network. Platform differences live in the bridge, not in Claire, so adding a network is mostly a matter of registering its ghost-user prefix and bridge bot.

What this looks like in the product#

The architecture exists to make one thing true: every conversation, from every network, arrives in one inbox with the sender’s real identity intact.

The unified inbox, with per-network identityOpen the mobile gallery →

Working without messaging accounts#

Mock mode bypasses live bridges so contributors can develop against realistic data without linking a personal WhatsApp or Telegram account. It is the recommended way to start.

Durable details#