← About LANcams — what it is for, and how it compares.
Devices in your group send video directly to each other using WebRTC, the same technology as video calls. This server only makes the introductions ("signaling") — the video itself streams device-to-device and never passes through the server. No account, no cloud, nothing is recorded anywhere.
Across different networks a device cannot discover its own public address, so this 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 video or audio, 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. A room name is a password: anyone who knows it can join, so use
the dice generator or something long. Video in a room still flows
directly between devices where the networks allow it. Room names live
in the link's #fragment, which browsers never transmit —
and this server is only ever told a cryptographic hash of the name,
never the name itself.
Every room is sealed unless someone deliberately unseals it.
A sealed room encrypts every frame of video and audio with a key derived from
the room’s name. The server only ever holds a hash of the name,
so it cannot compute the key: anyone who obtained the hash — including a
dishonest operator — can occupy a seat and receive nothing but noise. A plain
room link like https://lancams.com#YourRoomName is already
sealed; there is nothing to add.
The 🔐 badge in the header shows armed until frames are actually flowing and sealed once they verifiably are — it reports evidence, not intention. If it reports dropped frames, someone in the room does not hold 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
the VP8 codec, which costs iPhones their hardware encoder — on a long-lived
phone connection that is real battery and heat. If that trade is worth it,
press ☰ → Unseal this room: your link becomes
#YourRoomName&e2ee=0, and everyone else must rejoin through
the re-shared link or QR (the flag travels with it). The header then shows
🔓 unsealed — the one state that is never silent —
and a dishonest operator could watch. There is no automatic fallback in
either direction: a sealed device and an unsealed device in one room see
each other as black tiles, because a fallback anyone can trigger by
“not supporting encryption” would be an off-switch for everyone.
Headless cameras follow the same rule: the agent seals by default whenever
it is given a room, and --no-e2ee is its unseal. LAN mode has no
room name and so no seal — it is protected differently; see the LAN section
above.
The room tile 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 chip shows a server-assigned color, a pseudonym derived from a per-group identity (the same device gets a different pseudonym in every group, so devices can't be tracked across rooms), and — if its owner set one — a self-chosen name, which is decoration, not proof. Every camera tile shows how many devices are watching it; which device watches which camera is deliberately not disclosed. Caveat, same as everywhere: a malicious server could hide watchers — the integrity audit (✓) covers the code that promises 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. In LAN mode there is no room name, so there is no secret — the server assigns your group (on lancams.com, by your public address). What LAN mode has instead is locality: your devices refuse every connection candidate that is not a local address, so video either flows to a machine physically on your network or visibly fails. A dishonest server — or, behind a carrier-grade NAT, another customer of your ISP sharing your public address — can appear in your list, but shows as a dimmed “unreachable” entry: present, inert, unable to watch or be watched. Certificate fingerprints do the rest — tampered introductions produce a failed connection, never a silent interception.
Two honest limits. First, names and presence still pass through the server;
what is protected is the video and audio. Second, this deliberately breaks the
unusual case of two networks behind one shared address (two offices behind one
corporate NAT): those now fail loudly instead of working. The answer there is
a room, which is built for crossing networks — or, for a self-hosted
server you deliberately reach across the internet, the
lanlock=0 link flag turns the lock off, visibly, for that link.
#YourRoomName) in both cases.Use it lawfully. You're responsible for what your cameras capture and what you send through this service, 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 can't see your video — it never reaches the server — so abuse reports can't be checked against content. Access can still be withdrawn from groups or addresses.
Provided as-is, with no warranty and no uptime promise. Don't rely on it for safety-critical monitoring or emergencies. Full terms. Running your own instance? Then you're 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.