Channels protocol v7, self-hosted
Realtime messaging you run yourself.
Arc holds the WebSocket connections, groups them into channels, tracks who is present, and gives your backend a signed HTTP API to publish to them. Existing client and server SDKs work against it by changing the host and credentials.
docker run -p 4000:4000 kryptonhq/arc:latestEvery channel type on day one
Public, private, presence, end-to-end encrypted and cache channels, plus a channel per signed-in user.
Presence that doesn't drift
Members are counted per user, not per connection, and converge across nodes after a partition.
Webhooks that don't flap
Occupancy events are held briefly, so a reconnecting client produces no traffic at all.
Channels by prefix
A channel is a name. Its prefix decides what it allows.
publicanyone may subscribeprivate-your backend authorisespresence-who is here, by userprivate-encrypted-the server relays ciphertextcache-last event replayed on subscribe