Open source · MIT license

Live cursors and
multiplayer
presence

for any web app

Self-hostable SDK. Add real-time cursors and who's online in under 10 lines of React. No connection caps. No per-seat pricing.

canvas-room · flock.xevrion.dev
AMPK
4 online

Drop it in.
It just works.

One provider, two hooks. The SDK handles WebSocket lifecycle, reconnection, heartbeats, and cursor interpolation automatically.

Full quickstart →View source
App.tsx
import { FlockProvider, useCursors } from "@xevrion/flock-react";

function Cursors() {
  const cursors = useCursors();
  return Object.values(cursors).map((c) => (
    <Cursor key={c.userId}
      position={c.position}
      name={c.metadata.name}
      color={c.metadata.color} />
  ));
}

export default function App() {
  return (
    <FlockProvider
      serverUrl="wss://your-server.com"
      roomId="my-room"
      userId={userId}
      metadata={{ name: "Alice", color: "#a78bfa" }}>
      <Cursors />
    </FlockProvider>
  );
}

Everything you need.
Nothing you don't.

Flock does cursors and who's online, and does them well. The smallest thing that makes your app feel multiplayer.

Self-hostable
Run on your own infrastructure via Docker or npx. No data leaves your servers.
10 lines of code
One provider, two hooks. That's the entire integration surface area.
Auto-reconnection
Exponential backoff, TTL-based eviction, silent state recovery.
MIT license
No caps, no per-seat pricing. Open source, keep forever.
~6KB gzipped
Tree-shakeable. No heavy runtime dependencies.
Redis pub/sub
Scale horizontally with multiple server instances sharing room state.

Ship multiplayer in an afternoon

Start local, point your app at the server, and have live cursors working before lunch. Self-host on your own infra when you're ready.