A small, honest API you can trace end to end. No black boxes between your backend token and media flowing through your own SFU.
Add the client
One package for the browser and React Native; a pub package for Flutter. Everything else — signalling, chat, media — comes through it.
1# Web / React Native2npm i @socrits/client livekit-client socket.io-client34# Flutter5flutter pub add socritsFrom npm installto a ringing phone in minutes.
An API small enough to hold in your head. The same calls work in Flutter, Web and React Native — no rewrites between platforms.
Open one socket for calls and chat. Your backend mints the token — the client never sees your API key.
1import { Socrits } from '@socrits/client'23const sc = new Socrits('https://cloud.yourco.com')45// your backend mints the token from an API key6await sc.connect({7 sessionEndpoint: '/api/sc-session',8 userId: 'alice',9})1011sc.onIncomingCall = (call) => ring(call) // show your UIPick your platformlearn calling once.
Same API surface everywhere. Learn calling once, ship it on mobile and web.
Flutter
SocritsiOS + Android, with CallKit & FCM ringing built in.
Web / JS
@socrits/clientBrowser + React Native. Same API, TypeScript types included.
React Native
@socrits/clientShips with the JS SDK — register the WebRTC globals and go.
iOS (Swift)
SocritsKitNative Swift package. On the roadmap.
From zero to a connected callin four steps.
No black boxes. You can trace a call from your backend token all the way to media flowing through your own SFU.
- Step 01
Deploy the stack
One Docker Compose file brings up the SFU, signalling and control plane on a VM you own. Point a subdomain at it and you're live.
- Step 02
Mint a session token
Your backend calls /v1/session with an API key and gets back a short-lived user token. Secrets never touch the client.
- Step 03
Connect & ring
The SDK opens one socket for calls and chat. invite() rings the other user — on a real, locked phone if they're offline.
- Step 04
Media flows peer-to-SFU
Accepted calls join a LiveKit room. Tracks are simulcast to the SFU and fanned out, adapting to each viewer's bandwidth.
System status
All operational- Signalling APIOperational
- Media (SFU)Operational
- ChatOperational
- Recording egressOperational
- Push / offline ringingOperational
Your first call isone npm install away.
Grab a key, mint a token from your backend, and ring a phone before your coffee's cold.