Kibitz

← The Kibitz Engine · deep dive

Kibitz Threat Model

What Kibitz protects, what it doesn't, and who can see what. Honest by design.

Companions: architecture.md (the planes), verification.md (admission security).


1. Assets

2. The trust model

Component What it is What it can see
Media plane full WebRTC mesh, DTLS-SRTP nothing in the clear leaves the browsers; no media server
Data plane peer-to-peer DTLS data mesh content goes browser→browser; no participant relays it
Signaling broker signal.kibitz.chat (stateless) presence metadata only — connection events, room ids, ephemeral peer ids; not content
TURN relay Cloudflare Realtime (when direct fails) encrypted packets + IPs; cannot decrypt the call
Room authority a participant's browser room content it's granted (it's in the room) + coordinates presence/gate + distributes the capability grant map

The headline property: there is no server that can decode or record a call. Content is E2E-encrypted between browsers; the edge helpers are content-blind. There is nothing central to subpoena, record, or shut down mid-call.

3. What is protected

4. What is not protected (scope boundaries)

These are inherent to a P2P, in-room model — stated plainly:

5. Admission attacks (and why they fail)

Detailed in verification.md §6. Summary:

6. Agent-specific surface

7. The email-OTP exception

The one verification method that needs a backend (verification.md §4.5) sees join metadata (which email asked to join which room) — a privacy cost the other methods avoid. It does not see call content. Use it only when proving email control without a third-party IdP is worth that trade.

8. Operator posture

The project is operated pseudonymously and holds no call content, accounts, or recordings — by construction, not policy. The legal/privacy surface is therefore minimal: the only data that touches infrastructure is ephemeral presence metadata and (optionally) TURN-relayed encrypted packets.