Introduction
What Cariosan is, who it's for, and when to reach for it over a hosted chat SaaS.
Cariosan is a realtime chat SDK. It pairs a Go server with first-party TypeScript, React, React Native, and Go SDKs, and ships as a single Docker image you can deploy next to the rest of your stack — or you can let us host it for you.
Pick your path
Two ways to run Cariosan
- Cariosan Cloud (managed) — sign up at dashboard.cariosan.com, skip the infra setup, get a workspace in seconds. Start here for the lowest-friction path. → Cloud onboarding
- Self-host (Docker) — pull
ghcr.io/cariosan/serverand run it on your own infrastructure. Same API, same SDKs, your data on your hardware. → Pulling from GHCR
Both paths use the same REST + WebSocket API and the same SDK packages, so you can start on one and move to the other later.
Who this is for
Cariosan targets startups with customer-to-customer chat needs — marketplaces, on-demand services, edtech, healthtech — that need reliable chat without paying per-MAU SaaS fees, plus teams that need data residency for regulated content. It is Indonesian-first by origin, but the implementation is universally applicable.
- Startups with customer-to-customer chat needs — marketplaces, on-demand services, edtech, healthtech. You need reliable chat but don't want a $2k/month Stream Chat bill or opaque pricing tied to monthly active users.
- Teams that need data residency — health data, financial conversations, anything regulated. Cariosan's Postgres, Redis, and object store all run under your control.
- Indonesian-first products — the project is built around Southeast Asian market realities (flaky mobile networks, limited device storage), though nothing here is Indonesia-specific in the implementation.
Good to know
If you need a white-label consumer chat app like Discord or Slack, this is not it. Cariosan is the pipes and the SDKs; you build the UX.
What you get
Cariosan ships as a single Go binary plus thin client SDKs. The server exposes both REST and WebSocket transports for messaging, presence, typing, read & delivery receipts, reactions, quoted replies, @-mentions, full-text search, and member management.
Out of the box you get the following first-party SDKs and integrations:
- REST API + WebSocket gateway for messaging, presence, typing, receipts, reactions, search, and member management — including group channels with avatars and enforced admin/member roles.
- TypeScript SDK (
@cariosan/client) for browsers, Node, and React Native. - React component library (
@cariosan/react) withChatProvider,MessageList,MessageInput, and related hooks. - React Native UI kit (
@cariosan/react-native) — nativeMessageList,MessageInput,ChannelList, and presence/typing components on the same headless core. - Go server SDK (
cariosan-go) for your backend to manage users, channels, and webhooks. - Push notifications (FCM, bring your own Firebase project) — built in and privacy-first; off until you configure credentials.
- Automatic moderation (wordlists, link/phone/flood filters, plus user blocks & mutes) — opt-in per workspace, no AI, no extra cost.
- Signed webhooks for every event consumers care about (new messages, channel creation, member changes, moderation actions).
- Presigned S3 uploads so image and file attachments never proxy through the server.
Heads up
There is no first-party Vue, Svelte, or Flutter SDK yet. The TypeScript client works in any framework, but outside React and React Native you wire the UI yourself.
What's intentionally out of scope
Cariosan is designed to be boring and maintainable. It deliberately ships without features that would either dilute focus or commit us to expensive infrastructure we can't reliably host. These are not included:
- Threads (a separate threaded-conversation pane à la Slack — quoted replies are supported)
- End-to-end encryption
- Voice / video
The opinionated "what we will not add" stance is part of the design — it keeps the surface area small enough for one-person operations. An earlier version of this list also excluded reactions, replies, per-message receipts, and push — those have since shipped; see the changelog.
Where to go next
If you haven't run Cariosan yet, head to the quick start — it walks through bootstrapping a workspace, issuing your first user token, and sending a message from the React SDK in under five minutes.
- Follow the quick start to get a running Cariosan and send your first message.
- Read the concepts to understand the data model.
- Browse the REST API reference and WebSocket protocol.
Tip
Skim self-hosting operations and the WebSocket protocol before you deploy — that's where rate limits, retry semantics, and webhook signing rules live, and they aren't repeated elsewhere.
Was this page helpful?