What Arc is
A self-hosted realtime messaging server, compatible with existing Channels protocol v7 SDKs.
Arc keeps WebSocket connections open, groups them into channels, tracks who is present, and gives your backend a signed HTTP API for publishing events to them.
It speaks the Channels protocol, version 7. Existing client SDKs for that protocol — JavaScript, iOS, Android, Flutter — and the Python server SDK used from Django work against Arc by changing the host and credentials only. Arc's own SDKs will follow.
What you get
Every channel type
Public, private, presence, end-to-end encrypted, and cache channels, plus per-user channels for signed-in connections.
A signed HTTP API
Publish single and batch events, query occupancy and presence, and disconnect a user, with the signing scheme the server SDKs already use.
Webhooks
Learn when channels fill and empty without polling, signed so your SDK can verify them, with retries and debouncing.
An operator's dashboard
Live connection counts, credentials, webhook configuration and an audit log, behind your own identity provider.
How the pieces fit
- Clients connect over WebSocket to
/app/<key>and subscribe to channels. Private, presence and encrypted channels are authorised by your backend, which signs a token with the app secret. - Your backend publishes events over the signed HTTP API, and hears about channel activity through webhooks.
- Arc holds the connections, fans events out, tracks presence, and reports what it is doing through Prometheus metrics and the dashboard.
Drawing diagram…
An app is the unit of isolation: one set of credentials, its own channels, its own limits. Most installations have one per product.