chat.june.kim

What I store

Nothing.

Messages exist in server process memory while the room is active. When the last person leaves, the process terminates and the memory is freed. There is no database, no log file, no message archive, no analytics, no telemetry on message content.

What I log

Process start/stop counts. Error classes without message content. Rate-limit counters. No message text, no nicknames, no IP-to-room correlation, no chat content in any log.

What I can't prevent

Anyone in the room can copy, screenshot, or record what they see. Bots that join can retain conversation externally. Network intermediaries can observe traffic. Browser extensions can read the page. Messages are plaintext in server memory while the room is alive.

Voice

Voice audio is peer-to-peer via WebRTC. Audio goes directly between browsers. It never passes through or is stored on the server. The server relays only the connection handshake (SDP offers and ICE candidates), which contain no audio data.

Identity

No accounts. No email. No phone number. No OAuth. Your browser generates a local keypair on first visit, stored in localStorage. You can clear it at any time. The server does not store it persistently.

Moderation

The room creator receives a capability URL. Whoever has that URL can kick, lock, mute, or end the room. There is no admin panel, no role system, no moderation log. The capability token is hashed in memory; the raw value is shown once and never stored.

Third parties

No analytics scripts. No third-party cookies. No CDN for user content. No ad network. No tracking pixels. The only external request is to Google's STUN server for WebRTC connection setup.

Code

The server is open source under AGPL-3.0. You can read every line of what runs on this server at github.com/kimjune01/hangout.

Operator

This instance is operated by June Kim. Questions: hey@june.kim.

Last updated April 2026.