Getting started
Guides
Publish and subscribe
Fan out events over channels, including ephemeral messages.
Channels
Naming, lifecycle states, attach and release, and channel options.
Presence
Track who is on a channel and react to joins and leaves.
History
Replay stored messages so clients recover after reconnects.
Channel rules
Per-prefix persistence: store history, stay live-only, or keep a last value.
Connections
The connection lifecycle, reconnection, and what the SDK restores.
Database Sync
Connect your Postgres and give clients live query results as documents.
Pusher and Laravel
Point Laravel Echo and any Pusher client at Foony with only environment variables.
Auth and capabilities
API keys, short-lived tokens, and channel-scoped permissions.
Encryption
End-to-end encrypt payloads with a key the service never sees.
Chat
Platform
Apps and API keys
Projects, apps, key management, rotation, and team roles.
Usage and billing
What counts as a message, usage charts, plans, and overage.
Monitoring
Live app stats and the per-connection inspector in the dashboard.
How it works
The design behind ordering, exactly once delivery, and recovery.
Browser behavior
Tabs, unloads, background pages, and presence timing in browsers.
Building with LLMs
Point coding agents at llms.txt and the Markdown docs.
Reference
JavaScript SDK
The full browser and Node client API.
Go SDK
The full Go client API for backends and services.
Server auth
Mint scoped client tokens from your backend.
Protocol
How clients connect, and why the wire format is SDK-only.
REST API
Publish, history, presence, and token minting over plain HTTPS.
Errors
The error envelope, every error code, and WebSocket close codes.
Limits
Message sizes, throughput, retention, and per-plan quotas.