Beta build. Report issues to your operator channel.
NewFree hosted tier — SDK live in minutes →

Room chat on Cloudflare · self-host or hosted

Ship in-app chattoday.

Sign up, add @fluxy-chat/sdk, and run rooms on hosted cloud. Or deploy the Worker in your Cloudflare account from the monorepo. Next can stay on Vercel; chat runs on Workers and Durable Objects.

Chat infrastructure inside your product, not a helpdesk. Compare vs Pusher/Ably · Why we built it · Vercel without Pusher · Product chat vs support.

pnpm add @fluxy-chat/sdk

Works with npm and yarn too — same package name @fluxy-chat/sdk.

Your app

Live preview

app/chat/page.tsx
support-room
Live
PT
Write a message…

The same hooks power your production UI: wire the client once, then iterate on layout and copy — the preview mirrors the room your users join in your app.

Works with stacks you already use

One SDK across common frontends and runtimes. Fork the repo when you want full control.

Next.jsReactVueViteNodeWorkersReact NativeSvelteRemixTanStackExpressFastify
Next.jsReactVueViteNodeWorkersReact NativeSvelteRemixTanStackExpressFastify

Featured on

Fluxychat - Realtime chat API on Cloudflare — hosted or self-host | Product HuntFluxychat badge (SaaSHub approved)Check out Fluxychat at SideProjectors

Deploy in your account. Quotas live in D1. Console access can require a one-time ack — usage still runs through your Worker with your keys.

Edge-first

Pay Cloudflare for the edge slice, not a second realtime vendor and not a socket VPS.

Hooks + REST

Build UI with @fluxy-chat/sdk. Manage keys and quotas in the dashboard.

Multi-tenant

Many projects and rooms on one deployment, with per-project billing hooks.

Messaging basics, on the edge

Tap or hover a row on desktop. Channels, presence, mentions, and webhooks without bolting on another realtime vendor.

Threads, polls, and translation are up to your product layer. Fluxychat ships the realtime core.

From blank repo to live threads

Install, connect, hooks, live messages — loops below and pauses when you scroll away.

Step 1

Install

One dependency. No native binaries, no sidecar.

$ pnpm add @fluxy-chat/sdk

Step 2

Point at your edge

Worker URL + scoped JWT — the client never sees admin keys.

baseUrl: "https://chat…"
token: "eyJ…"

Step 3

Open a room

Hooks subscribe, send, and reconcile — you keep your UI primitives.

useChat({ roomId, client })

Live

Ship the inbox

Typing, delivery, and history — already moving on the wire.

Hey — is the edge worker up?
Yes. Messages are live.

What ships in the box

Edge delivery, clear quotas, and a console for the day-two work. You own the UI; we handle rooms, delivery, and ops hooks.

Already set up? Open the console for rooms, agents, and billing.

Realtime

Runs on your edge

WebSockets and Durable Objects handle presence, typing, and delivery. No socket fleet to babysit.

Trust

GDPR tools included

Export, erasure, audit trails, and signed webhooks when you need to answer security questionnaires.

Automate

Humans and agents, one stream

Tool events sit on the same room WebSocket as user messages. You debug copilots without a second realtime pipe.

Middleware

Transform messages before they land

Moderate, validate, enrich, and fan out from the edge. Policy code stays on the data path, not in a sidecar you forget to deploy.

edge middlewarelive
Client publish
moderate()
validate()
enrich()
Subscribers

// hooks run on your Worker before delivery — policy stays on the edge.

Developers

SDK, docs, and console in one repo

Auth, rooms, and retries sit behind hooks and route handlers. When you need keys, quotas, or billing, open the operator UI instead of wiring another admin surface.

Where teams start

Marketplaces and community

Buyer-seller threads, dispute rooms, and mod views your ops team can actually use.

Support and ops

Chat beside orders or tickets. Send webhooks to your helpdesk or AI pipeline.

SaaS in-app messaging

Install the SDK, mint JWTs, open a room, and keep your own UI components.

Pricing

Monthly limits for messages, agent invokes, and webhook deliveries. Each project stores enforcement in D1.

Console routes can require a one-time ack on your dashboard host. Billable usage still needs your Worker credentials.

Free

$0/mo

Try the stack without a card.

  • 50,000 messages / month
  • 1,000 agent invokes / month
  • 10,000 webhook deliveries / month
  • SDK and dashboard access
  • Help via GitHub issues
  • One project, fair-use limits
  • Upgrade without migrating data
Create free account
Most popular

Starter

$19.99/mo

Production traffic with fixed monthly limits.

  • 500,000 messages / month
  • 10,000 agent invokes / month
  • 100,000 webhook deliveries / month
  • Higher quotas than Free
  • Signed webhooks with retries
  • GDPR export and erasure endpoints
  • Email support (best effort)
Choose Starter

Pro

$49.99/mo

Heavy rooms, agents, and webhook volume.

  • 5,000,000 messages / month
  • 100,000 agent invokes / month
  • 1,000,000 webhook deliveries / month
  • 5M messages, 100k agent invokes, 1M webhook deliveries per month
  • Priority support
  • Custom retention and audit (contact us)
  • Annual invoicing on request
Choose Pro

Need enterprise SSO, VPC-style isolation, or custom SLOs? Email fluxychat@outlook.com.

Message lifecycle you can show users

Per-message delivery state, connection UI with scheduled reconnect, and transport fallback when WebSockets drop.

  • deliveryStatus
  • connectionState
  • nextRetryAt
  • WS → SSE → polling

Pending

Optimistic bubble in UI

Sent

Server ack + WS fan-out

Failed

Retry via clientMessageId

connectionState example

{
  status: "reconnecting",
  retryAttempt: 2,
  nextRetryAt: "2026-05-20T12:00:03.000Z",
  transport: "websocket"
}

Render "Reconnecting in 3s…" without custom timers

How we compare

Not a feature shootout — rough fit vs Stream, Ably, Pusher, and DIY DO repos. Full compare · Leaving Pusher.

CapabilityTypical stream APIsTypical Ably-styleTypical Channels (Pusher-style)Fluxychat
Edge-native (Cloudflare Workers + DO + D1)Managed cloudManaged cloudManaged cloudDesigned for Workers + DO + D1
In-app chat + operator consoleSeparate product areasConsole + APIsChannels dashboardFirst-party console in monorepo
Headless SDK (optimistic sends, reconnect state)Strong SDKsStrong SDKsChannels SDKs@fluxy-chat/sdk + vanilla store
Agent tool events on room WebSocketVariesSeparate productsN/Atool_call / tool_result on same timeline
Message templates + member preferences APIVariesN/ALimitedPOST /templates, member prefs PATCH
Reconnect, replay, and delivery state in SDKSDK features varySDK features varyChannels SDKconnectionState, loadMore, clientMessageId idempotency
Read receipts / unread badgesProduct features varyVaries by productNot first-class in ChannelsmarkReadLatest + room list unread in SDK/console
In-app notifications (mentions, DMs)Separate notification productsSeparate productsBeams (separate SKU)REST + SDK useNotifications on same Worker
Message middleware (validate / filter / enrich)VariesN/AWebhooks onlyEdge pipeline before persist + broadcast
Pricing surprises at scaleEnterprise / usage tiersUsage-basedFree tier small; connections add upCloudflare pricing you can read; MIT self-host option
Self-host / on your own accountProprietary cloudManaged-firstManaged-firstFull MIT monorepo — deploy Worker + D1 in your CF account
Socket fleet / VPS to operateManaged vendor infraManaged vendor infraManaged vendor infraNo VPS; one Room DO per room on CF edge
Next.js on Vercel + realtime (typical split)Managed cloud + your frontendAbly + Vercel tutorial patternChannels + serverless functionsVercel/Netlify UI + CF Worker chat (no Vercel WS limits)

FAQs

Questions we hear when teams compare hosted chat APIs and edge deployments.

What is the chat API vs the SDK?

Your backend talks to the Worker over HTTP. The browser uses @fluxy-chat/sdk to join a room, send, and render. Same product, two surfaces.

Can I keep the frontend on Vercel?

Yes. Lots of teams leave Next on Vercel or Netlify and run chat on Workers + Durable Objects. You skip the platform WebSocket limits and a second Pusher-style bill.

Is this Intercom, Zendesk, or a live-chat widget?

No. Those are support desks. FluxyChat is the room layer for chat inside your app — SDK, webhooks, agent timeline. You build the UI. Guide: /guides/in-app-chat-vs-support-desk.

Is this a Pusher or Ably replacement?

For tenant-scoped in-app chat on the edge, usually yes: rooms, history, reconnect, operator tools. For generic pub/sub or SMS/WhatsApp, keep those products and use FluxyChat for the chat slice.

How is this different from a fully managed vendor?

You can run the Worker and D1 in your Cloudflare account, read the MIT source, and control upgrades. Hosted cloud is there when you do not want to wire infra on day one.

Can I add moderation and webhooks?

Yes. Middleware on the edge, signed webhooks, and console pages for the boring admin work.

What are Durable Objects for chat?

Cloudflare puts shared state in a DO — chat rooms are the textbook case. FluxyChat uses one Room object per room and D1 for history. Guide: /guides/durable-objects-for-chat-rooms.

Humans and AI agents in the same room?

tool_call and tool_result ride the same WebSocket as user messages, so you replay one timeline instead of guessing what the agent did. Guide: /guides/agent-events-same-websocket-stream.

I finished Cloudflare's chat tutorial — now what?

That tutorial is the right start. FluxyChat adds JWT, D1 history, reconnect in the SDK, and a console — /guides/after-cloudflare-chat-tutorial.

Why not stay on Pusher?

You might not need to. Edge pricing you can read, self-host on your account, no socket VPS fleet. Compare at /compare.

Where should I start?

Run the quickstart for a JWT and first room, or read /guides if you are still picking between DIY Workers chat and a packaged layer.

Does a public dashboard mean anyone can spend my quota?

No. Billable calls need your JWTs and API keys. Turn on DASHBOARD_ACCESS_MODE=ack (and optional CONSOLE_GATE_SECRET) so console routes need a one-time ack first.

Read the guides

Auth, SDK setup, and self-host notes are on /docs. After sign-up, the quickstart wizard walks you through JWT and your first room.