# WordPlus Cloud docs > The realtime cloud for websites and apps. Its realtime SDK gives channels, presence and events, calls between two people that ring in the browser, group calls, a drop-in call screen, and encryption with keys only the site or app holds. The server decides who may use each channel and call; the browser part subscribes, publishes and runs the calls. For WordPress: wordplus/realtime, for any plugin or theme. For other websites and apps: @wordplus/realtime in the browser (React and React Native too), with its server part for Node, wordplus/realtime-php for PHP and Laravel, or wordplus-realtime for Python (Django, FastAPI). All of it in one file: https://docs.wordplus.cloud/llms-full.txt ## WordPlus Cloud docs - [WordPlus Cloud docs](https://docs.wordplus.cloud/index.md): WordPlus Cloud is the realtime cloud for websites and apps. The realtime SDK gives your code what WordPlus's own plugins run on: - [Use with AI agents](https://docs.wordplus.cloud/ai-agents.md): An AI coding agent can build realtime features into your plugin or app with the SDK, if it has the right instructions. There are three ways to give them to it, from the most complete to the simplest. ## WordPress: wordplus/realtime - [Getting started](https://docs.wordplus.cloud/wordpress/getting-started.md): The WordPlus realtime SDK gives any WordPress plugin, theme or custom code realtime features on a site with a WordPlus Cloud subscription: - [Channels](https://docs.wordplus.cloud/wordpress/channels.md): A channel carries events to every browser subscribed to it. Your server publishes to it ([publishing](publishing.md)), and browsers may send each other events on it ([client events](client-events.md)). - [Presence](https://docs.wordplus.cloud/wordpress/presence.md): A presence channel (`presence-…`) lists who is on it, to everyone on it: who is reading a post, who is in a support queue, who is typing. - [Publishing from your server](https://docs.wordplus.cloud/wordpress/publishing.md): Your server sends events to the site's channels. Every browser subscribed to them gets each one. - [Client events](https://docs.wordplus.cloud/wordpress/client-events.md): Browsers on a private or presence channel can send each other events directly, with no request to your server: typing indicators, cursors, live drawing. - [Calls between two people](https://docs.wordplus.cloud/wordpress/calls.md): A call rings on every page the other person has open, and runs straight between the two browsers once answered: - [Group calls](https://docs.wordplus.cloud/wordpress/group-calls.md): A group call is a room on WordPlus Cloud's media servers. Everyone in it sends their camera, microphone and screen once, and gets everyone else's. The servers form a mesh across regions, so a room's people may sit on dif - [The call screen](https://docs.wordplus.cloud/wordpress/call-screen.md): A ready call interface for any page, with no JavaScript to write: a call button, a group call button, the ring for incoming calls, and a call window with the usual controls. - [Encryption and the site's users](https://docs.wordplus.cloud/wordpress/encryption.md): What your plugin sends through WordPlus Cloud is sealed on the way: the realtime servers carry it without being able to read it or change it. You don't write any encryption code. The site holds the keys, gives each user - [PHP reference](https://docs.wordplus.cloud/wordpress/php-reference.md): Everything is on `wordplus_realtime()`, the newest copy of the package on the site. Call it from `plugins_loaded` on. - [JavaScript reference](https://docs.wordplus.cloud/wordpress/javascript-reference.md): Three scripts, each loaded only by the pages that need it: - [Errors](https://docs.wordplus.cloud/wordpress/errors.md): Every refusal has a short code. The page hands it on as `code` (`e.code` of a rejected promise, `{ code }` of an `error` or `realtime:error` event, a call's `endReason`); PHP returns it as a `WP_Error`'s code. - [Limits](https://docs.wordplus.cloud/wordpress/limits.md): ## Channels - [Other servers](https://docs.wordplus.cloud/wordpress/self-hosted.md): The SDK talks to WordPlus Cloud's servers by default. Four filters point it elsewhere: ## Websites and apps: @wordplus/realtime (browser, Node), wordplus/realtime-php (PHP, Laravel), wordplus-realtime (Python) - [Getting started](https://docs.wordplus.cloud/apps/getting-started.md): The realtime SDK has two halves: - [Channels](https://docs.wordplus.cloud/apps/channels.md): A channel is a name browsers listen to. Your server publishes to it, and browsers on private and presence channels can send each other events too. - [Presence](https://docs.wordplus.cloud/apps/presence.md): A presence channel lists who is on it to everyone on it, and says when someone arrives and leaves. - [Publishing](https://docs.wordplus.cloud/apps/publishing.md): Your server sends events to channels with its secret. Browsers can't publish: they send [client events](channels.md#client-events) to each other at most. - [Calls, group calls and the call screen](https://docs.wordplus.cloud/apps/calls.md): - **Calls between two people** ring in every tab the callee has open, and stop ringing everywhere once one answers. They run directly between the two browsers, through TURN when a network needs it, or move into a room on - [Encryption and your users](https://docs.wordplus.cloud/apps/encryption.md): What your app sends through WordPlus Cloud is sealed on the way: the realtime servers carry it without being able to read or change it. You write no encryption code. Your server holds the keys, gives each user the ones t - [React, React Native and Capacitor](https://docs.wordplus.cloud/apps/react.md): ## React - [Laravel](https://docs.wordplus.cloud/apps/laravel.md): Laravel finds the package by itself, through package discovery. It brings: - [Django](https://docs.wordplus.cloud/apps/django.md): `wordplus_realtime.django` gives Django the browser's routes for the session's user, the page's settings with the CSRF token, and a user's profile from Django's user model. - [FastAPI and Starlette](https://docs.wordplus.cloud/apps/fastapi.md): `wordplus_realtime.fastapi` gives FastAPI the browser's routes as a router, for the user your app finds. - [Server reference: `@wordplus/realtime/server`](https://docs.wordplus.cloud/apps/server.md): Node 20 or later, and every edge runtime: it runs on Web Crypto and `fetch`. For PHP and Laravel, see the [PHP reference](php-reference.md); for Python, the [Python reference](python-reference.md). All three take the sam - [PHP reference: `wordplus/realtime-php`](https://docs.wordplus.cloud/apps/php-reference.md): The package needs PHP 8.1 or later, with sodium, and curl or PHP's streams. It takes the same options as the Node and Python packages, and answers the browser the same way. In Laravel, the `Realtime` facade and `app( Rea - [Python reference: `wordplus-realtime`](https://docs.wordplus.cloud/apps/python-reference.md): The package needs Python 3.9 or later, with PyNaCl. It takes the same options as the Node and PHP packages, and answers the browser the same way. - [Browser reference: `@wordplus/realtime`](https://docs.wordplus.cloud/apps/browser.md): ## `connect( options )` → `Promise` - [Errors](https://docs.wordplus.cloud/apps/errors.md): Every refusal has a short code. In the browser, it is `e.code` of a rejected promise, `{ code }` of an `error` or `realtime:error` event, or a call's `endReason`. On your server, it is a `RealtimeError`'s `code` in Node - [Limits](https://docs.wordplus.cloud/apps/limits.md): ## Your account