Twin - Lens edge video runtime. RTSP/ONVIF cameras, motion recording, WebRTC. One per camera.
1.4K
Twin is the on-premises component of the Lens camera stack by Chirp Wireless. One Twin runs per camera, next to it on your network. It connects to the camera over RTSP or ONVIF, records motion-zone or continuous video, streams live over WebRTC, and pairs with Lens for remote management and cloud storage.
linux/amd64, linux/arm64 (x86 servers and mini PCs, Raspberry Pi 4/5, Apple-silicon Docker Desktop)docker run -d --name mycamera --restart=always \
-p 80:80 \
-e TWIN_USERNAME=admin \
-e TWIN_PASSWORD='choose-a-strong-password' \
-v $(pwd)/twin/config:/home/twin/data/config \
-v $(pwd)/twin/recordings:/home/twin/data/recordings \
chirpiot/lens-twin:1.0.0
Then open http://localhost/ and sign in with the credentials you set.
--network=host).A fresh Twin records nothing until you enable recording in its settings.
| Variable | Purpose |
|---|---|
TWIN_USERNAME / TWIN_PASSWORD | First-start login for the web UI. Required — the Twin refuses to start without them. Changing them later in the UI is fine. |
TWIN_TIMEZONE | Timezone for recording timestamps (defaults to the host's). |
TWIN_PUBLIC_URL | URL under which this Twin is reachable, if not http://<host>/. |
Everything else — camera source, recording mode, motion zones, timetable — is set in the web UI and persisted in the mounted config directory. The full variable list is in the product documentation.
| Path | Contents |
|---|---|
/home/twin/data/config | config.json, the Twin Key, signing keys, the paired Lens identity. Back this up. |
/home/twin/data/recordings | Recorded clips. Size it for your retention. |
1.0.0 — a specific release. Pin one of these in production.1.0, 1 — newest patch / minor of that line.latest — the newest release. Fine for trying Twin out, not for a site you rely on.Each release is also a v1.0.0 tag in the source repository; the image labels org.opencontainers.image.version and org.opencontainers.image.revision identify the build.
ONVIF discovery uses UDP multicast, which does not cross the default Docker bridge. To scan for cameras, run the Twin with --network=host or a macvlan network; otherwise enter the camera's ONVIF address by hand. Live streaming uses WebRTC and reaches the browser directly or via the TURN relay Lens provides.
Twin is proprietary software, all rights reserved. The image bundles open-source components; their notices are shipped at /home/twin/THIRD-PARTY-NOTICES and printed by docker run --rm chirpiot/lens-twin:1.0.0 ./main -action licenses.
Content type
Image
Digest
sha256:b812f5f73…
Size
121.9 MB
Last updated
2 days ago
docker pull chirpiot/lens-twin