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
Coordinator a participant's browser (migratory) room content it's granted (it's in the room) + coordinates presence/gate + distributes the capability grant map. No discretionary powers — it relays signaling and host commands, it doesn't author them.
Host (admin) a peer that proves the room's host credential may lock/kick/admit. Its mod commands are signed, room-bound, cert-bound, and fresh (hostKey.ts), so even a malicious coordinator can't forge them. An open room has no host at all.

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.

Note the coordinator/host split. The coordinator is positional, migratory plumbing — it holds the room id, keeps the roster, runs presence ping/reap, and relays signaling; it has no moderation powers of its own. The host is a verified peer who holds a discretionary credential (see §4). This decoupling is deliberate: it stops a stranger who happens to become coordinator from seizing moderation, and it means bans don't vanish when the coordinator role migrates.

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.