Early access · free while we grow
Make any game joinable.
One line. Everyone's in.
Joinable is an SDK and hosted relay that makes any web game multiplayer: invites, quick match, a waiting room, a synced countdown, results and rematch, with no server code. Add one line, give your coding agent our prompt, and we run the servers.
<script src="game.js"></script>
+ <script async src="https://relay.getjoinable.com/sdk.js" data-key="pk_…"></script>
First game · launching soon
Turbo Rally on Etheria
Press Race online, send the link, and you're on the grid together: rival cars you can bump, one podium, rematch in one tap.
Try the same race in our Kart Loop demo- ~7 KBSDK, gzipped, no dependencies
- 0servers for you to run
- 1 lineto load it, async, so your game never waits
How it works
Three steps. Your agent does most of it.
-
1
Add one script tag
Paste it into your game's page. It loads in the background, so if it can't load, your game simply stays single-player.
<script async src="https://relay.getjoinable.com/sdk.js" data-key="pk_…" data-connect="invite"></script> -
2
Give your coding agent the prompt
Claude Code, Cursor, Codex or any agent reads our kit, looks at your game, picks the right pattern for its genre and wires four hooks: start a round, report your player, draw the others, say who finished.
Joinable.game({ profile: 'race', start, local, remote, stop }) Joinable.finish({ time }) -
3
Run the self-test
Your agent runs our two-player self-test. It opens two real browsers, plays a round on both and reports what passed. When it's all green, ship.
✓ two players in one room by invite link ✓ start() ran on both with one seed ✓ each sees the other player live ✓ one result on both ✓ rematch: round 2 started
What your players get
The whole multiplayer experience, not just a connection.
Joinable draws every screen around play, in your game's colours. Your game only draws the game.
- Play onlineInvite friends with a link, or quick match with whoever's online.
- Waiting roomWho's in, ready ticks, track or level picked by the host.
- 3 · 2 · 1The same countdown on every screen, from the room's clock.
- Play togetherLive standings. Rivals drawn by your game, with bumps on both sides.
- ResultsOne podium, the same for everyone.
- RematchOne tap, and you're back on the grid.
Plus reconnects into the same seat, watching a round in progress, and late joiners. No accounts: a link is all a friend needs.
Genres
The right netcode for your genre, picked for you.
The agent kit reads your game and chooses. You don't need to know what "dead reckoning" is.
- Full rounds
Racing
Each player drives their own car; rivals are predicted to the present and bump back.
- Full rounds
Arcade & score
Same seed for everyone, live scores, one leaderboard. Runners, puzzles, mini games.
- Play together
Co-op & shared worlds
One world everyone edits: builders, clickers, drawing, board games. Often just one line.
- Play together
Party & avatars
Platformers and top-down games where each player moves their own character.
- Play together
Turn-based
Board, card and word games, with whose turn it is kept in the shared state.
- Planned
RTS
Deterministic lockstep: only orders travel, so hundreds of units cost nothing.
Full rounds: Joinable runs the waiting room, countdown, live standings, podium, rematch and quick match. Play together: everyone shares one world in one room, without the round screens (yet). Fighting games and competitive shooters are next: they need rollback or a cloud host.
Where it stops working
We'd rather tell you now.
"One line" is true for a lot of games and not for all of them. Here's where it isn't, today.
- Fighting games and precise 1v1 action. They need rollback netcode. Not yet.
- Competitive shooters and ranked play. They need a server you can trust. That's our cloud host, which comes later.
- Cheating between strangers. Each device reports its own result. The room rejects impossible ones, but a public leaderboard isn't tamper-proof yet.
- Native games. Joinable is for games that run in a browser.
- Far-apart players. A room lives near the first player. Across continents, bumps soften so it still feels fair.
The agent prompt
Copy this into your coding agent.
Run it from your game's folder. Swap in your project key once you have one.
Make this web game multiplayer using the Joinable SDK (project key KEY). Read https://staging.getjoinable.com/kit/AGENTS.md first and follow it exactly: it says how to pick the right pattern for this game's genre, what to change, and how to test with two browser windows. Start with the smallest change that works (usually one script tag), test it with two windows, and only go further if the doc's checks fail for this game. Don't write any server code: the SDK's hosted relay does all of that. If the doc's self-test applies (full rounds), run it until it passes. When you're done, tell me which pattern you used, what you changed, and anything that doesn't sync.
Pricing
Free during early access.
When we launch paid plans, you'll pay for hours people actually play, never for a spike in players at once.
Early access
Free
- Every genre and screen
- Hosted relay, no servers to run
- A project key set up for your game
After launch
Free tier
- A free tier that covers a small game
- Priced by player-hours, not players online at once
- Early-access games hear first, with notice
A player-hour is one player connected for one hour: two friends racing for 30 minutes is one player-hour. A viral spike never puts you on a higher tier.
Questions
Asked so far.
Do I need a server?
No. Our relay runs on Cloudflare's network, one room per game session. Your agent never writes WebSocket or server code; the kit tells it not to.
Which engines does it work with?
Anything that runs in a browser: plain canvas, Phaser, PixiJS, Three.js, or a DOM game. If it uses requestAnimationFrame, it's a good fit.
Can my coding agent set it up?
Yes. Any agent that can read a web page and edit your files: Claude Code, Cursor, Codex, Windsurf and others. The kit is written for agents, with exact steps and a self-test they can run.
Which games doesn't it fit?
Fighting games and precise 1v1 action, which need rollback netcode, and competitive shooters or ranked play, which need a server you can trust. Both come later. RTS games are planned next. Native games that don't run in a browser aren't a fit.
What if Joinable is down, or blocked where my player is?
The script loads with async, so your game starts straight away whatever happens. If Joinable doesn't arrive, the game stays single-player and nothing breaks.
Do my players need accounts?
No. A friend opens the link and they're in. Names and colours are picked for them, like "Lucky Gecko".
Can players cheat?
Between friends, it doesn't matter much. For public leaderboards, the room rejects impossible times and scores, and a verified mode that replays runs on our side is planned. See the limits above.
Does it work on phones?
Yes. Invite opens the phone's share sheet, every screen is made for touch, and a phone that locks mid-round gets back into its seat.
Make your game joinable.
We're letting developers in a few at a time. Tell us about your game and we'll send you a project key.