planesnitch

planesnitch snitches on every interesting aircraft that flies near your locations: military jets, government spooks, emergency squawks, sketchy low-flyers, or whatever you tell it to watch for. It polls free public ADS-B APIs (or your own receiver), matches what it sees against your watchlists, and rats the aircraft out to Telegram or a webhook.

No SDR. No antenna. No hardware. One Docker container and one config file, for as many locations as you want.

public ADS-B APIs, or your own ultrafeeder
  │  one request per location group, merged by ICAO hex
  ▼
aircraft in range
  │  matched against watchlists and alert rules from config.yaml
  │  one cooldown per rule and aircraft
  ▼
Telegram (text, or photo with caption)  and/or  webhook (JSON array per poll)

Quick start

Grab the example config and fill in your location and Telegram bot:

curl -sL \
  https://raw.githubusercontent.com/psyb0t/docker-planesnitch/main/config.yaml.example \
  -o config.yaml

Run it:

docker run -d --name planesnitch \
  -v ./config.yaml:/app/config.yaml:ro \
  psyb0t/planesnitch

The example config also watches the military, government and police lists from plane-alert-db. Those need CSV files mounted at /csv; Getting started has the full walkthrough.

Where to go next

You want to Read
Go from nothing to your first alert Getting started
Know every config key and its default Configuration
Pick what to watch for Watchlists
Set up Telegram or a webhook, or parse the payload Notifications
Understand polling, sources, rate limits and cooldowns How it works
Run it for real: volumes, health check, image tags Deployment
Know what leaves your machine Security
Fix something Troubleshooting
Drive it from an AI agent Agent integrations
Hack on the code Development