Status · Live build identity

Current status.

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.

Signaling server

URL
https://theloupe.team/healthz
WebSocket
wss://signaling.theloupe.team/ws
STUN/TURN
signaling.theloupe.team:3478 UDP/TCP
Build version
v0.4.0+<build-sha>
Uptime
live
Last checked
just now

Status: live

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 Host

Latest stable
v0.2.0 (notarised, Developer-ID)
Download
github.com/bigbadboy1010/loupe/releases
Supported macOS
macOS 13 (Ventura) or newer
Required permissions
Screen Recording, Accessibility
Onboarding
Built-in SwiftUI wizard (sprint 7) — explains both permissions step-by-step and auto-detects when each is granted

Status: Public Beta

iOS / iPadOS Controller

Latest build
v3.10.0-controllers · build 1.0.0
Distribution
TestFlight (public beta) · iOS 16 or newer · App Store release after the public beta stabilises.
Supported iOS
iOS 16 or newer

Status: Public Beta (TestFlight)

Known issues

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.
Vulnerability disclosure channel enforced manual security@theloupe.team; PGP key in SECURITY.md.

Roadmap

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:

View CI runs on GitHub →

Security disclosures

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.