ALPR Evader is a local, privacy-first routing engine designed to help you navigate your city while avoiding Automatic License Plate Readers (ALPRs) aka traffic cameras.
Instead of relying on commercial navigation apps that track your every move and feed you through surveillance dragnets, ALPR Evader uses open-source map data to calculate routes that physically bypass known camera locations, keeping your travel history private.
To run this on your own machine, you only need two things:
- Docker and Docker Compose installed on your system.
- A machine with a decent amount of RAM. (By default, the routing engine is configured to use up to 24GB of RAM to support massive map data, but you can lower this by editing the
JAVA_OPTSindocker-compose.ymlif you are only routing within a single state).
We've built a fully automated pipeline that downloads the roads and camera locations for any US state, builds the routing graph, and spins up the web interface for you.
Open your terminal and run the automated ingestion script, passing in the name of the state you want to route in (e.g., iowa, illinois, california):
./scripts/ingest_state.sh iowaWhat this script does:
- Downloads the latest OpenStreetMap data for your chosen state.
- Scans the map to extract the coordinates of every known ALPR camera (tagged by privacy advocates on tools like DeFlock).
- Injects those cameras into a local spatial database.
- Asks you if you want to switch your routing engine to this state. Hit
yfor yes!
Once the ingestion script finishes and restarts the routing engine, bring up the rest of the application (the web API):
docker compose up -d(If you make changes to the frontend UI, run docker compose up -d --build api to refresh the cache!)
Open your favorite web browser and navigate to: http://localhost:8000
You can now enter an Origin and Destination within your ingested state. The engine will automatically calculate a path that avoids the known ALPR cameras!
If you're curious about the mechanics, ALPR Evader operates entirely on your own hardware using a 4-tier stack:
- The Spatial Database (PostGIS): Stores the exact GPS coordinates of every camera in your state. When it ingests a camera, it automatically draws a 50-meter circular "Capture Zone" around it.
- The Routing Engine (GraphHopper): A high-performance Java engine that holds the entire road network in its memory.
- The API (FastAPI): When you ask for a route, the API draws a box between your start and end points, grabs all the cameras inside that box from the database, and feeds them to GraphHopper with strict instructions: "Do whatever it takes to avoid driving through these 50-meter Capture Zones."
- The Frontend (Leaflet.js): A lightweight, dark-mode web interface that converts your typed addresses into coordinates and draws the final, secure route on the map in blue.
Commercial mapping apps act as telemetry collection funnels, tracking and logging your movements in real-time. Corporate navigation prioritizes frictionless speed at the expense of civil liberties.
By hosting the map locally, no third-party entity learns where you start, where you travel, or what paths you chose to avoid. Our stack acknowledges that avoiding mass surveillance introduces friction (longer distances, circuitous turns), treating that friction as a necessary tax for bodily and digital sovereignty.
That's a great question! FlockHopper is actually built on the exact same underlying ethos and data sources (DeFlock and OpenStreetMap), but the architecture and threat models are very different.
Here is exactly how ALPR Evader differs from FlockHopper:
FlockHopper is a hosted mobile app and website. While they are very privacy-centric (no accounts, no trackers), you still have to send your GPS coordinates to their remote servers to calculate a route. ALPR Evader runs 100% on your local metal. Once you ingest a state, you can physically disconnect your computer from the internet and calculate routes offline. Your origin and destination never leave your machine.
With FlockHopper, the routing algorithm is a black box—you ask for a route and it hands you an alternative. With ALPR Evader, you literally control the physics of the evasion. You wrote the PostGIS queries that draw the 50-meter Capture Zones, and you control the exact mathematical penalty (multiply_by: 0.01) in the GraphHopper custom model. If you want a 100-meter buffer, you can just change the code.
FlockHopper's coverage is dictated by what the developer decides to support on their servers. Because you are downloading the raw .osm.pbf files directly from Geofabrik and ingesting them into your own PostgreSQL database, you own the entire map. You can ingest any country on earth, and add your own private camera coordinates into the database that aren't public on OpenStreetMap.
In short: FlockHopper is an incredible, user-friendly consumer app for people who want an easy alternative to Google Maps.ALPR Evader is a sovereign, self-hosted infrastructure project for power users who refuse to trust anyone's servers but their own.