Skip to content
Developers

Built to be understood, not just consumed. 

A small, honest API you can trace end to end. No black boxes between your backend token and media flowing through your own SFU.

Step 1 · install

Add the client

One package for the browser and React Native; a pub package for Flutter. Everything else — signalling, chat, media — comes through it.

TypeScript types included Zero config to start
terminal
1# Web / React Native2npm i @socrits/client livekit-client socket.io-client34# Flutter5flutter pub add socrits
Developer experience

From 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.

Connect1

Open one socket for calls and chat. Your backend mints the token — the client never sees your API key.

app.jscall.jschat.jsserver.js
app.js
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 UI
SDKs

Pick your platformlearn calling once.

Same API surface everywhere. Learn calling once, ship it on mobile and web.

Stable

Flutter

Socrits

iOS + Android, with CallKit & FCM ringing built in.

Stable

Web / JS

@socrits/client

Browser + React Native. Same API, TypeScript types included.

Stable

React Native

@socrits/client

Ships with the JS SDK — register the WebRTC globals and go.

Soon

iOS (Swift)

SocritsKit

Native Swift package. On the roadmap.

How it works

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

SocritsShip it

Grab a key, mint a token from your backend, and ring a phone before your coffee's cold.