Every URL is
a place.
Loci turns any URL into a shared room — instantly. If you're on the same page as someone else, you're in the same space. Chat, voice, and games are just layers on top.
How it works
URL → room, in milliseconds.
No accounts. No invite links. No servers to manage. The URL is the room key.
Visit any URL
Open a page in your browser with the Loci extension installed, or point the CLI at any URL you like.
URL is canonicalized
Loci strips tracking params (utm_*, fbclid), normalizes casing, sorts query params — so two people on the same real page always map to the same room.
Room ID is derived
The canonical URL is SHA-256 hashed. That hash becomes a Durable Object ID — one per URL, zero cost when empty.
You get a name
Ephemeral by default: Adjective Noun generated per session. No sign-up required. Persistent ed25519 identity available for channel ownership.
Subscribe to layers
One WebSocket connection, multiple layers. Subscribe to presence, chat, or audio — or all three.
Clients
Pick your interface.
Official clients for every workflow. All open source, all pointing at the same protocol.
Chrome Extension
Ambient sidebar that appears on every tab. See who's co-browsing, open a chat, or jump into voice — without leaving the page.
Download latest build
Download the ZIP, extract it, then load the unpacked extension in chrome://extensions. Chrome Web Store listing coming soon.
CLI — locus
IRC-style terminal client. Join any URL room, chat in real time, and subscribe to layers from the command line.
npm install -g @loci-protocol/cli
loci join https://example.com
TypeScript SDK
Universal browser + Node library. Dual ESM/CJS. Embed Loci presence and chat anywhere — your app, a widget, a script.
npm install @loci-protocol/sdk
import { LocusClient } from '@loci-protocol/sdk'
Self-host the server
Run your own Loci network on Cloudflare Workers in minutes. Point any client at your deployment and own your data.
wrangler deploy
Official network: loci.frnd.tech
Layers
One connection.
Three dimensions.
Subscribe to what you want. One WebSocket per client — layers are subscriptions, not separate connections.
Who's here
Real-time count and identity of everyone on the same canonical URL. Ephemeral — presence disappears the moment they leave.
Rooms & channels
Ring-buffered messages (last 100, 24h TTL). Create named channels. Optional persistent storage tier for communities that want history.
Voice · P2P mesh
WebRTC full mesh, up to 8 participants per channel. The server handles only signaling — audio stays peer-to-peer. No TURN in v0.1.
Open Source
Built in the open.
MIT licensed. No hidden services, no black-box infra. Self-hosting is a first-class feature.