Know your neighborhood's RF. Keep your family safer.
MyGLE is a community-built Android app that turns your phone into a local RF sensor — WiFi, Bluetooth, cellular, GNSS, and drone RemoteID. Capture observations where you live, work, and travel; understand what's around you; flag the things you didn't invite.
Build it yourself Say helloWhat it does
MyGLE is a fork of the excellent WiGLE WiFi Wardriving app with an additional publisher that ships the phone's observations to your own TLS-encrypted MQTT broker. From there, a sibling server-side project decodes and stores the data — the phone is the sensor, the server is the brain.
WiFi
Every nearby access point, its channel, security, signal.
Bluetooth / BLE
Including raw manufacturer payloads for later decoding.
Cellular
LTE / NR / GSM / UMTS / CDMA — towers, bands, neighbors.
GNSS
Per-satellite visibility, for the technically curious.
Drone RemoteID
High-priority notification when a drone broadcasts nearby.
Still uploads to WiGLE
Your collection keeps contributing to the open dataset.
Why a community project?
Personal security isn't just door locks and passwords anymore — the air around your home is full of signals that tell a story. Most of that story is harmless: a neighbor's printer, a car's tire sensor, a visiting cousin's phone. But sometimes it's worth asking what is that, and having your own record to ask it from.
MyGLE exists so families, small communities, and privacy-conscious folks can answer that question with their own data, on their own terms. The app is open and runs on a phone you already own. The server side can be something you host yourself — or, eventually, something we host for you.
Coming later: a managed backend for people who want the insights without running their own server, plus a donation page so folks who can afford to help keep the lights on for everyone else.
What's new
v0.1.0 2026-04-17 — first field-validated release.
The end-to-end pipeline is real: a Pixel 3 XL captures observations on a walk, ships them over TLS MQTT, and the server writes them to SQLite. All four streams (BLE, WiFi, cellular, GNSS) publish live during motion.
Working & field-tested today:
- All four observation streams — BLE (with raw
mfgDataretained for server-side decode), WiFi beacons, cellular (LTE / NR / GSM / UMTS / CDMA), and per-satellite GNSS. Network-Survey-format JSON over TLS MQTT, sub-second end-to-end latency on a Pixel 3 XL. - Drone RemoteID detection — heads-up Android notification with vibration when an ASTM F3411 BLE advertisement shows up nearby.
- Three-mode filter lists — Blacklist (drop matched observations before any persist or publish — your own gear stays out of every destination), Notify (collect everything, but ping when a target appears — surveillance assistant), Whitelist (only collect matches — device hunting). Match by MAC, BSSID, SSID, or OUI prefix (
AA:BB:CC:*). - Add-to-filter shortcuts — long-press any detected network in the scanning list to send it straight into a filter list, or open the per-list management screen and add manually.
- Call data records (opt-in) — when enabled, snapshots phone-call state transitions and durations (no phone numbers, no contents — uses
READ_PHONE_STATEonly). Foundation for IMSI-catcher correlation: when your serving cell mysteriously downgrades right before a call, the timing tells the story. - Upload your way — Upload button asks WiGLE.net / MQTT broker / both. Pick a default in Settings and the button label updates accordingly. The MQTT option replays your local observations if the live stream was offline during a walk.
- Re-skinned end-to-end — launcher icon (green shield + blue house), action bar, every page title, every screen reads "MyGLE". Distinct from production WiGLE everywhere.
- Settings live inside Settings — the app's existing Settings screen has a new "MyGLE Publishing" section. Toggle publishing globally or per topic. Override broker host / port / auth / prefix. Set a device label.
- Stable per-device identity (UUID + human-readable label) for fleet-provisioning the same APK across many phones.
- UTC timestamps + IANA timezone field on every record so the server can render observation times in the user's local clock.
- Side-by-side install with production WiGLE (distinct application ID, zero state collision).
- Fully containerized build pipeline — no Android SDK on your host.
Full history in CHANGELOG.md; full backlog in ROADMAP.md.
Where it's headed
The short answer: make the privacy controls excellent, make the background behavior boring-reliable, and open up a server-side project so people don't have to stand their own up to get value.
Privacy by default — the public release
For the public release, every data destination is opt-in and configured by the user: nothing leaves your phone unless you explicitly enable a destination and supply its address yourself. The easiest paths will be WiGLE.net upload (existing community workflow) and a CSV / database dump straight from the phone — no server required. If you want the live MQTT pipeline, you bring your own broker; if you'd rather use the project's hosted broker once it's available, you'll provision it with a short human-readable passphrase (six random words and a few digits) — no API keys to fumble with, no defaults baked into the APK.
F-Droid listing
For the public release, MyGLE targets a clean F-Droid listing with zero anti-features applied. That means the inherited Google Maps SDK and ML Kit dependencies get replaced with the FOSS MapLibre renderer and manual-entry alternatives, and the build is set up for reproducible builds on F-Droid's build server. The community privacy audit at research/privacy-audit/ in the repo enumerates the work.
Geo-bound filter lists ("bubbles")
Each filter entry can be scoped to a geographic region. Inside this 100-meter bubble around home, blacklist these MACs (privacy). Outside, record everything (situational awareness). A stronger variant pauses scanning entirely inside the bubble — better privacy, longer battery. Bubbles editable on a map view in the filter-list screen.
Search history to seed filter lists
Today, you add filter entries by typing or by long-pressing a currently-detected network. Coming: search the local history of everything you've ever seen, filter by SSID glob / OUI vendor / last-seen window, one-tap add to any list. When server-side communication exists, the same search can hit your circle's shared database.
Rogue infrastructure detection (Evil Twin + IMSI catcher)
The defensive-security flagship. Build a per-user trusted-AP fingerprint (the BSSIDs, encryption types, and locations of WiFi networks your phone normally connects to) and a per-location trusted-tower fingerprint. Alert when an AP advertising your home SSID appears with a new BSSID or weakened encryption (Evil Twin), or when at a known location your serving cell switches to an unfamiliar tower with a forced 5G→2G downgrade (classic Stingray fingerprint). The opt-in CDR capture above is the timing input that makes this sharp.
Resilience — store and forward
A local rich-format queue when your broker is unreachable, with conditional flush (any-network / WiFi-only / 5G / charging-only) so mobile data isn't surprised. Plus a wake-lock + watchdog in the publisher so the manual-relaunch workaround goes away. A periodic device-status heartbeat so a server can tell the difference between "phone went quiet" and "phone went dark."
AI insights — two paths
Natural-language analysis of your data, designed for two use cases. Server-side: if you run the MyGLE backend (or use a hosted one), the analytics server exposes an MCP interface — Claude Desktop, Cursor, or any MCP-aware client attaches and you ask questions like "did anyone come near my house overnight?" across your full multi-trip history. App-side BYO key: if you don't want to run a backend, you can plug in your own LLM API key (Anthropic, OpenAI, OpenRouter, or a local Ollama) and the app queries it directly against your phone's local database. Same questions, smaller history. Default in both: nothing leaves your device unless you explicitly enable a destination.
Community groups & neighborhood watch
An opt-in concept for circles of households or neighbors who choose to share their MyGLE observations into a common pool. Each contributor controls what they share into the circle (per-circle blacklist, per-circle data-class toggles, per-circle retention) — your private observations stay private; only what you allow joins the shared picture. Use cases: a neighborhood-watch circle that gets sharper anomaly detection from collective baselines than any single household could alone; a family circle where parents and kids can find each other's devices across multiple sensors; opt-in regional circles that propagate "watch for this MAC" alerts when someone's missing a phone, a device, or a person.
Ecosystem — the server project
A separate open-source repo (MyGLE Server, coming) that stands up a personal MQTT broker, ingest pipeline, and analytics. Same friendly onboarding as the phone side — if you can run Docker, you can run your own MyGLE back-end. Later, behavioral persona detection so the server learns the difference between your own devices, your car's devices, and unfamiliar companions.
Managed service — when the community's ready
For folks who want the insights without operating a server: a managed MyGLE backend you can point the app at, supported by donations. Still open-source client and server; the donation page just keeps the lights on.
Full backlog + architectural principles live in ROADMAP.md. If you'd like to suggest a priority, drop a note.
Build it yourself
The whole build runs inside a container — no Android SDK install required on your machine. If you can run Docker, you can build MyGLE.
git clone <repo-url> mygle
cd mygle/docker
./build-apk.sh
First build pulls Gradle, the Android SDK, and all dependencies into a named volume. Subsequent builds reuse the cache. The APK lands at:
wigle-app/wiglewifiwardriving/build/outputs/apk/debug/wiglewifiwardriving-debug.apk
Install via ADB:
adb install -r wigle-app/wiglewifiwardriving/build/outputs/apk/debug/wiglewifiwardriving-debug.apk
MyGLE installs under a distinct application ID (with a .mygle suffix on debug builds), so it runs side-by-side with production WiGLE without conflict. The launcher label shows as MyGLE so you can tell them apart.
Configure
Defaults are baked in — broker, TLS, all four publishers on. Override from inside the app (action bar overflow → mygle settings) for broker host/port/auth/topic-prefix, or set a human-readable Device label if you're fleet-provisioning multiple phones with the same APK.
A repo link will appear here as soon as the project's code is public. For now, if you'd like early access, email hello@mygle.net.
A big thank-you to WiGLE
MyGLE is built on top of the WiGLE WiFi Wardriving Android app, which has been actively maintained for over a decade by the WiGLE.net team (Andrew Carra, Robert Hagemann, Hugh Kennedy, and contributors). Years of careful work on background scanning, BLE capture, and speed-adaptive collection made this project possible.
MyGLE is a BSD 3-Clause derivative, released under the same license, with additions scoped to a single package (net.wigle.wigleandroid.mygle) so the upstream project stays cleanly separable. The original copyright notice and license are preserved in every build.
Not endorsed by WiGLE.net. The name "WiGLE.net" and "Mimezine" are trademarks of their respective owners; MyGLE uses neither name to promote or endorse the fork.
Say hello
Questions, ideas, RemoteID oddities you've spotted, or just interest in following along? Drop a note:
- hello@mygle.net
- Mirror domain
- mygle.org → redirects here.
Mail is hosted on a self-run Stalwart server — no third-party mailboxes, no training on your words, no surprise filters.