beam

Security & protocol

Everything beam does, stated precisely — including the parts that favor honesty over marketing. The deployed code is open source at github.com/benkimz/beam; every claim on this page can be checked against it.

Threat model, in one paragraph

beam is designed so that a fully compromised beam server — or an honest one under legal compulsion — cannot read your secrets and cannot read files sent over a direct beam, because it never possesses the plaintext or the keys. What the server can see is metadata: that a session existed, connection-setup messages (which include participant IP addresses), and, in one specific fallback case described below, temporary file contents. beam does not defend against a compromised device, a malicious browser extension, or someone who obtains your one-time link before the recipient opens it. Possession of a link or code is the capability — there are no accounts to check against.

Pairing & signaling protocol

WebRTC configuration — exactly

The relay fallback — what the server sees

When a direct connection cannot be established within ~15 seconds (symmetric NATs, strict corporate networks), beam offers a store-and-forward fallback for files up to 7 MB. Full honesty about this path:

Private chat

Secrets — the exact cryptography

What the server stores, and for how long

DataContentsRetention
Sessionscode, timestamps, guest count, ended flag≤ 15 minutes
Signaling messagesSDP / ICE (includes IPs), control notices≤ 15 minutes
Relay filesfile bytes (cleartext), filename, sizeuntil pickup; ≤ 15 minutes
Secretsciphertext, random id, expiryuntil read; ≤ chosen TTL (max 7 days)
Usage countersone integer per metric per day (page_view, beam_created, beam_joined, chat_created, chat_joined, secret_created, secret_read, relay_upload)indefinite (aggregate only)

Deletion is enforced by opportunistic garbage collection on incoming requests rather than a scheduled job, so precise deletion time can lag TTL by a short, traffic-dependent interval.

Application logging: beam's own code writes no logs — no IPs, no user agents, no per-user records of any kind. The usage counters above are the entirety of application-level analytics; there are no cookies and no third-party scripts (fonts are the single external resource, loaded from Google Fonts).

Web-server logging: beam runs on ordinary shared hosting (LiteSpeed). Like virtually every web host, the platform keeps standard HTTP access logs (IP, URL path, timestamp, user agent) under the hosting provider's own rotation policy. URL paths do not contain codes, ids, or keys — session traffic is JSON POST bodies, which access logs do not capture, and secret keys live in fragments, which browsers never send at all.

Code transparency

The complete source — this page included — is at github.com/benkimz/beam under the MIT license. There is no build step: the files in the repository are byte-for-byte the files this site serves, so you can diff production against the repo directly. A machine-readable API description lives at /api/openapi.json and an agent-oriented guide at /llms.txt.

Vulnerability disclosure policy

Security reports are genuinely welcome — this is a small independent project and fresh eyes are its best audit.

Last updated 21 July 2026 · matches the deployed code as of that date. If this page and the code ever disagree, the code is the truth and the discrepancy is a bug — please report it.