← About LANcams — what it is for, and how it compares.
Devices in your group send video directly to each other over WebRTC. This server only makes the introductions ("signaling") — the video never passes through it. No account, no cloud, nothing recorded.
Across networks a device cannot discover its own public address, so the site may name a STUN helper that answers "here is how your packet looked from out here". It sees one exchange of addresses, carries no media, and is not in the path the media takes.
A room groups devices by a name instead of by network, so
people in different places can share cameras — ad-hoc conferencing,
grandma's bird feeder, a job site. Join or create one from the room
tile. The name is a password: anyone who knows it can join, so use the
dice or something long. Video still flows directly between devices where
the networks allow. Names live in the link's #fragment,
which browsers never transmit, and the server is told only a
cryptographic hash of the name.
Every room is sealed unless someone deliberately unseals it.
Each frame is encrypted with a key derived from the room’s name,
and the server holds only a hash of that name, so it cannot compute the key:
anyone with the hash — a dishonest operator included — can take a seat and
receive nothing but noise. A plain link like
https://lancams.com#YourRoomName is already sealed.
The 🔐 badge shows armed until frames are actually flowing and sealed once they verifiably are — evidence, not intention. Dropped frames mean someone lacks the key or is running something too old to seal (it needs Chrome/Edge, Safari 15.4+ or Firefox 117+).
Unsealing is the expert exception. Sealing pins video to
VP8, which costs iPhones their hardware encoder — real battery and heat on a
long call. If that trade is worth it, press
☰ → Unseal this room: your link becomes
#YourRoomName&e2ee=0, everyone must rejoin through the
re-shared link or QR, the header shows 🔓 unsealed — the
one state that is never silent — and a dishonest operator could watch. There
is no automatic fallback either way: a sealed and an unsealed device in one
room see each other as black tiles, because a fallback anyone could trigger by
“not supporting encryption” would be an off-switch for
everyone.
Headless cameras follow the same rule: the agent seals by default
whenever given a room, and --no-e2ee is its unseal. LAN mode has
no room name and so no seal — it is protected differently, below.
The rail lists everyone connected — nobody is in a group invisibly. Presence is enforced by the server, not volunteered by clients: you cannot connect without being counted, and there is no "appear offline". Each chit carries a colour, a pseudonym derived from a per-group identity (the same device gets a different one in every room, so it cannot be tracked across them), and any self-chosen name, which is decoration rather than proof. Every camera tile shows how many devices watch it; which device watches which is deliberately not disclosed. The usual caveat: a malicious server could hide watchers, and the integrity audit (✓) covers the code promising this one doesn't.
Tiles pack the window edge-to-edge. Drag a tile by its ⠿ handle onto the edge of another tile to re-arrange; drag the seams between tiles to re-apportion space. Each person's tiles share a border color. The arrangement is remembered per room, per device.
The network itself. LAN mode has no room name and so no secret — the server assigns your group, on lancams.com by your public address. What it has instead is locality: your devices refuse every connection candidate that is not a local address, so video either reaches a machine physically on your network or visibly fails. A dishonest server — or another customer of your ISP sharing your public address behind a carrier-grade NAT — can appear in your list, but as a dimmed “unreachable” entry: present, inert, unable to watch or be watched. Certificate fingerprints do the rest: a tampered introduction fails, never silently intercepts.
Two honest limits. Names and presence still pass through the server; what
is protected is the video and audio. And this deliberately breaks two networks
behind one shared address (two offices behind one corporate NAT), which now
fail loudly rather than working. The answer there is a room, built for
crossing networks — or, for a self-hosted server you mean to reach across the
internet, the lanlock=0 link flag turns the lock off visibly for
that link.
Use it lawfully. You are responsible for what your cameras capture and what you send, including the recording and consent laws where you and the people on camera live. Anything illegal where you are is not allowed here, and neither is using this to harm or harass people.
The operator cannot see your video — it never reaches the server — so abuse reports cannot be checked against content. Access can still be withdrawn from groups or addresses.
Provided as-is, no warranty, no uptime promise. Do not rely on it for safety-critical monitoring or emergencies. Full terms. Running your own instance? Then you are the operator, and the terms are yours to set.
This service is free software (AGPL-3.0-or-later): source code at github.com/smurp/lancams. You can run your own copy, LAN-only or public.