Skip to content

Realtime infrastructure
for video, audio & AI

AxonKit is a distributed SFU built on mediasoup and NATS JetStream — a scalable foundation for video conferencing, live streaming, and multi-modal AI applications.
quickstart.ts
import { Room, RoomEvent } from '@axonkit/client-sdk-js';

const room = new Room({ dynacast: true });

await room.connect('https://your-server.com', token);

room.on(RoomEvent.TrackSubscribed, (track) => {
  document.body.appendChild(track.attach());
});

await room.localParticipant.setCameraEnabled(true);
await room.localParticipant.setMicrophoneEnabled(true);
Built on proven open source
mediasoupNATS JetStreamGoTypeScriptWebRTC
Distributed by design

From a single node to a multi-region fleet

Section titled “From a single node to a multi-region fleet”

Video conferencing

Sub-second joins, simulcast, and dynacast keep meetings smooth from 1:1 calls to large all-hands.

Live streaming

Route one upstream to thousands of subscribers across regions without manual relay configuration.

Interactive audio rooms

Low-latency audio with adaptive stream quality and server-driven active-speaker detection.

Real-time AI agents

First-class data channels and RPC for feeding audio, video, and telemetry into agent pipelines.

Why AxonKit

mediasoup SFU

WebRTC media processing via mediasoup workers, with WebRtcServer for efficient port multiplexing.

Intelligent routing

RIB/FIB-based stream routing across clusters and regions, with RTT probing for cross-region path selection.

Self-healing

Automatic failover with make-before-break path switching and loop detection across complex topologies.

LiveKit-compatible SDK

Familiar Room / Participant / Track model with a TypeScript client SDK published to npm.

DataChannel RPC

Low-latency bidirectional signaling over the AXON/1.0 protocol, inspired by the NATS wire protocol.

Zero-config discovery

Nodes join the fleet and announce themselves through NATS KV — no static topology files to maintain.

  1. Run the server. Start one node locally or a self-discovering fleet across regions — no static configuration required.
  2. Connect a client. Drop in the TypeScript SDK and connect with a JWT token; the room is derived from the token’s grant.
  3. Scale media routing. Streams are automatically forwarded over pipe transports to the nodes where subscribers actually are.
Start building