Welcome to the future of real-time communication infrastructure.

Today, we are thrilled to introduce CoveKit, a modern, developer-first platform engineered from the ground up to orchestrate real-time audio and video meeting rooms, manage media routing planes, and simplify WebRTC integrations.

Why CoveKit?

Integrating audio and video features into your application has historically meant choosing between two extremes:

  1. High-level, black-box APIs: Easy to use, but extremely restrictive when customizing user layouts, implementing custom screen sharing capabilities, or managing server resources.
  2. Raw, self-hosted media planes: Maximum flexibility, but requiring you to manually scale WebRTC servers (like Mediasoup or Janus), manage signaling states, and debug low-level codecs.

CoveKit bridges this gap by offering a hybrid model. We provide a fully managed, high-performance media plane infrastructure, paired with clear, developer-friendly client SDKs and backend APIs.

Core Features

  • Robust Room Orchestration: Programmatically create and manage meeting rooms with custom capacities, active recording, and webhook notifications.
  • Developer-First Client SDK: Zero-dependency frontend integration featuring robust connection lifecycle management and mute state synchronization.
  • Credit Wallet Billing Model: Pay only for what you consume. Base subscription fees cover your initial allocations, with overages billed transparently from a pre-funded credit wallet.
  • High-Fidelity Audio & Video: Low-latency connections powered by global edge servers and advanced bandwidth estimation.

Get Started in Minutes

Adding CoveKit to your application is as simple as creating an organization, obtaining your API keys, and instantiating the CoveKit Client in your frontend:

import { CoveKitClient, CoveKitRoom } from 'covekit';

const client = new CoveKitClient();

// 1. Join public meeting session to get join token
const session = await client.joinPublicMeeting('lobby-room', 'Alice');

// 2. Negotiate WebRTC media transports
const room = new CoveKitRoom(client, {
  onConnected: (info) => {
    room.publishLocalMedia(true, true);
  },
  onLocalStream: (stream) => {
    document.getElementById('local-video').srcObject = stream;
  },
  onRemoteTrack: (track, peerId, kind) => {
    const stream = new MediaStream([track]);
    document.getElementById(`peer-${peerId}`).srcObject = stream;
  }
});

await room.join(session.token, session.ice_servers);

We are just getting started. Over the coming weeks, we will share tutorials on building custom screen share flows, implementing whiteboard collaborations, and deploying custom audio mixers.

Stay tuned, and welcome to CoveKit!