RWR: onlooker alert
Warns you when someone behind you looks at your screen (shoulder surfing)
新版本 1.6.0
1.6.0: servers behind authentik.
- If your RWR server sits behind authentik forward auth (e.g. Nginx Proxy Manager + authentik), RWR now signs in with authentik in the browser (OAuth 2 + PKCE) and keeps working in the background. Setup: docs/authentik.md.
- If your RWR server sits behind authentik forward auth (e.g. Nginx Proxy Manager + authentik), RWR now signs in with authentik in the browser (OAuth 2 + PKCE) and keeps working in the background. Setup: docs/authentik.md.
RWR watches through the front camera for people looking at your screen from behind (shoulder surfers). When it sees one, it:
It runs in the background and can be switched on and off from the Quick Settings panel.
Detection
Private by design
Requires Android 10 or newer and a front camera. The pop-up needs the "Display over other apps" permission.
- pops up a card over whatever app you are using with a snapshot of the onlooker (boxed in red, with "laser eyes" showing where they look),
- posts a notification,
- saves a photo or a short video clip (for example 10 s before to 10 s after) to your gallery, and optionally to your own Immich server.
It runs in the background and can be switched on and off from the Quick Settings panel.
Detection
- Head tracking: a face turned toward the screen counts as looking. Lightest on battery.
- Eye tracking: follows the irises and combines them with head pose, so it alerts only when the eyes point at the screen.
- Your own face is recognised and ignored, and faces too far away to read the screen don't count.
- A debug view shows live what the detector sees and why each face counts or not.
Private by design
- Detection runs on the phone, offline, with bundled open-source models (YuNet and MediaPipe Face Landmarker). No analytics, no ads, no accounts.
- Nothing leaves the phone unless you pair it with your own RWR server (Docker, open source, in the same repository). Then frames go only to your server, over TLS: detection runs there at full frame rate without draining your battery, and snapshots can be uploaded to Immich.
- The camera is always off while the screen is off. Android shows its camera indicator while RWR is watching.
Requires Android 10 or newer and a front camera. The pop-up needs the "Display over other apps" permission.
捐赠
版本
尽管下面提供了 APK 安装包的下载选项,但你应该注意,以这种方式安装将不会收到更新通知,这是一种不太安全的下载方式。 我们建议你安装使用 F-Droid 客户端。
下载 F-Droid-
x86_64该版本需要 Android 10 及以上版本。
此安装包由 F-Droid 构建并签名,且保证与此源代码 tarball 保持一致。
-
arm64-v8a该版本需要 Android 10 及以上版本。
此安装包由 F-Droid 构建并签名,且保证与此源代码 tarball 保持一致。
-
armeabi-v7a该版本需要 Android 10 及以上版本。
此安装包由 F-Droid 构建并签名,且保证与此源代码 tarball 保持一致。
-
x86_64该版本需要 Android 10 及以上版本。
此安装包由 F-Droid 构建并签名,且保证与此源代码 tarball 保持一致。
-
arm64-v8a该版本需要 Android 10 及以上版本。
此安装包由 F-Droid 构建并签名,且保证与此源代码 tarball 保持一致。
-
armeabi-v7a该版本需要 Android 10 及以上版本。
此安装包由 F-Droid 构建并签名,且保证与此源代码 tarball 保持一致。
新版本 1.5.0
First F-Droid release (1.5.0).
- Face detection now uses the open-source YuNet detector (same as the RWR server) instead of Google ML Kit: about half the CPU, and good at small faces.
- MediaPipe's usage-statistics client can no longer send anything: its Google telemetry transport is replaced by a do-nothing stand-in.
- Fewer false alerts: far-away faces never count, every candidate face is verified, an onlooker must stay half a second.
- Face detection now uses the open-source YuNet detector (same as the RWR server) instead of Google ML Kit: about half the CPU, and good at small faces.
- MediaPipe's usage-statistics client can no longer send anything: its Google telemetry transport is replaced by a do-nothing stand-in.
- Fewer false alerts: far-away faces never count, every candidate face is verified, an onlooker must stay half a second.


