A Lurk product for Android

LurkGuard

A private Phone and SMS client built around a simple commitment: when you block a contact, changing that decision can require verification and a real waiting period.

Android 11+Private sideloadSMS/MMSReleased Sep 20, 2026
LurkGuard neon blue shieldGUARD THE DECISION
The interface

Phone and messages without the clutter

Android 17 VM screenshots from the same 2.9 release offered below.

LurkGuard Phone screen with call history and always-open dialpad
Phone · searchable history and always-open dialpad
LurkGuard Messages conversation list
Messages · compact SMS/MMS conversations
LurkGuard Settings screen
Settings · Blacklist, sounds, Controller, and permissions
Capabilities

A communication app with deliberate friction

01

Focused Phone + SMS

A compact neon-blue dialer, call history, SMS/MMS inbox, search, contact suggestions, message deletion with Undo, and Android or custom notification sounds.

02

Commitment blacklist

Block incoming cellular calls and SMS/MMS for selected numbers. An unblock request requires biometric verification plus the Blacklist PIN, then waits 90 device-on days.

03

Fast re-blocking

Cancel a pending unblock and keep the contact blocked with the Blacklist PIN. A later request starts a fresh waiting period.

04

Optional hardening

The separate Controller can protect LurkGuard from uninstall, clear-data, force-stop, and default-app changes when it is enrolled as Android Device Owner.

05

Private by design

Blacklist state, PIN material, messages, and call history stay on the device. LurkGuard has no hosted message or blacklist backend.

06

Writing assistance

An optional Gemini writing area can use selected-message context and insert a suggestion into a draft. It requires your own Gemini Developer API key.

LurkGuard supports carrier SMS/MMS and cellular calls. It does not support RCS, Google spam screening, visual voicemail, or Internet-app blocking.

Verified downloads

Choose the level of protection

Both release APKs are non-debuggable. Verify the SHA-256 value before installing.

Version 2.9 · Android 11+

LurkGuard

The Phone, SMS/MMS, Blacklist, sounds, and writing-assistant application.

Download APK
SHA-256eb71cf122e247df7882b9ded678ca6625157356bc760a83b43a373d9240b87df
Version 1.1 · Android 14+

LurkGuard Controller

Optional Device Owner policy app for uninstall and settings protection. A normal sideload is intentionally inert.

Download APK
SHA-256d4bada3d0c13b43464b00c9c5ffca745963108b1620ed29958c98855d6946202
Download SHA256SUMS.txt
Installation

Sideload normally or enroll the protected setup

Standard installation

No reset required

  1. Download LurkGuard 2.9 and verify its SHA-256 checksum.
  2. Allow your browser or file manager to install unknown apps, then open the APK.
  3. Open LurkGuard → Settings → App setup & permissions.
  4. Grant the requested permissions and select LurkGuard as the default Phone and SMS app.
  5. Keep RCS disabled in Google Messages while LurkGuard is the SMS default.

The Controller can also be installed normally, but it cannot enforce policy without Device Owner enrollment.

Protected installation

Factory reset and Device Owner enrollment required

  1. Back up the phone, Authenticator entries, and independent account recovery methods before erasing anything.
  2. Factory-reset, finish minimal setup without adding a Google account, then enable USB debugging.
  3. Install the Controller from a trusted PC and enroll it before adding any account.
  4. Install LurkGuard, assign Phone/SMS defaults, then create the Controller PIN and activate protection.
  5. Add the Google account and restore data only after Device Owner status is confirmed.
adb install LurkGuard-Controller-1.1.apk
adb shell dpm set-device-owner local.lurkguard.controller/local.lurkguard.controller.AdminReceiver
adb shell dpm list-owners
adb install LurkGuard-2.9.apk
Read before enrolling: the Controller's 90-day period counts device-on time. After it releases LurkGuard, the Controller remains Device Owner. Returning the phone to an unmanaged state requires another factory reset.
Release notes

How LurkGuard reached 2.9

2.9Current

Moves Blacklist, sound controls, app setup, Controller access, and Contacts into a Google Phone-inspired Settings screen. The main navigation now focuses on Phone and Messages.

2.8Dialer refinement

Keeps dialed numbers prominent while rendering ABC/DEF letter groups smaller and muted.

2.7Phone redesign

Introduces the always-open Android-style dialpad and modern in-call controls.

2.5–2.6Calls and sound

Adds ringtone/message tone selection, custom audio files, and a full-screen active-call interface.

2.4Messages

Adds swipe-to-delete, instant removal animation, five-second Undo, and the optional Gemini writing workspace.

2.3Controller integration

Adds the two-app Device Owner design and 90-device-on-day removal request flow.

Maintainers

Build and deploy on Render

Render locally

npm ci
npm run build
npm start
# Open http://localhost:8080/lurkguard

Deployment behavior

This repository's render.yaml sets autoDeploy: true and builds the Next.js static export before starting the Express server. A push to the connected production branch triggers a new deploy automatically.

You do not need to press Manual Deploy after a successful automatic build. Use Render's Manual Deploy → Deploy latest commit only when auto-deploy is disabled, cancelled, or failed before the new commit was published.

View source on GitHub