圖標

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.
RWR watches through the front camera for people looking at your screen from behind (shoulder surfers). When it sees one, it:

  • 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
  • 版本 1.6.0 (93) 建議 於 2026 年 10 月 25 日新增

    x86_64

    此版本需要 Android 10 或更高的版本。

    此套件包由 F-Droid 建置和簽署,並保證與此原始碼 Tarball 保持一致。

    權限
    • 拍攝相片和影片
      這個應用程式在使用期間可以使用相機拍照及錄影。
    • 執行前景服務
      允許應用程式使用前景服務。
    • 搭配「camera」類型執行前景服務
      允許應用程式搭配「camera」類型使用前景服務
    • 擁有完整的網路存取權
      允許應用程式建立網路通訊端及使用自訂網路通訊協定。瀏覽器和其他應用程式會提供將資料傳輸到網際網路的方法,因此不需要這項權限也能將資料傳輸到網際網路。
    • 顯示通知
      允許應用程式顯示通知
    • 此應用程式可顯示在其他應用程式上方
      這個應用程式可顯示在其他應用程式上方或畫面中的其他位置。你可能會無法照常使用應用程式,且其他應用程式的顯示方式可能會受到影響。
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    下載 APK 16 MiB PGP 簽章 | 建置紀錄

  • 版本 1.6.0 (92) - 於 2026 年 10 月 25 日新增

    arm64-v8a

    此版本需要 Android 10 或更高的版本。

    此套件包由 F-Droid 建置和簽署,並保證與此原始碼 Tarball 保持一致。

    權限
    • 拍攝相片和影片
      這個應用程式在使用期間可以使用相機拍照及錄影。
    • 執行前景服務
      允許應用程式使用前景服務。
    • 搭配「camera」類型執行前景服務
      允許應用程式搭配「camera」類型使用前景服務
    • 擁有完整的網路存取權
      允許應用程式建立網路通訊端及使用自訂網路通訊協定。瀏覽器和其他應用程式會提供將資料傳輸到網際網路的方法,因此不需要這項權限也能將資料傳輸到網際網路。
    • 顯示通知
      允許應用程式顯示通知
    • 此應用程式可顯示在其他應用程式上方
      這個應用程式可顯示在其他應用程式上方或畫面中的其他位置。你可能會無法照常使用應用程式,且其他應用程式的顯示方式可能會受到影響。
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    下載 APK 14 MiB PGP 簽章 | 建置紀錄

  • 版本 1.6.0 (91) - 於 2026 年 10 月 25 日新增

    armeabi-v7a

    此版本需要 Android 10 或更高的版本。

    此套件包由 F-Droid 建置和簽署,並保證與此原始碼 Tarball 保持一致。

    權限
    • 拍攝相片和影片
      這個應用程式在使用期間可以使用相機拍照及錄影。
    • 執行前景服務
      允許應用程式使用前景服務。
    • 搭配「camera」類型執行前景服務
      允許應用程式搭配「camera」類型使用前景服務
    • 擁有完整的網路存取權
      允許應用程式建立網路通訊端及使用自訂網路通訊協定。瀏覽器和其他應用程式會提供將資料傳輸到網際網路的方法,因此不需要這項權限也能將資料傳輸到網際網路。
    • 顯示通知
      允許應用程式顯示通知
    • 此應用程式可顯示在其他應用程式上方
      這個應用程式可顯示在其他應用程式上方或畫面中的其他位置。你可能會無法照常使用應用程式,且其他應用程式的顯示方式可能會受到影響。
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    下載 APK 13 MiB PGP 簽章 | 建置紀錄

  • 新版本 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.
  • 版本 1.5.0 (83) - 於 2026 年 10 月 18 日新增

    x86_64

    此版本需要 Android 10 或更高的版本。

    此套件包由 F-Droid 建置和簽署,並保證與此原始碼 Tarball 保持一致。

    權限
    • 拍攝相片和影片
      這個應用程式在使用期間可以使用相機拍照及錄影。
    • 執行前景服務
      允許應用程式使用前景服務。
    • 搭配「camera」類型執行前景服務
      允許應用程式搭配「camera」類型使用前景服務
    • 擁有完整的網路存取權
      允許應用程式建立網路通訊端及使用自訂網路通訊協定。瀏覽器和其他應用程式會提供將資料傳輸到網際網路的方法,因此不需要這項權限也能將資料傳輸到網際網路。
    • 顯示通知
      允許應用程式顯示通知
    • 此應用程式可顯示在其他應用程式上方
      這個應用程式可顯示在其他應用程式上方或畫面中的其他位置。你可能會無法照常使用應用程式,且其他應用程式的顯示方式可能會受到影響。
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    下載 APK 16 MiB PGP 簽章 | 建置紀錄

  • 版本 1.5.0 (82) - 於 2026 年 10 月 18 日新增

    arm64-v8a

    此版本需要 Android 10 或更高的版本。

    此套件包由 F-Droid 建置和簽署,並保證與此原始碼 Tarball 保持一致。

    權限
    • 拍攝相片和影片
      這個應用程式在使用期間可以使用相機拍照及錄影。
    • 執行前景服務
      允許應用程式使用前景服務。
    • 搭配「camera」類型執行前景服務
      允許應用程式搭配「camera」類型使用前景服務
    • 擁有完整的網路存取權
      允許應用程式建立網路通訊端及使用自訂網路通訊協定。瀏覽器和其他應用程式會提供將資料傳輸到網際網路的方法,因此不需要這項權限也能將資料傳輸到網際網路。
    • 顯示通知
      允許應用程式顯示通知
    • 此應用程式可顯示在其他應用程式上方
      這個應用程式可顯示在其他應用程式上方或畫面中的其他位置。你可能會無法照常使用應用程式,且其他應用程式的顯示方式可能會受到影響。
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    下載 APK 14 MiB PGP 簽章 | 建置紀錄

  • 版本 1.5.0 (81) - 於 2026 年 10 月 18 日新增

    armeabi-v7a

    此版本需要 Android 10 或更高的版本。

    此套件包由 F-Droid 建置和簽署,並保證與此原始碼 Tarball 保持一致。

    權限
    • 拍攝相片和影片
      這個應用程式在使用期間可以使用相機拍照及錄影。
    • 執行前景服務
      允許應用程式使用前景服務。
    • 搭配「camera」類型執行前景服務
      允許應用程式搭配「camera」類型使用前景服務
    • 擁有完整的網路存取權
      允許應用程式建立網路通訊端及使用自訂網路通訊協定。瀏覽器和其他應用程式會提供將資料傳輸到網際網路的方法,因此不需要這項權限也能將資料傳輸到網際網路。
    • 顯示通知
      允許應用程式顯示通知
    • 此應用程式可顯示在其他應用程式上方
      這個應用程式可顯示在其他應用程式上方或畫面中的其他位置。你可能會無法照常使用應用程式,且其他應用程式的顯示方式可能會受到影響。
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    下載 APK 13 MiB PGP 簽章 | 建置紀錄