Known issues
Active known issues for the Loupe public beta. If you hit one of these,
it is already on the team's list — please add reproduction details and
your macOS/iOS version to the existing
report rather than opening a duplicate.
Reporting a new issue? Email
security@theloupe.team
for anything security-related, or email
hello@theloupe.team
for general bug reports and feature requests. The
project also accepts
GitHub issues
from trusted testers (request access by emailing
hello@theloupe.team with your GitHub
username and the build version from
/healthz).
Active
iOS controller is view-only when targeting an iPhone or iPad
Apple does not allow third-party apps to inject input on iOS. This
is an Apple platform policy, not a Loupe limitation. The
iPhone → Mac and iPad → Mac directions
(the documented USP) are full control; the reverse direction is
always view-only on Apple devices.
See docs/architecture.md → Known limitations.
Single-region TURN relay (EU, Austria)
The default turn:signaling.theloupe.team:3478 is
hosted in a single EU region. Latency for clients in North America
or Asia is noticeably higher than the EU numbers reported in the
latency report, and a regional outage takes the public relay down
with it.
Self-host the relay on a $5/month VPS near your client, or wait for
the multi-region rollout tracked on the
public roadmap.
Dynamic IP at the data center causes some mail gateways to flag Loupe-sent mail as spam
The signaling host has a residential-class dynamic IP. Some
corporate spam filters score mail from that range aggressively.
The team is rolling out a static IP with reverse DNS in the next
sprint.
If your waitlist confirmation lands in spam, mark it as "not spam"
once; future sends from that address will arrive in the inbox.
Multi-monitor selection is not yet shipped
The Pro tier advertises multi-monitor selection, but the feature is
planned, not shipped. Today Loupe
mirrors the primary display of the host. A Pro user with two
external monitors will see their primary monitor on the iPhone.
Tracked on the public roadmap.
ETA: Q3 2026.
Recently resolved
The following items were marked resolved in earlier sprints and
are tracked on the
status page security
posture table and the project changelog rather than here.
If you were redirected to this page from a search result, the
current public beta has these covered:
-
Public
/healthz minimised.
The endpoint returns only
{status, uptimeSeconds, version}; the full
observability surface moved to an authenticated
/healthz/internal. Resolved in
v0.4.0+3b3ed12.
-
Legacy hostname decommission.
loupe.ddns.net and loupe.app
respond with 308 Permanent Redirect to
https://theloupe.team. See
infra/caddy/legacy-host-decommission.md.
-
README / SECURITY.md / iphone-test-acceptance.md
legacy-domain drift. Resolved; all docs now link to
docs/CURRENT-ENDPOINTS.md as the single source
of truth and use theloupe.team throughout.
-
DTLS-fingerprint pinning enforced end-to-end.
Resolved in
v0.4.0+eb62801 (Sprint 5, 2026-06-21).
The controller carries its long-lived Ed25519
publicKey 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 if the key is missing
or the pinning signature fails to verify. Behaviour change
for older TestFlight controllers: until you update to the
sprint-5 build, the host closes the input channel because no
publicKey was advertised; the screen stream
still works. Live status on the
status page.
Workarounds that help today
-
If the host DMG is blocked by Gatekeeper, drag it to
/Applications first, eject, then open from
/Applications. The notarized
LoupeHost-0.2.0.dmg should not need
"Open Anyway"; if it does, the system is on an older macOS —
macOS 13 (Ventura) or newer is required.
-
If the iOS TestFlight install fails with
"Unable to Install", the most common cause is the host
device being on iOS 15 or earlier. LoupeControllerApp requires
iOS 16+.
-
If pairing drops within the first 30 seconds, check that the host
process is not sandboxed or backgrounded — ScreenCaptureKit stops
delivering frames to backgrounded processes on macOS, which looks
like a network drop to the controller.
Last reviewed against the build running on
/healthz. The page is updated whenever an issue
flips state on the
status page.