Durable, strictly ordered
Persisted before delivery, monotonic per-room sequence, idempotent send. Replies, edits, reactions, delivery/read receipts, unread cursors, full-text search, stories.
Ollacore is a production backend for messaging, multi-party audio/video and end-to-end encryption. One Rust service on one Linux VM. You build the apps; the durable ordering, media forwarding, key distribution, push and multi-tenancy are done.
81 HTTP operations · 2 WebSocket channels · 29 migrations · MIT/Apache-only dependency tree
Not a roadmap. Each of these has integration tests running against a real stack on every release, and a production smoke suite on every deploy.
Persisted before delivery, monotonic per-room sequence, idempotent send. Replies, edits, reactions, delivery/read receipts, unread cursors, full-text search, stories.
Clients resume from their last sequence with deliberate overlap — nothing missed, nothing duplicated. Typing indicators, presence with crash detection.
Multi-party with per-subscriber forwarding, multi-device, trickle ICE, TURN relay. Verified with real WebRTC clients and across four browser engines.
Megolm/Olm key distribution with atomic one-time-key issuance and forward-secrecy signalling. The server never holds a key or a plaintext.
Optional: phone signup, contact discovery, direct/group conversations, chat-list inbox and token vending — so you can ship a messenger without building an auth layer.
Presence-aware so only genuinely offline members are notified, with storm cooldown and content-free mode. Incoming calls ring offline devices.
The difference is only who owns identity. Everything downstream — chat, calls, push — is identical.
Your app-server authenticates the user however you already do, then calls Ollacore with a tenant-pinned API key to provision a room and mint a room-scoped token for the client.
The backend stores no names, emails or phone numbers. Best for embedding chat/calls into an existing product.
The client talks to Ollacore directly: phone + one-time code, contacts, conversations, and a token per conversation. No app-server of your own required.
You supply your own SMS route and push credentials — we hold no telecom or push account. Best for a standalone consumer messenger.
See both paths, step by step, in the integration checklist →
| Check | What it proves |
|---|---|
| Integration suites vs a live stack | Every plane exercised against real Postgres, Valkey and object storage — not mocks. |
| Real WebRTC media through the SFU | Headless peers exchange genuine audio, video and screen-share RTP, in order. |
| Browser interoperability | Chromium, Firefox, Chrome and WebKit driven against a live stack, media proven by received-byte counters. |
| Push through Google's real service | Web Push verified end-to-end to a service worker, not a local sink. |
| Production smoke on every deploy | 13 checks including restart durability; the release is refused if they fail. |
| Licence compliance, mechanically | The whole dependency tree is checked at every release — MIT/Apache/BSD/ISC/Zlib only. |
| Restore drill from off-site backup | Measured RTO of 64 seconds, with the smoke suite run against the restored data. |
You will find these in the docs too. It is cheaper for both of us if you know them now.
Single SFU, single VM by design. Host loss is an outage until the machine is rebuilt (~20 minutes). There is no SLA or status page yet.
You integrate against the OpenAPI and AsyncAPI documents by hand, including a thin realtime layer for reconnect semantics. Generated SDKs are planned, not shipped.
OTP delivery and native push use your vendor credentials. We hold no telecom or push account, and DLT/sender registration stays yours.
About 150 concurrent chat sessions and 50+ concurrent uploads per node, with calls bounded structurally. Beyond that is unproven, not promised.
Exact endpoints, exact frames, in the order you need them: stand up chat, place a call, and ring an offline phone.