Live build identity for every component, known issues, and the date of the last
end-to-end test. The /healthz endpoint above is the source of truth;
this page is the human-readable mirror.
Live session, peer, and waitlist counters are intentionally not
shown here. They live on the operator-only
/healthz/internal endpoint, authenticated with the
same admin token that gates the waitlist admin UI. See
docs/CURRENT-ENDPOINTS.md for the rationale.
macOS → iOS is view-only. Apple does not allow third-party apps to
inject input on iOS. This is a platform policy, not a Loupe limitation. See
architecture docs.
Multi-monitor is on the roadmap but not yet shipped. ETA: see
roadmap below.
TURN relay is single-region (EU, Austria). Self-host or wait for
multi-region if you need HA outside Europe. Multi-region rollout is on the
roadmap.
Dynamic IP at the data center means some corporate mail gateways
occasionally mark Loupe-sent mail as spam. We're investigating a static-IP
upgrade in the next sprint.
Security posture, live.
Every defence listed in the
Security model
section of the README is checked here. Maturity levels follow the same
definitions as the README (implemented means the code
ships in the current build and runs on real connections;
enforced means it rejects attack input by default, not
just logs it; tested means an automated test covers
the exact behaviour).
Defence
Maturity
Tested
Notes
DTLS-SRTP transport encryption
enforced
yes
libwebrtc default; spec-mandated.
WSS over Let's Encrypt
enforced
yes
wss://signaling.theloupe.team/ws; Caddy + LE.
TURN credentials rotate (per session)
enforced
yes
No shared long-term secret on the wire.
Pairing-token TOFU + key pinning
enforced
yes
UserDefaultsTrustStore; pinned on first scan.
DTLS-fingerprint pinning (ADR-003)
enforced
yes
Sprint 5 (2026-06-21): end-to-end enforced.
The controller's long-lived Ed25519 publicKey travels on the
signaling join message, the server relays it on
peer-joined, and the host installs it via
WebRTCPeerConnection.setPeerPublicKey(base64URL:)
before ICE reaches connected. Strict-mode
enforcement closes the input channel when the key is missing
or a pinning message fails to verify, so a MITM injecting
its own DTLS certificate is rejected rather than just logged.
Host code-signing + notarisation
enforced
yes
Developer ID + Apple notarisation ticket.
Privacy: server sees SDP/ICE only
designed
no
The signaling server only relays opaque blobs; no video frames
or input events traverse it.
Maturity axis: shipped means
available to every Public-Beta user today,
beta means available to a
subset of testers and stable enough to turn on by default,
planned means scoped and
scheduled but the code does not exist yet, and
not started means
acknowledged but not yet scoped.
Milestone
Status
Target
Public Beta (TestFlight + notarised host)
shipped
Q3 2026
Multi-monitor selection (Sprint 18)
shipped
Q3 2026 · Pro tier first
Persistent pairing + remote-revoke (Sprint 17)
not started
Q3 2026
App Store listing (Sprint 19)
planned
After Public Beta stabilises
Crash/Diagnostics opt-in (Sprint 23)
planned
Q4 2026
Multi-region TURN (EU + US)
planned
Q4 2026
Apple-Silicon-native build for iOS controller
planned
Q4 2026
status.theloupe.team with history (Sprint 22)
planned
Q4 2026
SBOM + dependency audit in CI (Sprint 21)
planned
Q4 2026
Demo video on landing page (Sprint 13.1F)
not started
Q3 2026
End-to-end tests
Every release candidate runs the iPhone end-to-end acceptance suite described in
docs/iphone-test-acceptance.md.
CI runs the signaling smoke tests on every push to main:
Found a vulnerability? Please email
security@theloupe.team
rather than opening a public issue. See the full policy in our
SECURITY.md, including the PGP key and our response timeline.
Legacy hosts
The previous public hostname, loupe.ddns.net, was
decommissioned on 21 June 2026 during the cutover
to theloupe.team. The DNS A record was removed at the
registrar; if you still see it resolve, that is resolver or
search-engine cache, not a live server. Clients on the v0.3 line
must upgrade to v0.4 or later. The canonical public endpoints and
distribution channels are documented in the repo at
docs/CURRENT-ENDPOINTS.md.