Pusher through Squiid
Hosted websockets with channels, presence and client events. Pusher is on the Squiid roadmap.
What Pusher is
Pusher Channels is hosted publish and subscribe over websockets. Your server triggers an event on a channel and every subscribed client receives it, with private channels authorised by your backend and presence channels tracking who is currently connected. Client libraries exist for browsers and mobile, connection state and reconnection are handled, and webhooks tell your server when channels become occupied or vacated. Channels are cheap to create, so a per-user or per-document channel is a normal design rather than an optimisation.
In a vibe-coded app this is the fastest way to make an interface feel live: a dashboard that updates as rows change, a chat feature, a progress indicator for a long AI job, a collaborative cursor, or a notification badge that increments without a refresh. Running your own websocket server is possible but awkward on serverless hosts, which is exactly where most agent-generated apps are deployed. Message size limits and connection counts are the two constraints worth reading before designing around it.
Why connect it through Squiid
Pusher is on the Squiid roadmap. When it is connected, Squiid will provision the app, hold the app id, key and secret, and route trigger and auth calls through https://api.squiid.io/v1/pusher/... with Authorization: Bearer $SQUIID_API_KEY, with official SDKs working by base URL swap (gateway convention). Connections and messages will meter against prepaid credits at Pusher's listed price on one invoice. The client key is public by design, but the secret that can broadcast to every channel stays with Squiid. Connection counts are the metric that surprises people, because a browser tab left open all day is a connection all day.
- One account, one key, one bill, one dashboard. Pusher sits beside every other service your project uses, on the same invoice and the same credit balance.
- Key custody. Squiid holds the Pusher credentials. Your code carries
SQUIID_API_KEY, so PUSHER_APP_ID, PUSHER_KEY, PUSHER_SECRET, PUSHER_CLUSTER never land in a repository, a preview deployment or an agent’s context. - Metering you can see. Every call is counted per service and per day, so you know what Pusher costs before the month ends.
- Pause on zero. When prepaid credits run out the gateway stops authorizing usage instead of running up a bill you did not fund.
- One rotation. Rotating the Squiid key cuts off every agent, worker and deployment at once, with no provider key to hunt down.
What you get
- A provisioned Pusher app with the secret held by Squiid
- Public, private and presence channels
- Client libraries with reconnection handling
- Channel occupancy webhooks
- Pusher list pricing, no markup
How to connect Pusher
One variable replaces the provider credentials this service would normally need. Requests go to the gateway and the official SDKs work by pointing their base URL at it (gateway convention).
# .env
# replaces PUSHER_APP_ID, PUSHER_KEY, PUSHER_SECRET, PUSHER_CLUSTER
SQUIID_API_KEY=sq_live_xxxxxxxxxxxxxxxxxxxxxxxx
# every request: https://api.squiid.io/v1/pusher/...
# header: Authorization: Bearer $SQUIID_API_KEY
Add it in your dashboard
Open the Squiid catalog, add Pusher and fund credits. Squiid provisions the project and keeps the provider keys.
Put the one key in your env
Add SQUIID_API_KEY to .env and delete PUSHER_APP_ID, PUSHER_KEY, PUSHER_SECRET, PUSHER_CLUSTER. Nothing else from Pusher needs to exist in your project.
Point your agent at it
Claude Code, Cursor and Codex read the same variable and call https://api.squiid.io/v1/pusher/. Agents use Pusher when the host is serverless and a persistent websocket server is not an option.
Pricing through Squiid
Pusher charges by concurrent connections and messages per day on plan tiers, at the provider's listed price. Squiid passes that through at par: one dollar of prepaid credit is one dollar of Pusher usage, with no markup and no per-request margin.
Pusher has no subscription attached on Squiid today. If a plan is required for a feature you need, it passes through at the provider’s listed price with no Squiid fee.
Squiid adds no markup to provider prices. There is a free plan at $0 a month with a 15% fee when you top up credits, Solo at $19.97 a month with a top-up fee that starts at 8% and falls to 3.5% as your spend grows, Team from $29.97 a seat a month with the same ladder one point lower, and Custom with a rate of 3% or less. Credits are prepaid, so Pusher usage stops when the balance reaches zero rather than producing an invoice you did not fund. Auto top-up with a cap keeps production running without handing anyone an open-ended card.
If you leave
Export: channels, keys and delivery configuration are re-created in your own Pusher account from the documented setup. Squiid never owns your code, your schema or your domain, and the gateway speaks Pusher's own API, so the client change is a base URL. The handover page lists what happens for every provider in the catalogue.
Works with every coding agent
Pusher through Squiid is just an HTTP call with a bearer token, so every agentic coding tool can use it with the single key already in your environment:
- Claude Code
- Cursor
- ChatGPT
- Codex
- Grok
- Gemini CLI
- GitHub Copilot
- Windsurf
- Perplexity
- Devin
- Replit
- v0
- Lovable
- Cline
Vibe coding a feature on Pusher usually means asking for it in plain language and letting the agent write the integration. Because the key is Squiid’s rather than the provider’s, it can do that without ever holding a credential that could be leaked, logged or committed.
Related services
Ably
Messaging and realtimeRealtime messaging with guaranteed ordering, history and presence
RoadmapProvisionedSupabase
DatabasesPostgres with auth, storage, realtime and edge functions attached
Next upProvisionedCloudflare Workers
Storage and mediaServerless code on Cloudflare's edge network with near-zero cold starts
Next upProvisioned STStream
Messaging and realtimeChat, activity feeds and video with prebuilt UI components
RoadmapProvisionedLiveKit
Messaging and realtimeOpen-source WebRTC for live audio, video and realtime voice agents
RoadmapProvisionedQuestions people ask
Is Pusher available on Squiid?
Not yet. It is on the roadmap as a provisioned service.
Pusher or Supabase Realtime?
If your data already lives in Supabase, its realtime subscriptions avoid a second vendor. Pusher is a general pub/sub layer independent of where data is stored.
How do private channels stay private?
Your backend authorises each subscription. Through Squiid that authorisation call uses SQUIID_API_KEY, so the Pusher secret is never in your app.
How will it be billed?
By connections and messages at Pusher's listed price, drawn from prepaid credits with no markup.
Can it show a live AI job progress bar?
Yes, that is a common pattern: the worker triggers progress events and the browser subscribes to a private channel.
Connect Pusher with one key.
Pusher Channels provides managed websocket infrastructure with public, private and presence channels, so realtime updates work without running your own socket server. Planned for Squiid.