Skip to main content
Open-source connections.
For the apps you build.
Browser / Desktop
JavaScript / TypeScript · Alpha

Voice and video,
inside your app.

An open-source SDK for small rooms and in-app calls.
Browser or desktop. Your interface, your code.

Signal study.
Drag to explore.

The Freehop SDK

One SDK.
Your interface.

Connect a session, attach incoming media to your own interface, and send small messages between participants. The same JavaScript API works in the browser and Electron.

Control microphones, cameras and adaptive video. Your backend handles identity and session tickets; Freehop handles the connections.

Explore the client API

Typed options, sessions and events. Get the TypeScript release →

connect.jsJavaScript
import { connect } from 'freehop';

const session = await connect(ticket, {
media: { audio: true, video: false }
});

session.on('track', ({ peer, track }) => {
session.attach(track, mediaElementFor(peer));
});

await session.send({ type: 'ready', ready: true });

Your backend issues the ticket. Your app supplies the media elements. See the complete setup →

Use cases

What you can build.

A small room on its own. A call inside an app you already have. These integration ideas use the same SDK, with your interface and your room rules.

Small meeting rooms

Team check-ins, study groups, project calls.

Build a room with a joining link, camera preview and chat. Keep the controls simple and the room part of your own product.

Voice · video · room messagesBuild a meeting room

Calls inside a small app

A support call beside the customer’s project.

Add a call panel to an existing portal or tool. People can talk while keeping the page, task and context in front of them.

Your interface · your sign-inEmbed a call

Shared workspaces

Design reviews, pair building, shared canvases.

Put a conversation beside the work. Send small events such as a selected item or a raised hand alongside voice and video.

Media tracks · application eventsConnect a workspace

Desktop collaboration

A team tool with calling built in.

Use the same client in Electron. An optional desktop gateway can help other people in the session connect through difficult networks.

Browser API · Electron gatewayBuild for desktop

Community rooms & games

Club hangouts, co-op voice, small watch groups.

Give a few people a place to talk inside your community or game. Your app supplies the activity; Freehop connects the participants.

Voice-first rooms · optional videoAdd a community room

Built with Freehop

Try it in a call.

Open two browsers or invite someone.
See the SDK connect real people.

How the connection works

The shortest path
between people.

Direct→Gateway→Relay→Bridged

Direct when possible. Through a gateway or another participant in the session when needed. Signalling gates introduce the peers; they never carry media.

If no session route works, Freehop reports unreachable. A host or gateway you run still uses your bandwidth. Understand the routes →

Know what you’re
building on.

Alpha software, open evidence. Small rooms are the starting point. The published network results come from simulated home-lab tests; field reliability is still to be established.

OptionWhen a direct route fails, media goes throughYour media billBuilt for
Freehopthis projectPeer-to-peer SDK plus small signalling gatesMachines in the session: a participant's desktop gateway, the host node, or a forwarding participant; optionally your own TURN relay as a last resortGates carry no media; gateway costs depend on who hosts it; an opt-in TURN relay bills only the calls that need itSmall-room mesh; initial target 2–8
WebRTC + your own TURNThe browser API, plus the servers you build (e.g. coturn)Your TURN serverEvery relayed byteSmall groups (mesh), more with an SFU you add
PeerJSLibrary for one-to-one connections by peer id, with a signalling server (PeerServer)A TURN server you supply. Its free TURN service closed in December 2023Yours, once you add TURNOne-to-one; groups are a mesh you build
LiveKitOpen-source SFU server and SDKs, or LiveKit CloudAlways the server: every stream goes through the SFU, with built-in TURNYour servers' bandwidth, or Cloud pricing per minute and GBLarge rooms, livestreams, AI agents
Jitsi MeetComplete meeting app: Videobridge SFU with XMPP signallingWith 2 people it tries a direct link; with 3 or more, every stream goes through the VideobridgeYour servers' bandwidth, or 8x8's hosted JaaSMeetings with dozens of people
Hosted video APIsManaged services such as Daily, Agora, Twilio Video and Cloudflare RealtimeThe provider's servers: most send every stream through themPer participant-minute, or per GB (Cloudflare)Large rooms, nothing to run

Apache-2.0 / No Freehop subscription

Build your
first call.