Phase 5 2026-06-14 Firefox Android · Landscape PiP · Auto-Orientation

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.

Access: https://chat.zentechsolutions.io
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

Background Blur, Mirror toggle, full-screen mobile preview, and persistent settings — all remembered between sessions.

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

Blur
Blur (top-left of preview)
Enable AI background blur. Your background is blurred while you remain sharp with feathered, natural edges. Processed entirely in your browser — no video sent to any server. First use downloads the AI model (~3 MB). Purple when active.
Mirror
Mirror (top-right of preview)
Flip your camera image horizontally. Useful if text or layouts look reversed. Affects your local view only — other participants always see an unmirrored image. Purple when active.

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:

📷
Camera
🎙️
Microphone
🔇
Cam/Mic state
⟺
Mirror
✦
Blur

Background Blur

Phase 5 — Background blur now works on all platforms including iPhone and iPad, with smooth feathered edges and platform-optimised rendering. No server processing — all AI runs in your browser.

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

  1. On the Device Setup screen, tap the Blur button (top-left of the camera preview).
  2. 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.
  3. 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

Two-step flow — generate the room code and share the invite before going to your camera setup. Switching to WhatsApp or iMessage to send the invite will no longer drop your connection.

Step 1 — Generate room code and invite

  1. Click Create room in the Start a call section.
  2. A 6-character room code appears instantly, along with a Copy invite button.
  3. Click Copy invite and send the invite to your participants via WhatsApp, iMessage, email, or any app.
  4. 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

  1. Return to ZenChat and click Join Room (the button changes after the code is generated).
  2. Check your camera and microphone on the Device Setup screen.
  3. 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:

  1. They land on the ZenChat login screen — the room is pre-loaded in the background.
  2. They type their name and click Enter — 1 click.
  3. They go directly to the Device Setup screen — the room code is already filled in, no lobby step needed.
  4. They click Join now — 1 click — and they're in the call.
Total: 2 clicks from link to in-call.

Joining a Call

Via invite link

  1. Tap or click the link in the invitation message.
  2. Type your name and click Enter.
  3. Check your devices on the Device Setup screen, then click Join now.

Via room code manually

  1. Get the 6-character room code from the call host.
  2. In the Join a call section, type or paste the code and click Join room.
  3. 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.

ButtonWhat it does
MuteToggle your microphone on/off. A 🔇 badge appears on your tile when muted. All participants can see who is muted.
CameraToggle your camera on/off. A 📷 badge appears when your camera is off.
AVOpen the AV panel — change microphone, switch camera, toggle blur, toggle mirror during a live call. See AV Panel for details.
ShareShare 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.
MarkupOpens the annotation toolbar — visible only during screen share. Desktop/laptop only — follows the same restriction as screen share.
ChatOpen 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.
CopyCopies a full invite (your name, join link, room code) to clipboard — send via WhatsApp, iMessage, email, etc.
LeaveLeave 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

The AV panel lets you adjust microphone, camera, blur, and mirror at any time during a live call — without hanging up.

Tap the AV button in the control bar to open the AV panel. Tap ✕ or tap outside the panel to close it.

ControlWhat 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:

  1. Takes your live camera track and feeds it into the AI segmentation pipeline.
  2. Composites each frame: sharp you on top of a blurred background, with feathered natural edges.
  3. Replaces your video track sent to all participants with the blurred canvas stream.
  4. 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.

Desktop / tablet: eye hides your tile completely.
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.

Screen Share

Screen Share is available on computers only (desktop and laptop browsers). It is not available on iPhones, iPads, or Android devices — this is a platform restriction imposed by Apple and Google, not a ZenChat limitation.

Click Share in the control bar. Your browser will show a system dialog asking what to share — a specific window, a browser tab, or your entire screen. Select what you want to share and confirm.

  • All other participants will see your screen in their tile grid — including participants joining from a phone or tablet.
  • Your camera tile moves to a picture-in-picture overlay while you are sharing.
  • Click Stop (the button turns red) to end sharing.

Only one person can share their screen at a time. If someone else starts sharing, their share will take over the main view.

Device / BrowserCan share screen?Can view a shared screen?
Desktop / Laptop — Chrome, Edge, Firefox, Safari 13+✅ Yes✅ Yes
iPhone / iPad — Safari or Chrome❌ No — platform restriction✅ Yes
Android — Chrome❌ No — platform restriction✅ Yes

Markup & Annotation

Markup & Annotation is available on computers only. Because screen sharing is not available on iPhone, iPad, or Android, the Markup button does not appear on those devices. Mobile participants can still see markup drawn by computer users in real time.

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.

  1. Start or join an active screen share.
  2. Click Markup — it turns purple. A floating toolbar appears at the top of the screen.
  3. Draw on the shared screen with your mouse or finger (touch-screen).
ControlWhat it does
Red / Blue / Yellow dotsSelect a pen colour. Active colour has a white ring around it.
EraseSwitch to eraser mode (24 px brush). Highlighted in red when active.
UndoStep back one drawing action (up to 20 levels). Greyed out when nothing to undo.
RedoRe-apply the last undone action. Greyed out when nothing to redo.
Clear allWipe the entire canvas and broadcast the clear to all participants simultaneously.
ScreenshotComposite 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

  1. Open the chat panel (click Chat).
  2. Click the paperclip icon (📎) next to the message input.
  3. 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

Install ZenChat directly from your browser. No App Store required. Opens like a native app: no URL bar, full screen, device rotation supported. The manual has a back button when opened from the home screen app.

iPhone & iPad (Safari)

  1. Open chat.zentechsolutions.io in Safari.
  2. Tap the Share button (box with arrow) at the bottom of the screen.
  3. Scroll down and tap "Add to Home Screen".
  4. Tap Add in the top-right corner.
  5. Open ZenChat from your home screen — it launches full screen with no browser chrome.

Android (Chrome)

  1. Open chat.zentechsolutions.io in Chrome.
  2. Tap the ⋮ menu (top-right).
  3. Tap "Add to Home screen" or "Install app".
  4. Tap Add.
  5. Open ZenChat from your home screen.

macOS (Chrome or Edge)

  1. Open chat.zentechsolutions.io.
  2. Click the install icon in the address bar (monitor with down-arrow), or go to the browser menu → "Install ZenChat".
  3. Click Install. ZenChat opens as a standalone window.
Why Safari on iPhone/iPad? Only Safari on iPhone/iPad supports adding web apps to the home screen as a full standalone app. Chrome on iOS can add shortcuts, but they open inside Chrome with the URL bar still visible.

Troubleshooting

"Allow camera and microphone access"
When prompted, click Allow. If you blocked it:
  • 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.
Audio is one-way or not working
  • 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.
Video is black or not showing
  • 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.
Using Brave browser — call won't connect
Brave works with ZenChat, but if you have manually restricted WebRTC, calls will fail silently at the connection stage. To fix it:
  1. In Brave, go to Settings → Privacy and Security → WebRTC IP Handling Policy.
  2. Set it to Default.
  3. 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.

No camera or microphone found
  • 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.
My preview looks mirrored / text appears backwards
Click the Mirror button (top-right corner of the camera preview) on the Device Setup screen, or in the AV panel during a call. Mirror only affects your local view — other participants are not affected.
Background blur is not working or shows a loading spinner
  • 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.
Blur edges look harsh or cut-out
The Phase 5 blur update includes feathered mask edges on all platforms. If edges still look harsh after a hard refresh, the browser may be serving a cached version of the page. Clear your browser cache or do a hard refresh (Cmd+Shift+R / Ctrl+Shift+R) to load the latest version.
Blur works on setup screen but not in-call, or vice versa
Both use the same AI model. If one works and the other doesn't, do a hard refresh (Cmd+Shift+R / Ctrl+Shift+R) — the browser may have a partially cached version of the call script. The model only needs to load once per session; once active on setup, it starts immediately when toggled in-call.
I can't see my own video tile
You may have hidden your self-view. Look for a "Show self view" chip in the bottom-left of the call screen and tap it to restore your tile. On iPhone portrait in a 2-person call, tapping your eye icon shrinks you to a PiP — tap it again to restore full tiles.
Call quality is poor
  • 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.
Firefox on Android (Samsung Galaxy or similar) — call fails to connect
Firefox for Android includes Enhanced Tracking Protection (ETP) which can block some external connection servers. ZenChat routes its initial STUN negotiation through its own server to avoid this, but if you have an older cached version the call may time out at around 18–20 seconds.
  • 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).
Camera appears sideways when I rotate my phone to landscape
ZenChat automatically detects when your camera is delivering portrait-oriented pixels into a landscape view and corrects the rotation within one second of joining the call or rotating. You do not need to do anything — it self-corrects.
  • 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.
Can't connect / stuck on "Connecting…"
  • 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.
I switched to WhatsApp to send the invite and the connection dropped
Make sure you are using the two-step lobby flow: click Create room first — a room code and Copy invite button appear in the lobby. Send the invite from there, then click Join Room to proceed to camera setup. The room is held open while you switch apps.
Room code rejected
Enter only the 6-character code without rm_. Codes are not case-sensitive. If the room is full (6 slots taken), ask the host to create a new room.
I can't see the Share or Markup button on my phone or tablet
Screen Share and Markup are not available on iPhones, iPads, or Android devices. This is a restriction imposed by Apple and Google on their mobile platforms — it is not something ZenChat can work around. To share a screen, use a desktop or laptop computer. You can still view a screen that someone on a computer is sharing, and you can see markup drawn by computer users — you just cannot initiate sharing or draw markup yourself from a mobile device.
Markup button not appearing on my computer
The Markup button is only visible when a screen share is active. Start or join an active screen share first. If it still doesn't appear, try a hard refresh (Cmd+Shift+R / Ctrl+Shift+R).
My saved device settings aren't loading
Device preferences are stored in your browser's local storage. If you cleared browser data or are on a different device, settings reset to default. Re-select your preferred camera, microphone, mirror, and blur — they'll be remembered again from that point.
The invite link opens in my browser, not the installed app
This is expected behaviour on iOS and Android. Web apps installed to the home screen cannot intercept links from other apps — only native App Store apps can. The call works fully in the browser. For the no-chrome experience, open ZenChat from your home screen icon and enter the room code manually in the Join a call section. See Invite Link Limitations for full details.
I'm using ZenChat installed on my iPhone home screen and tapped Help — how do I get back?
Tap the ← ZenChat button that appears in the top-right corner of the manual page when you're using the installed (home screen) app. This button is only visible in the installed app — in a regular browser you can use the browser's back button.

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

Chrome
90+
Full support · GPU gaussian blur
Edge
90+
Full support · GPU gaussian blur
Firefox
85+
Full support · GPU gaussian blur · Android (Samsung Galaxy) tested and supported
Safari (macOS)
14+
Full support · cascade blur
Safari (iOS/iPadOS)
14.5+
Full support incl. blur · use from home screen for best experience
Chrome (Android)
90+
Full support · GPU gaussian blur
Chrome (iOS)
90+
Full support · uses Apple WebKit engine · cannot add to home screen as standalone app
Firefox (iOS)
Any
Full support · uses Apple WebKit engine
Samsung Internet
14+
Full support · Chromium-based · default browser on Samsung Android devices
Opera
76+
Full support · Chromium-based
Brave
1.6+
Full support · if calls fail to connect, check WebRTC setting — see Troubleshooting

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

6
Max participants per room
20
Markup undo levels per session
~3 MB
Blur AI model (first use only, then cached)
Local
Device prefs stored per browser, not synced across devices
None
Persistent rooms or chat history
Auto
Room codes — randomly generated, cannot be custom
Browser
Invite links always open in browser on mobile, not the installed app

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