Why it asks for “Always” location.
The first thing you’ll see is a location prompt, and it asks for “Always”. Here’s why. Alerts are the point of the app, and they’re only useful if they work while you’re driving with the phone in your pocket. iOS calls that background access. To do it, the app reads your location continuously and compares it with the camera positions already stored on your phone. That comparison happens on the phone and never leaves it.
If you choose “While Using” instead, the map and the route planner still work. You just won’t get alerts unless the app is open.
The notification prompt is for those alerts. They’re created on your phone, not sent to it. There’s no push server.
What leaves your phone.
The app isn’t entirely offline. Camera data and map imagery come from other people’s services, and those requests say something about where you’re looking. Like any internet request, they also show that server your IP address. Here’s who gets what, most revealing first.
OpenStreetMap servers
Speed camera data comes from OpenStreetMap through community-run “Overpass” servers. The app sends the area of map on screen, at least about 10 km across. While the map is following you, that area is centred on your position, which makes this the most revealing request the app makes. If DeFlock is unavailable, the same request is used for every camera type. It happens while the map is open.
Apple Maps
The map imagery is Apple’s, so Apple sees which part of the map you’re viewing. When you search for a destination in the route planner, Apple also receives what you type and the map region.
DeFlock
License plate reader locations come from DeFlock in large tiles, each covering a 20-degree slice of the globe. Asking for one reveals roughly which part of the world you’re looking at, not where you are. It happens while the map is open and a tile is missing or out of date.
The tile server
When you download a region pack for routing, the server learns which state-sized region you asked for and nothing else: not your position, your route or your destination. It only happens while a download is running. More on this below.
ALPRWatch
Off by default. If you switch on “Show Suspected Locations”, the app downloads one file from ALPRWatch. The request says nothing about you.
Links you tap
The camera detail screen and Settings have ordinary web links, and nothing is sent until you tap one. “View on OpenStreetMap” and “View on DeFlock” open the page for that camera, which tells the site which camera you looked at, a hint about where you are. They’re there for checking and correcting map data, and the choice is yours each time.
What stays on your phone.
- Region packs: the road data you downloaded for routing. It describes roads, not you.
- Cached camera records: so the map and alerts work without asking again. They describe cameras, not you.
- Your settings: alert distance, filters and map preferences.
That’s the whole list. No location log, no visit history, no route history. Delete the app and all of it goes with it.
Where the road data comes from.
Routing on your phone needs road data on your phone, and that has to be downloaded from somewhere. By default it comes from tiles.flckd.app: a bucket of static files on Cloudflare with a domain name in front. I upload new packs about once a month. There’s no web server, no application and no machine of mine anywhere in the path, so nothing of mine can log the request, be breached or be subpoenaed.
Cloudflare does see your IP address and which region you asked for. That’s a coarse hint about an area you’re interested in, and a real disclosure, which is why it’s here. I haven’t turned on any of Cloudflare’s logging or analytics products; what Cloudflare keeps for itself is governed by its policy, not mine.
You don’t have to use it. The app lets you point at any tile server, including one at home, and it never quietly falls back to mine if yours fails. You can also sideload a pack, or download it once over a VPN. After that, routing needs no network at all.
How to host the road data yourselfWays to reduce your exposure.
- Leave “Show Suspected Locations” off unless you want it. It’s off by default.
- The speed camera request goes out as soon as the map knows your position, centred on it. Panning afterwards sends a new area; it doesn’t take back the first one.
- Use a VPN to hide your IP address from the OpenStreetMap servers and from whichever tile server you use.
- Once an area’s cameras are cached and its region pack is downloaded, both alerts and route planning work with no network at all.
Checking for yourself.
You don’t have to take any of this on trust. The full document names the handful of source files that make network requests and gives the commands to confirm there are no others, including one that shows the routing code never touches the network.
There’s no separate changelog for the privacy document, either: every change to it is a commit in the repository, in the open.
Read the full privacy document