Features
What the plugin does, in detail.
All2One SiteChat is a single WordPress plugin: a PWA chat client served by your site, a REST API under /wp-json/all2one/v1, and integrations for voice, video, broadcast, and AI.
π security
End-to-end encryption
On first sign-in the browser generates an encryption keypair with WebCrypto. The private key is wrapped with a key derived from your passphrase and stored server-side only in wrapped form (/keys/save). Direct messages are encrypted to each participant's public key (/keys/public/{id}); public channels use a shared server key (/server-key/create) so history stays readable to members who join later. Changing your passphrase re-wraps the same key (/keys/rewrap) without losing history. Attachments, voice memos, and generated TTS audio are uploaded as encrypted .enc blobs and decrypted client-side.
π convenience
Passkey (WebAuthn) unlock
Register passkeys against your account (/webauthn/add) so unlocking your chat keys is a fingerprint or security-key touch instead of typing the passphrase. Passkeys can be listed and revoked per device, and the passphrase always remains a fallback.
π¨ theming
Custom color themes β dark & light
The chat ships with full dark and light modes and lets each user customize the palette β backgrounds, accents, bubbles β from a settings panel. These docs pages work the same way: hit the β/π toggle in the nav, or open the theme editor to repaint both sites live.
π expression
Custom emotes, animated emojis & GIFs
Admins curate a site emote catalog (/custom-emotes), animated emojis render inline (/animated-emojis), and GIF search is proxied server-side (/klipy-proxy) so no API key ever reaches the browser. Emoji reactions with per-reaction detail views round it out.
π integrations
Stock quote integration
Type $AAPL (or any symbol) in a message and the client calls /stock to render a live quote card β company, price, and day change with up/down coloring β inline in the conversation.

ai
Hermes agent chat & voice
Hermes is a resident AI agent with its own WordPress account. It participates in DMs and addressed channel messages, keeps threaded conversations (/agent-threads, /agent-thread-create), and its presence dot is driven by a heartbeat its gateway posts (/agent-heartbeat) β green means alive. You can also join the agent's LiveKit voice room (/voice/agent-token) and simply talk to it.
# spaces
Public & private channels
Channels support avatars, member management, unread tracking, and mark-as-read. Public channels are browsable and joinable by anyone on the site and encrypt with the shared server key; private channels encrypt only to their members, so access control is cryptographic, not just a permission flag.
π§ realtime
Group audio & video via LiveKit
Every channel can open a voice room: the server mints a scoped LiveKit join token (/channels/voice-token), and the room supports mics, cameras, and screen share. A presence endpoint (/voice/presence) powers the "who's in voice" sidebar, 1:1 calls use /voice/dm-token, and moderators can mute or remove participants.
π‘ broadcast
Go Live broadcast
For one-to-many moments, a presenter starts a Cloudflare Stream Live broadcast (/broadcast/start, WHIP ingest) and everyone else watches the low-latency WHEP playback (/broadcast/info) β chat keeps running alongside. Built to hold a ~60-person demo audience without a 60-person WebRTC room.
π notifications
PWA, push & per-chat preferences
The client installs as a PWA with a service worker cache. Web Push (/push/subscribe) delivers message and voice-activity notifications even when the tab is closed, and every conversation has its own message/voice notification toggles (/notify-prefs).
π audio
Voice memos & text-to-speech
Record and send voice memos, or generate spoken audio with TTS.monster voices (/tts/generate) using VoiceName: text. Generated audio is re-hosted permanently, encrypted like any media upload, and auto-plays in an inline player.
π storage
Uploads with quotas
Encrypted file sharing with per-user storage quotas (/quota-status), a "my uploads" manager for reclaiming space, and image uploads for channel avatars. Everything sensitive travels and rests as ciphertext.