package icon

RWR: onlooker alert

Warns you when someone behind you looks at your screen (shoulder surfing)
New in version 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.

Versions

Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.

Download F-Droid
  • Version 1.6.0 (93) suggested Added on Oct 25, 2026

    x86_64

    This version requires Android 10 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • take pictures and videos
      This app can take pictures and record videos using the camera while the app is in use.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "camera"
      Allows the app to make use of foreground services with the type "camera"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • This app can appear on top of other apps
      This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 16 MiB PGP Signature | Build Log

  • Version 1.6.0 (92) - Added on Oct 25, 2026

    arm64-v8a

    This version requires Android 10 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • take pictures and videos
      This app can take pictures and record videos using the camera while the app is in use.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "camera"
      Allows the app to make use of foreground services with the type "camera"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • This app can appear on top of other apps
      This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 14 MiB PGP Signature | Build Log

  • Version 1.6.0 (91) - Added on Oct 25, 2026

    armeabi-v7a

    This version requires Android 10 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • take pictures and videos
      This app can take pictures and record videos using the camera while the app is in use.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "camera"
      Allows the app to make use of foreground services with the type "camera"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • This app can appear on top of other apps
      This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 13 MiB PGP Signature | Build Log

  • New in version 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.
  • Version 1.5.0 (83) - Added on Oct 18, 2026

    x86_64

    This version requires Android 10 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • take pictures and videos
      This app can take pictures and record videos using the camera while the app is in use.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "camera"
      Allows the app to make use of foreground services with the type "camera"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • This app can appear on top of other apps
      This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 16 MiB PGP Signature | Build Log

  • Version 1.5.0 (82) - Added on Oct 18, 2026

    arm64-v8a

    This version requires Android 10 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • take pictures and videos
      This app can take pictures and record videos using the camera while the app is in use.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "camera"
      Allows the app to make use of foreground services with the type "camera"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • This app can appear on top of other apps
      This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 14 MiB PGP Signature | Build Log

  • Version 1.5.0 (81) - Added on Oct 18, 2026

    armeabi-v7a

    This version requires Android 10 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • take pictures and videos
      This app can take pictures and record videos using the camera while the app is in use.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "camera"
      Allows the app to make use of foreground services with the type "camera"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • This app can appear on top of other apps
      This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.
    • io.github.revocx35.rwr.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 13 MiB PGP Signature | Build Log