Skip to content
The self-hosted CPaaS

Ship video calls you actually own.

suryacloud is the self-hosted alternative to Agora and ZEGOCLOUD. One SDK for calls, chat, live streaming and recording — running on your own cloud, at roughly half the price.

10,000 free min / month No credit card Deploy in a day
team standup · live
04:12
A
Alice
B
Bob
M
Maya
K
Kofi
124 ms
latency
1080p
quality
DTLS-SRTP
transport
Priya is calling…
rang on a locked phone

Powering real-time in

Telehealth
Dating apps
Marketplaces
Live commerce
Social & community
Fintech support
Creator streaming
Gaming voice
Contact centers
EdTech classrooms
Telehealth
Dating apps
Marketplaces
Live commerce
Social & community
Fintech support
Creator streaming
Gaming voice
Contact centers
EdTech classrooms
<0 ms

Median glass-to-glass latency

0.00%

Signalling uptime target

0

Participants per room

0%

Runs on cloud you own

The platform

Every real-time primitive, one SDK

Calls, ringing, chat, streaming and recording — designed to work together and learned once. Mix what you need; ignore the rest.

Voice & Video

1:1 and group calls up to broadcast scale.

WebRTC SFU built on LiveKit, tuned for mobile networks. Adaptive simulcast, dynacast and hardware acceleration keep calls crisp on a 3G handset and a gigabit laptop alike.

Call Invitations

Ring real phones — even when the app is closed.

A full signalling layer over WebSockets with push-triggered ringing through FCM and Apple CallKit. Invitations, accept/reject, timeouts and busy states are handled for you.

Prebuilt Call UI

Drop in a full call screen in an afternoon.

Batteries-included call views for Flutter and Web — grid & spotlight layouts, PiP, mic/camera/speaker controls, mirroring, and hang-up wired to the SDK. Theme it or fork it.

Persistent Chat

1:1 and group messaging with history.

Realtime messaging with delivery, unread counts, typing indicators, read receipts and paginated history — sharing the same connection as your calls, so there's one socket to manage.

Live Streaming

Go from a call to a stadium-scale broadcast.

Promote any room to an RTMP/HLS broadcast for audiences of thousands. Ingest from OBS or a phone, egress to HLS, and pull viewers in at a fraction of streaming-CDN cost.

Recording

Compliant recordings, straight to your bucket.

Server-side composite or track recording via egress, written directly to S3-compatible storage you control. Nothing leaves your account — ideal for regulated telehealth and fintech.

Developer experience

From npm install to 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.

app.js
1import { SuryaCloud } from '@suryacloud/client'23const sc = new SuryaCloud('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
Own the stack

A control plane, not just a connection

The pieces a real product needs around media — tenancy, keys, metering, residency — are built in. The same panel we run in production ships with the platform.

Multi-tenant control plane

Projects, API keys, per-tenant quotas and rotation — the same panel we run in production.

Usage metering & billing

Every participant-minute metered at the edge, with exportable usage for your own invoicing.

Data residency by default

Media and recordings stay in the region and account you deploy to. No third-party hop.

Token-based auth

Your backend mints short-lived session tokens with an API key. Users never see a secret.

SDKs that match

One identical API across Flutter, Web and React Native. Learn it once, ship everywhere.

Deploy in a day

Docker Compose to a single VM, or Kubernetes for scale. You hold the keys the whole way.

Deploy in a day, not a quarter

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 taking real calls — with every byte of media staying inside your account.

your-vm ~ deploy
$ docker compose up -d
✓ control-plane started
✓ signalling started
✓ sfu (livekit) started
● live at cloud.yourco.com — you own every byte
The honest comparison

Everything the big vendors do — on infrastructure you own

Same features. Better data control. A fraction of the per-minute cost. Here's the side-by-side.

CapabilitysuryacloudZEGOCLOUDAgora
Where media runsYour own cloudTheir cloudTheir cloud
Video / voice calls
Offline ringing (CallKit/FCM)Add-on
In-app chat includedSeparate SKUSeparate SKU
Live streaming
Recording to your bucketTheir storageTheir storage
Data residency controlFullLimitedLimited
Source-available core
Per participant-minute$0.0009~$0.0040~$0.0040
Free tier / month10,000 min10,000 min10,000 min

Competitor pricing is public list price for HD video, rounded, for comparison only. Your mileage varies with codecs and region.

How it works

From zero to a connected call in four steps

No black boxes. You can trace a call from your backend token all the way to media flowing through your own SFU.

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.

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.

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.

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.

Proof, not promises

Teams that swapped their vendor for their own stack

Real products running calls, chat and offline ringing on suryacloud today.

We swapped ZEGOCLOUD for suryacloud in a weekend. Calls ring on locked phones, chat rides the same socket, and our comms bill dropped by an order of magnitude.
DU
Dude
Dating app · live on suryacloud
Recordings write straight to our own bucket, so compliance stopped being a blocker. The self-hosted deploy took an afternoon.
TH
Telehealth pilot
Founding engineer
One API across Flutter and Web meant our mobile and web teams shipped calling the same week. That never happens.
MP
Marketplace app
Head of Engineering

Get started

Your comms. Your cloud. Your call.

Start free with 10,000 participant-minutes every month. Move to your own infrastructure whenever you're ready — the SDKs never change.