Getting Started
Gallery examples
Copy-paste Vite apps on the same room Durable Object.
Each template is a product shape, not a claim that FluxyChat is MQTT, netcode, or an SFU. The Do not column is the scope of that example. Open two tabs unless noted. Worker URL plus a pk_ / public room id or a member JWT.
npx @fluxy-chat/create-fluxy-chat@latest my-cursors --example live-cursors
npx @fluxy-chat/create-fluxy-chat@latest my-cursors-chat --example live-cursors-chat
npx @fluxy-chat/create-fluxy-chat@latest my-vanilla --example javascript-live-cursors
npx @fluxy-chat/create-fluxy-chat@latest my-doc --example tiptap-room
npx @fluxy-chat/create-fluxy-chat@latest my-war --example war-room
npx @fluxy-chat/create-fluxy-chat@latest my-iot --example iot-panel
npx @fluxy-chat/create-fluxy-chat@latest my-draw --example draw
npx @fluxy-chat/create-fluxy-chat@latest my-deal --example deal-room
npx @fluxy-chat/create-fluxy-chat@latest my-fleet --example fleet-panel
npx @fluxy-chat/create-fluxy-chat@latest my-game --example game-tick
npx @fluxy-chat/create-fluxy-chat@latest my-stage --example voice-stage
npx @fluxy-chat/create-fluxy-chat@latest my-comments --example comments-board
npx @fluxy-chat/create-fluxy-chat@latest my-polls --example polls
npx @fluxy-chat/create-fluxy-chat@latest my-board --example whiteboard| Example | Primitive | Scope (do not stretch) |
|---|---|---|
live-cursors | sendCursor / type: cursor | Not client_event for pointers |
live-cursors-chat | cursors + useChat | One JSON socket under the provider. Yjs is a second connection if you add storage. |
javascript-live-cursors | vanilla connect + type: cursor | React not required |
tiptap-room | Yjs useStorage + Collaboration | Not a second CRDT |
war-room | useChat + invokeAgent + AvatarStack | Agent uses the same room, not a private DM |
iot-panel | HTTP ingest + iot.reading | Not MQTT. Hosted: iotAutoAgentId on publish-config invokes an agent without @mention. |
draw | cursors + client-ephemeral-dot | Not 60 Hz broadcast |
deal-room | createDecision / ackDecision / visibility / invokeAgent | visibleTo for private lines. Cross-org is REST /cross-org. Set VITE_FLUXYCHAT_AGENT_ID for Ask agent. |
fleet-panel | POST /fleet/gps then fleet.gps_update | Not MQTT. Geofences: listFleetGeofences |
game-tick | lobby + game.tick | Server-authoritative input, not rollback netcode |
voice-stage | joinVoiceStage signaling | Bring LiveKit for the media plane |
comments-board | useThreads + FloatingComposer | Not chat parentId as pins |
polls | createPoll / votePoll | Timeline polls. Anonymous ballots: POST /polls isAnonymous |
whiteboard | Yjs Y.Array strokes + cursors | Yjs on the room DO, not Excalidraw as a second backend |
Health is not HIPAA. Stream WHIP/HLS needs Cloudflare Stream secrets; there is no gallery WHIP example yet. Voice numbers: Voice load report.