your game.no server.
Plug and play support for Three.js: turn any Three.js game into a multiplayer game, a co-op game, or an MMO.
Players connect straight to each other whenever the network allows. There is no game server running the match. Free and open source.
natively fast. forget the network.
Most online games send every move to a server somewhere and wait for the answer. With NET, you see your own moves right away, and players link directly to each other whenever the network allows. No game server runs the match.
Your own moves are predicted on the same frame you press the key. The host confirms them in the background.
A benchmark, not a game: one machine, 16 players, 5% of the world moving each tick. Only the entities that changed are checked, and each player is sent only what is near them.
The whole networking engine, WebAssembly and JavaScript, gzipped. Smaller than most of your textures.

Rose& Blade
A physics sword fight from the Wars of the Roses. Every knight is a ragdoll, and you swing your sword with the mouse or a controller.
Play alone, team up against the waves, or fight each other eight a side. If the host drops, the next player takes over on the spot and the fight plays on.
Plays on a computer or laptop, with a mouse and keyboard or a controller (not on phones). For multiplayer, open it in two browsers or send it to a friend.
a shooter to learn from.
Net Shooter is a small, open-source three.js FPS with NET built in: a server browser, hosting, and joining as a client. Play it, fork it, ship it (MIT), or read how each piece maps to NET. All of the networking is in one file, js/net.js.
Server browser
Open games with server, region, map and player count. Search, filter, sort, and a lock on passworded games.
Host a game
Server name, max players, map, region, password and friendly fire. The password is checked on the host's page.
Host and clients
The host runs the match at 30 ticks a second. Each player predicts their own movement with the same rules, so it feels instant.
Fair shots
The host decides what a shot hit, using where the targets were when the shooter fired.
git clone https://github.com/ai-2070/net-fps cd net-fps npm install npm start
couch co-op to open world.
One package covers all three. Pick a mode and bring your own gameplay.
Co-op
One friend hosts in their browser and plays too. The others join. The host plays through the same view as everyone else.
Multiplayer
Create a lobby, share a room code, and play. Lobbies are found over the network itself, so there is no matchmaking server. Movement stays smooth even when packets drop. One host held 128 players in testing; past that, split the match across hosts.
MMO worlds
Split a big map into regions, each run by a different host. Players only receive what is near them, and characters cross region borders without popping or duplicating.
one match. many hosts.
One player doesn't have to carry the whole match. NET can split it across several hosts in the same game, each running its own part, so no single page does all the work.
Each host runs its own part
A host owns some of the players and NPCs, and runs their AI. Every player joins every host, and NET merges them into one view of one world.
Hits across hosts are fair
A hit on someone run by another host is checked against that host's record of where the attacker really was.
Players move between hosts
When a player is handed to another host, an input the old host already applied is never applied twice.
A host drops, the match goes on
The remaining hosts take over the lost host's players from where they last saw them.
five steps. then you're online.
Connect, open a room, share the game state, draw it, move. A few lines each, and this is the real API.
import { connect, rememberedIdentity, requestCredential }
from '@net-mesh/browser';
const { credentialB64, bootstrapUrl } = await requestCredential({
anchorUrl: 'https://anchor.ai2070.net', // NET's public anchor
game: 'my-game',
});
const node = await connect({
...rememberedIdentity(),
credentialB64,
bootstrapUrl,
});a protocol, not a plugin.
NET works with any game engine, because it is a network protocol. How much comes ready-made depends on your engine. Three.js gets the full kit today.
Three.js
Everything on this page, ready to use. Lobbies, shared game state, smooth movement, and a scene binding that adds, moves and removes your meshes for you.
- ✓lobbies
- ✓game state
- ✓netcode
- ✓scene binding
Other web engines
The same package works in any browser game. You get the lobbies, game state and netcode as-is, and write the few lines that draw entities in your engine.
- ✓lobbies
- ✓game state
- ✓netcode
Any other engine
NET is an open protocol, not a web library. Native games connect through the Rust, Go, Python or C SDKs and get encrypted connections, channels, streams and RPC. The game layer on top is yours to build for now.
- ✓encrypted mesh
- ✓channels
- ✓streams
- ✓rpc
prompt the game. prompt the multiplayer.
Hard to get wrong
Typos become compile errors instead of silent bugs, and every error has a clear name. AI-written code tends to work on the first try.
Comes with an agent skill
The repo ships a net-browser skill that teaches Claude Code and other coding agents how to use the package properly.
Test without a network
createLocalMesh() runs several players in one page. Build the whole game offline, then switch to a real connection.
> Make this Three.js game multiplayer with NET (@net-mesh/browser).
Follow the docs: https://ai2070.net/docs/sdk/browserthe hard parts, already done.
Cheat-resistant
Players send what they want to do. The host decides what actually happens.
No wallhacks
Hidden data is never sent to players who shouldn't see it, so there is nothing to dig out. (The host's own page holds everything; for real stakes, run a dedicated host.)
No impersonation
Every player's identity is proven by the encrypted connection. Nobody can pretend to be someone else.
Fair hit detection
Shots are checked against what the shooter actually saw, capped at 200 ms so faking lag doesn't help.
Smooth under packet loss
Movement uses a fast lane that skips late packets instead of waiting for them.
Encrypted end to end
Every NET packet travels inside an encrypted Noise session, even when the anchor has to relay it.
free to use. free to ship.
NET is an open protocol, licensed MIT or Apache-2.0. Use it in a game jam, a weekend project or a commercial release. No sign-up, no keys, no per-player pricing.