Skip to content

Android-first · Open source

The last location is the one that matters.

Beacon keeps an offline breadcrumb trail, accepts remote commands, and tells you the truth about what Android will and will not allow. No ad SDKs. No map bill. No mystery backend.

Self-host on Vercel + NeonAGPL-3.0Pair in under a minute
FP

Field phone

Pixel 9a · Android 16

Live
accuracy ±8 m

Last fix

12 s ago · fused

+−

© OpenStreetMap · OpenFreeMap

Battery

62%

Network

LTE

Geofence

Inside

Home perimeter

250 m radius · entered 14:12

Actions

Alarm
Lock
Photo
Notify

Queue synced · 48 points

Argon2id

Password hashing

AES-256-GCM

Encrypted fields

200

Points per offline sync

90 days

Default retention

Capabilities

Built for the gap between losing a phone and finding it.

Consumer finders optimise for a phone that is online, charged and behaving. Beacon is designed around the other case: no signal, low battery, a removed SIM, and a decision you need to make quickly.

01

Offline breadcrumbs

Points are written to an encrypted SQLite queue first. When the network returns, up to 200 points sync in one request — deduplicated by client id, never reordered.

02

Remote actions

Locate, ring, lock, enter lost mode, show a message or force a sync. Commands are queued, authenticated per device, and expire if they are no longer useful.

03

Geofences

Arrival and departure checks run server-side against every accepted fix, so a missed push notification does not become a missed alert.

04

Presence signal

Battery, charging state, network type and SIM state arrive with each heartbeat. Stale and offline are distinct states, not one vague grey dot.

05

Email that fails over

Relay first, Resend second — or the reverse. Set a per-account priority, see recent delivery attempts, and never lose an alert because one provider is down.

06

Evidence, not guesses

Every fix keeps accuracy, provider, timestamp and a mocked-location flag. Export the full account as JSON and preserve the trail if you need it later.

Lost mode

A phone in lost mode should get louder, not smarter.

One command starts a predictable sequence: alarm, lock screen, higher fix cadence, queue protection. Nothing clever happens in the background. You can see every state on the dashboard.

01

Trigger from anywhere

Send lost mode from the dashboard or another signed-in session.

02

Make it audible

The device raises a full-volume alarm and shows the lost screen.

03

Tighten the fix cadence

A foreground service increases location frequency while the mode is active.

04

Keep the trail

If signal disappears, the queue holds. The last known fix stays visible.

Lost mode · active

00:14:32

Field phone

Alarm sounding

Last fix 42 s ago · ±6 m · 62% battery

Full-volume alarmActive
Screen lockAdmin permission granted
Location cadenceEvery 60 seconds
Offline queue142 points stored
Photo requestAwaiting foreground
SIM stateChanged at 14:02

Android restricts background camera access and SIM monitoring. Beacon reports what it could and could not do instead of showing a green checkmark that means nothing.

Maps

Vector maps. No billing dashboard.

Beacon renders OpenFreeMap styles with MapLibre GL. There is no API key to leak, no per-load invoice, and no phone-home map SDK embedded in the dashboard. When you want turn-by-turn directions, one link opens the coordinates in Google Maps.

OpenFreeMapMapLibre GLOpenStreetMap dataNo API key
About OpenFreeMap
map-style.env
# Light — Positron
NEXT_PUBLIC_MAP_STYLE_LIGHT=
  https://tiles.openfreemap.org/styles/positron

# Dark — Dark Matter
NEXT_PUBLIC_MAP_STYLE_DARK=
  https://tiles.openfreemap.org/styles/dark

Tile provider

OpenFreeMap

Renderer

MapLibre GL JS

Directions

Google Maps link

API key

Not required

Android app

Native, battery-aware, honest about limits.

A Kotlin and Jetpack Compose client uses WorkManager for the baseline and a foreground service for live and lost mode. The tracking profile is a real setting, not a marketing toggle.

Fused location

Balanced by default

Encrypted queue

Survives offline

Low-power path

Doze-aware scheduling

Photo request

Foreground only

Android 8.0+ · No Play Services required

9:41LTE · 62%
Lost mode

Field phone

Updated 12 s ago · ±8 m

Device queue

142

Encrypted

Locate
Alarm
Sync

Security posture

Assume the server will be attacked. Design for it.

Beacon treats location history as sensitive by default. Sessions are opaque and hashed. Sensitive columns are encrypted with context-bound AES-GCM. Device tokens are scoped, hashed and revocable. Every privileged action is written to an audit log.

Argon2id password hashing

Opaque, hashed session tokens

AES-256-GCM field encryption

Per-device bearer tokens

TOTP, email OTP and recovery codes

Rate limits and lockouts

Audit log for sensitive actions

Strict CSP and origin checks

Open source · AGPL-3.0-or-later

No third-party analytics. Ever.

Questions

Straight answers.

If something here is not true of the deployed version, it is a bug in the documentation. The repository is the source of truth.

Does Beacon replace Android's Find My Device?

No. Find My Device is the fastest option when a phone is online and signed into Google. Beacon is for the cases where you want your own data, longer history, offline queues, geofences and a server you control. Run both if you like.

What happens when the phone is offline?

Fixes are stored locally in an encrypted queue and uploaded when connectivity returns. The dashboard keeps showing the last received fix, clearly labelled with its age, instead of pretending the location is current.

Can Beacon take a photo remotely?

It can request one, but Android only permits camera access while the app is in the foreground. Beacon reports the result honestly. It does not pretend to be spyware and cannot capture silently from the background.

Why Android first?

Android exposes the background location, telephony and device-management APIs this design depends on. A Windows client is planned. iOS would require a materially different background model, so it is not promised.

Where does location data live?

In the Postgres database you configure. There is no Beacon-operated cloud and no analytics SDK. Map tiles are fetched from OpenFreeMap; Google Maps opens only when you choose to follow a link.

Can I self-host it?

Yes. The web app targets Vercel's free tier and any Postgres provider — Neon is the documented default. The Android app is built locally with Android Studio or Gradle. Deployment and build guides are in the repository.

Keep the last known location. And the proof.

Create an account, pair an Android device, and decide how much history you want to keep. Bring your own infrastructure.

Free to self-host · No credit card · No tracking pixels

Beacon — device location for the worst day