ZenChat User Manual
Sovereign peer-to-peer video and audio calls — no accounts, no recording, no third-party servers.
What is ZenChat?
ZenChat is a sovereign, peer-to-peer video and audio calling platform for up to 6 people. Your calls travel directly between participants — no recordings, no third-party servers in the call path. When a direct connection isn't possible, calls relay through a self-hosted TURN server that we operate.
Works in Chrome, Firefox, Safari (desktop and mobile), and Edge. No app install required.
Enter Your Name
Open https://chat.zentechsolutions.io. Type your name (up to 32 characters) and click Enter.
Your name is how others in the call will identify you. It is not stored anywhere — it exists only for the duration of your session.
The Lobby
After entering your name you land in the Lobby. From here you can:
- Start a call — create a new room
- Join a call — enter a room code someone has shared with you
Device Setup Screen
Before every call you pass through the Device Setup screen to check your camera and microphone. On mobile (portrait), the preview fills most of the screen for a clear self-view.
Preview overlay buttons
Device controls
- Camera dropdown — select from available cameras.
- Microphone dropdown — select from available microphone inputs.
- Camera on/off — toggle your camera before joining.
- Mic on/off — toggle your microphone before joining.
Remembered settings
ZenChat automatically restores your preferences every session:
Background Blur
Background blur uses on-device AI to segment you from your background in real time. Your background becomes blurred while you remain sharp, with naturally feathered edges where you meet the background — no hard cutout lines.
How to enable blur
- On the Device Setup screen, tap the Blur button (top-left of the camera preview).
- The button briefly shows a loading indicator the first time — the AI model (~3 MB) is downloading and warming up. This takes 2–5 seconds on the first use; after that it is cached.
- Once active, the button turns purple and your background blurs in the preview. You remain sharp in the foreground.
Blur during a call
You can toggle blur on or off at any time during a call via the AV Panel. Tap the AV button in the call controls to open the panel, then tap Blur. The blur applies instantly and your blurred video stream is what your participants see. See the AV Panel section for full details.
Blur quality by platform
Desktop — Chrome & Firefox
- GPU-accelerated gaussian blur (36 px radius)
- Smooth, creamy background defocus
- Feathered mask edges via canvas filter
- Best overall quality
Desktop — Safari
- 4-pass progressive downscale cascade
- 50% → 25% → 12.5% → 6.25%
- Smooth blur, no pixelation
- Feathered edges via bilinear interpolation
iPhone & iPad
- 4-pass progressive downscale cascade
- 50% → 25% → 12.5% → 3%
- Optimised for mobile GPU
- Feathered edges via bilinear interpolation
How the AI works
ZenChat uses the MediaPipe Selfie Segmentation model running entirely in your browser via WebAssembly. The model processes each video frame locally — no frames are sent to any server at any point. The AI identifies the boundary between you and your background, applies a feathered mask to preserve you sharply, and blurs only the background region.
Performance notes
- Blur is CPU/GPU-intensive. On older or low-powered devices, it may reduce frame rate slightly.
- If blur feels slow, disable it for the session — all other features are unaffected.
- The AI model is cached after first download; subsequent sessions start blur immediately.
- Blur works in both the setup screen preview and live in-call. Both use the same model.
Starting a Call
Step 1 — Generate room code and invite
- Click Create room in the Start a call section.
- A 6-character room code appears instantly, along with a Copy invite button.
- Click Copy invite and send the invite to your participants via WhatsApp, iMessage, email, or any app.
- Switching to another app to send the invite will not drop your room — the room is held open for you.
Step 2 — Join your room
- Return to ZenChat and click Join Room (the button changes after the code is generated).
- Check your camera and microphone on the Device Setup screen.
- Click Join now to enter the call.
Every room supports up to 6 participants automatically — there is nothing to configure.
Inviting People to Your Room
From the Lobby (before joining)
After clicking Create room, a room code and Copy invite button appear in the lobby. Click Copy invite to copy the full invitation — you don't need to be in the call yet. This is the recommended way to invite people so you can send the invite before configuring your camera.
From inside the Call
The room code and a Copy button appear in the top-left of the call screen. Click Copy to copy the full invitation at any time during the call.
The invite format
ZenChat copies a full invitation to your clipboard, formatted like this:
Shayne has invited you to a ZenChat call.
Join here: https://chat.zentechsolutions.io/?room=D8CMXW
Room Code: D8CMXW
Paste this into WhatsApp, email, Slack, or any message. The recipient gets your name, a clickable link, and the room code as a fallback.
What the recipient experiences
When someone taps the Join here link:
- They land on the ZenChat login screen — the room is pre-loaded in the background.
- They type their name and click Enter — 1 click.
- They go directly to the Device Setup screen — the room code is already filled in, no lobby step needed.
- They click Join now — 1 click — and they're in the call.
Joining a Call
Via invite link
- Tap or click the link in the invitation message.
- Type your name and click Enter.
- Check your devices on the Device Setup screen, then click Join now.
Via room code manually
- Get the 6-character room code from the call host.
- In the Join a call section, type or paste the code and click Join room.
- Check your devices on the Device Setup screen, then click Join now.
Room codes are not case-sensitive. You can enter them with or without the rm_ prefix.
In-Call Controls
The control bar runs along the bottom of the call screen.
| Button | What it does |
|---|---|
| Mute | Toggle your microphone on/off. A 🔇 badge appears on your tile when muted. All participants can see who is muted. |
| Camera | Toggle your camera on/off. A 📷 badge appears when your camera is off. |
| AV | Open the AV panel — change microphone, switch camera, toggle blur, toggle mirror during a live call. See AV Panel for details. |
| Share | Share your screen. Click again (shown as Stop) to end sharing. Only one person can share at a time. Desktop/laptop only — not available on iPhone, iPad, or Android. |
| Markup | Opens the annotation toolbar — visible only during screen share. Desktop/laptop only — follows the same restriction as screen share. |
| Chat | Open the chat panel. A red badge shows unread messages while the panel is closed. On iPhone portrait, chat covers the full screen — tap ✕ to return to video. |
| Copy | Copies a full invite (your name, join link, room code) to clipboard — send via WhatsApp, iMessage, email, etc. |
| Leave | Leave the call. The room stays open for others until the last person leaves. |
Stats
Click Stats in the top bar to view WebRTC connection diagnostics — useful for troubleshooting connection quality, checking P2P vs TURN relay status, and monitoring packet loss and round-trip time.
AV Panel — In-Call Audio & Video Controls
Tap the AV button in the control bar to open the AV panel. Tap ✕ or tap outside the panel to close it.
| Control | What it does |
|---|---|
| Microphone selector | Switch your active microphone to any detected input. The switch is seamless — other participants hear the new microphone immediately with no call drop. |
| Camera selector | Switch your active camera (e.g. front to rear on mobile, or between external cameras on desktop). The switch is live — your tile updates immediately for all participants. |
| Blur | Toggle background blur on or off during the call. Uses the same AI segmentation as the setup screen. First activation during a call may take 2–5 seconds while the model loads. Purple when active. Your blurred stream is what participants see. |
| Mirror | Toggle mirror during the call. Affects your local view only — participants always see an unmirrored image. Purple when active. |
Blur in-call — what happens to your video stream
When you enable blur in-call, ZenChat:
- Takes your live camera track and feeds it into the AI segmentation pipeline.
- Composites each frame: sharp you on top of a blurred background, with feathered natural edges.
- Replaces your video track sent to all participants with the blurred canvas stream.
- Your camera tile in the call updates to show the blurred version locally as well.
When you disable blur in-call, the original camera stream is restored to all participants immediately.
Participant Tiles
Each participant appears in a tile grid. The grid automatically rearranges as people join or leave — no manual layout adjustment needed.
Desktop and tablet (iPad / Android tablet)
2 people
- Side by side, full grid
3 people
- Your tile moves to a small strip centred at the top
- 2 remote participants fill the space below
4 people
- Your tile in top strip
- 3 remotes in a single row, each in a natural 4:3 ratio — no distortion
5 people
- Your tile in top strip
- 4 remotes in a 2×2 grid
6 people
- Your tile in top strip
- 5 remotes in a 3-column grid
Tablet landscape (iPad / Android tablet)
- Same self-strip layout as desktop
- Adapts automatically on device rotation
Mobile portrait (iPhone & Android)
2 people
- Remote participant fills the top half, your camera fills the bottom half
- Tap the eye icon on your tile to shrink yourself to a small PiP corner — remote fills the full screen
- Tap eye again to restore
3 – 6 people
- Remote participants fill the full screen in a grid
- Your tile floats as a small picture-in-picture (PiP) overlay in the bottom-left corner
- Tap the eye icon on your PiP to hide yourself completely — a "Show self view" chip appears to restore
Phone landscape (iPhone & Android rotated)
2 people
- Remote participant fills the full screen automatically
- Your camera appears as a small PiP in the bottom-left corner — no action needed
- Tap the eye icon on your PiP to dismiss it completely
- A "Show self view" chip restores the PiP
- Camera orientation corrects automatically when you rotate
3 – 6 people
- Same as portrait PiP layout — your tile floats in the bottom-left corner
- Remote grid fills the remaining space
Focusing on one participant
Click the expand arrow (↗) on any tile to focus that participant full-screen. Click again or press Escape to return to the grid.
Hiding your own tile
Tap or click the eye icon on your own tile to control how you see yourself. Your camera stream always keeps transmitting to other participants regardless of what you see locally.
Phone portrait — 2 people: eye shrinks your tile to a PiP corner; tap again to restore both tiles.
Phone portrait — 3–6 people: your tile is already a PiP — eye hides it completely.
Phone landscape — 2 people: your tile is auto-PiP — eye hides it completely.
A "Show self view" chip in the bottom-left restores your tile whenever it is hidden. Your tile is automatically restored when you leave the call.
Markup & Annotation
When a screen share is active, a Markup button appears in the control bar. All computer participants can draw on top of the shared screen in real time.
- Start or join an active screen share.
- Click Markup — it turns purple. A floating toolbar appears at the top of the screen.
- Draw on the shared screen with your mouse or finger (touch-screen).
| Control | What it does |
|---|---|
| Red / Blue / Yellow dots | Select a pen colour. Active colour has a white ring around it. |
| Erase | Switch to eraser mode (24 px brush). Highlighted in red when active. |
| Undo | Step back one drawing action (up to 20 levels). Greyed out when nothing to undo. |
| Redo | Re-apply the last undone action. Greyed out when nothing to redo. |
| Clear all | Wipe the entire canvas and broadcast the clear to all participants simultaneously. |
| Screenshot | Composite the shared screen + all current markups into one PNG and send it to the Chat panel for everyone to download. |
| ✕ | Close the annotation toolbar (drawing mode off). |
- Undo and Redo only affect your own local strokes — they do not undo another participant's marks.
- Clear all affects the canvas for all participants simultaneously.
In-Call Chat
Click Chat to open the chat panel. Type a message and click Send (or press Enter). Messages are delivered to all participants in the room. Chat history is not saved — it exists only for the duration of the call.
On desktop and iPad, chat slides in as a 320 px side panel — the video grid shrinks to accommodate it. Both video and chat are visible simultaneously.
On iPhone portrait, chat opens as a full-screen overlay — video tiles are hidden behind the panel but all audio continues. Tap ✕ Close (top-right of the chat panel) or tap the Chat button again in the controls to return to video.
File Transfer
- Open the chat panel (click Chat).
- Click the paperclip icon (📎) next to the message input.
- Select a file from your device — it is sent peer-to-peer directly to all participants.
- Files do not pass through any server.
- Very large files (>500 MB) may be slow on limited connections.
Installing ZenChat as an App
iPhone & iPad (Safari)
- Open chat.zentechsolutions.io in Safari.
- Tap the Share button (box with arrow) at the bottom of the screen.
- Scroll down and tap "Add to Home Screen".
- Tap Add in the top-right corner.
- Open ZenChat from your home screen — it launches full screen with no browser chrome.
Android (Chrome)
- Open chat.zentechsolutions.io in Chrome.
- Tap the ⋮ menu (top-right).
- Tap "Add to Home screen" or "Install app".
- Tap Add.
- Open ZenChat from your home screen.
macOS (Chrome or Edge)
- Open chat.zentechsolutions.io.
- Click the install icon in the address bar (monitor with down-arrow), or go to the browser menu → "Install ZenChat".
- Click Install. ZenChat opens as a standalone window.
Invite Link Limitations
When someone sends you the ZenChat invite link (e.g. via WhatsApp, iMessage, email), tapping it will always open in your browser — even if you have ZenChat installed on your home screen.
This is an iOS and Android platform restriction. Web apps installed to the home screen cannot intercept links from other apps. Only native App Store / Play Store apps can do this.
| How you open ZenChat | Experience |
|---|---|
| Tap an invite link in WhatsApp / iMessage | Opens in Safari or Chrome — URL bar visible, call works fully |
| Open ZenChat from your home screen icon | Full native-app experience — no URL bar, no browser chrome |
Recommended workflow when using the invite link on mobile
- Tap the link → it opens in Safari/Chrome with the URL bar showing.
- The call itself works identically — full video, audio, all features.
- If you prefer no browser chrome: copy the 6-character room code from the invite, open ZenChat from your home screen icon, and enter the code manually in the Join a call section.
There is no workaround for this on iOS or Android without a native App Store app.
Troubleshooting
- Chrome/Edge: Lock icon → Site settings → Reset permissions.
- Firefox: Camera icon in address bar → Remove the block.
- Safari: Safari menu → Settings for This Website → Allow camera and microphone.
- Check your microphone is not muted (Mute button in control bar).
- Check the correct microphone is selected — open the AV panel during a call, or the Device Setup screen before joining.
- Check your system audio input is not muted.
- Check your camera is not turned off (Camera button in control bar).
- macOS/iOS: System Settings → Privacy → Camera → confirm your browser is allowed.
- Try selecting a different camera in the AV panel or Device Setup screen.
- Remote participant's video is black on your phone: refresh the page and rejoin. On iPhones and Android devices, the remote video requires the page to be fully up to date — a hard refresh (reload the tab) resolves this.
- In Brave, go to Settings → Privacy and Security → WebRTC IP Handling Policy.
- Set it to Default.
- Refresh ZenChat and rejoin.
The default Brave setting works with ZenChat. This only needs changing if it was previously set to "Disable non-proxied UDP" or a stricter option. ZenChat uses an automatic TURN relay fallback for restrictive networks, but this does not override a browser-level WebRTC block.
- Check that a camera and microphone are physically connected and not in use by another application (Zoom, Teams, FaceTime, etc.).
- On iPhone/iPad: ensure the browser (Safari or Chrome) has camera and microphone access — go to Settings → Safari → Camera / Microphone → Allow.
- On Android: Settings → Apps → Chrome → Permissions → Camera and Microphone → Allow.
- Try a hard refresh (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows/Android) then re-open ZenChat.
- If the problem persists, restart your browser — the device may have been claimed by another tab.
- Blur requires an active camera — make sure your camera is on.
- First use: the AI model (~3 MB) downloads and warms up. Wait 3–5 seconds — the loading indicator will clear and blur will activate.
- Subsequent uses: the model is cached — blur activates in under a second.
- If blur shows a toast error, try a hard refresh (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows/Android) then enable blur again.
- On older or very low-powered devices, blur may run slowly or not at all. Disabling it restores full performance for everything else.
- Blur requires a stable internet connection for the initial model download only — after that it runs entirely offline.
- Click Stats in the top bar to see packet loss and round-trip time.
- Move closer to your router or switch to a wired connection.
- Close other browser tabs and applications consuming bandwidth.
- If background blur is on, try disabling it — blur processing uses additional CPU/GPU which can affect video quality on slower connections.
- ZenChat automatically falls back to TURN relay when a direct connection cannot be established.
- Do a hard refresh: Ctrl+Shift+R (or open Firefox menu → tap the reload icon).
- Rejoin the room — it should connect immediately.
- If calls still fail, check: Firefox menu → Settings → Privacy and Security → Enhanced Tracking Protection → set to Standard (not Strict).
- If you see a briefly sideways image on rotation, wait one second — it will correct itself.
- If it does not correct after a few seconds, do a hard refresh (Ctrl+Shift+R) to load the latest version.
- Rotating back to portrait and then to landscape again will also trigger the correction.
- Confirm the room code is correct and the host is still in the call.
- Refresh the page and rejoin.
- On restricted corporate networks, ZenChat attempts TCP relay on port 3478 and TLS relay on port 5349.
rm_. Codes are not case-sensitive. If the room is full (6 slots taken), ask the host to create a new room.Privacy & Security
End-to-end encryption
All WebRTC audio, video, and data channels use DTLS-SRTP encryption. Mandatory, cannot be disabled.
No recording
ZenChat does not record calls. There is no recording infrastructure.
No accounts
No email, no password, no account. Your name is ephemeral and session-only.
No third-party servers
TURN relay and signalling run on ZenTech Solutions infrastructure only. No call data touches Google, Microsoft, Amazon, or any third-party CDN.
Peer-to-peer media
When network conditions allow, audio/video/data travels directly between browsers with no server in the media path.
Blur is fully local
The AI segmentation model runs entirely in your browser. Zero video frames are sent to any server for blur processing — not even to ZenTech servers.
No stored messages or files
Chat, files, and markup exist only in browser memory for the duration of the call.
Device preferences stored locally
Camera, mic, mirror, and blur settings are stored in your browser's local storage only — never on a server.
Supported Browsers
Internet Explorer and Opera Mini are not supported.
Screen share: Chrome, Edge, Firefox, Safari 13+ on macOS. Not available on mobile browsers (iOS/Android) due to platform restrictions.
Background blur: All listed browsers on all listed platforms. Requires WebAssembly support (all modern browsers). On very low-powered devices blur may run slowly — it can be disabled without affecting any other feature.
Note for Chrome and Firefox on iOS: Apple requires all iOS browsers to use the WebKit engine. This means Chrome and Firefox on iPhone/iPad behave identically to Safari for WebRTC and camera access.
Limits
Quick Reference
URL: https://chat.zentechsolutions.io
Max peers: 6 (automatic)
Call type: Peer-to-peer WebRTC (DTLS-SRTP encrypted)
TURN relay: chat.zentechsolutions.io:3478 (UDP/TCP), :5349 (TLS)
Accounts: None required
Recording: None
Server storage: None
Device prefs: Saved locally in browser (camera, mic, mirror, blur)
Markup undo: 20 levels per session
Blur: Client-side AI (MediaPipe Selfie Segmentation)
No server processing — fully local WebAssembly
Desktop Chrome/Firefox: GPU gaussian blur(36px)
Desktop Safari: 4-pass cascade 50%→25%→12.5%→6.25%
iPhone/iPad: 4-pass cascade 50%→25%→12.5%→3%
All platforms: feathered mask edges
Invite (lobby): Create room → Copy invite → send → Join Room → Device Setup
Invite (in-call): Copy button top-left → full invite string to clipboard
AV panel: AV button in control bar → mic/camera switch, blur, mirror live
Layout desktop: Self-strip top (3–6 people) + remote grid below
Layout tablet: Same as desktop (iPad, Android tablet)
Layout phone LS: 2-person = remote full screen + auto-PiP self (eye dismisses)
3–6 = same as portrait PiP layout
Layout phone PT: 2-person = remote top half / you bottom half
3–6 = PiP self (bottom-left) + remote grid
Self-view: Eye icon on your tile
Desktop / tablet: hides tile completely
Phone portrait 2-person: shrinks to PiP corner; eye again restores
Phone portrait 3–6: already PiP; eye hides completely
Phone landscape 2-person: auto-PiP; eye hides completely
Restore: "Show self view" chip bottom-left
Chat (desktop): 320px side panel — video and chat visible simultaneously
Chat (iPhone PT): Full-screen overlay — tap ✕ Close to return to video
Screen share: Desktop/laptop only (Chrome, Edge, Firefox, Safari 13+)
NOT available on iPhone, iPad, or Android — platform restriction
Mobile participants CAN VIEW a shared screen, just not share one
Markup: Desktop/laptop only — follows screen share restriction
Mobile participants CAN SEE markup drawn by desktop users
Install as app: Safari (iOS/iPad) or Chrome (Android) → Add to Home Screen
Link limitation: Invite links open in browser on mobile, not the installed app