Team chat with channels, DMs, voice and video calls, and file sharing, on web, mobile and desktop. The server orders every message, so every client sees the same conversation.
Generally availableGo · Next.js · WebSocket · PostgreSQL · Redis
The problem
Collaboration tools buckle exactly when the team scales.
Most chat platforms are prototypes that got popular. They hold up in a ten-person workspace and fall apart at a thousand: messages arrive out of order, uploads time out, and every new client drifts a little further from the truth.
- Message ordering that quietly breaks under concurrent writes.
- File uploads that fail at exactly the size teams actually share.
- Reconnects that lose whatever arrived while you were offline.
- A UI that feels like a compromise on at least one of your devices.
The solution
A collaboration core engineered like infrastructure.
Mesh numbers every message on the server, in the same transaction that stores it, before it fans out to anyone. Ordering is a property of the system rather than a hope, and it holds on web, mobile, and desktop alike.
- Server-assigned sequence numbers give every conversation one order.
- Idempotent sends mean no duplicates, even through a flaky connection.
- Reconnect and Mesh backfills exactly what you missed, nothing more.
- Voice and video calls with screen sharing, one tap from any channel.
What Mesh does.
Realtime messaging & presence
Persistent WebSocket fan-out with server-assigned ordering. Messages land once, in sequence, on every client, with live presence and typing.
Voice & video calls
Jump from any channel into a voice or video call in one tap, with screen sharing built in.
Share files
Drag in files, images, and clips up to 25 MB. Uploads go straight to object storage on a presigned URL, never through the chat server.
Channels, groups & DMs
Public channels for the whole team, private groups for projects, and one-to-one DMs, organised per workspace.
Reconnect backfill
Drop offline and Mesh replays exactly what you missed, in order, from the last message you saw.
Gap-free & reliable
Per-conversation sequence numbers and idempotent sends: a gap is detectable, and a retried send never posts twice.
How it's put together.
Every layer exists because a guarantee demanded it.
- 01
Clients
Next.js on the web, React Native (Expo) on iOS and Android, Tauri on the desktop.
Next.js · React Native · Tauri
- 02
Realtime
Go services hold the WebSocket connections. A Redis pub/sub backplane carries every broadcast to every instance, and each fans it out to its own connections, so any instance can serve any user.
Go · WebSocket · Redis
- 03
Ordering
A send locks its conversation, takes the next sequence number and stores the message in one Postgres transaction. A retry with the same client message ID gets the stored message back instead of a duplicate.
Go · PostgreSQL
- 04
Files
Clients upload straight to object storage on a presigned URL: Google Cloud Storage in production, MinIO locally.
Cloud Storage · MinIO
- 05
Calls
WebRTC. One-to-one calls go peer to peer through STUN and TURN; group calls run through a LiveKit SFU.
WebRTC · LiveKit
Mesh is running today.
Open the real product and try it yourself, at mesh.synopshq.com.
Priced to be predictable.
Start free and upgrade as the team grows. Nothing here is a surprise later.
Free
For small teams getting started.
- Up to 10 members
- Unlimited channels & DMs
- 1:1 voice & video calls
- Web, mobile & desktop apps
Team
Most popularFor growing teams that live in chat.
- Unlimited members & history
- Group video calls & screen share
- File sharing up to 25 MB
- Multiple workspaces
- Priority support
Enterprise
For organisations with scale, security & compliance needs.
- SSO & SAML
- Audit logs & data residency
- Dedicated infrastructure
- 99.9% uptime SLA
- 24/7 priority support
Questions, answered directly.
How does Mesh guarantee message order?
What platforms does Mesh run on?
Does Mesh have calls and file sharing?
Is my team's data secure?
Is Mesh production-ready?
Ready to try Mesh?
It's live today. Open the app and see it for yourself.