Inspired by Advisory Circular by John Wiseman. After running Advisory Circular myself for a while (back in the Twitter days), I decided I'd try my hand at writing a similar bot but adding the ability to use different "jobs" to detect various different types of flights.
John's original code was written in Clojure, with a current rewrite in Rust. I decided to build mine in TypeScript for fun.
As of now, the bot only monitors circular-ish flights, looking for aircraft that are circling using the Airplanes.live API but can easily be modified to use a network available tar1090 aircraft.json. The bot then uses the BlueSky API to post the details of the flight and a screenshot of the flightpath.
Data is sourced from two APIs:
- Airplanes.live
- A local Pelias instance
The name "Watcher in the Sky" is inspired by the band Ghost.
Watcher in the Sky (or Watcher, for short) polls the Airplanes.live API for data given a lat/lon and radius. It stores aircraft positions in a sqlite database and then looks at the previous data to see if an aircraft has been circling. If it has, it takes a screenshot of the airplanes.live UI and posts about the circling aircraft along with the screen shot to BSky using the atproto API.
Another WIP job looks for specific aircraft and will post about them when they're seen in the area.
This code is very much a work in progress and will be refined as I work on it.
- Pull photo of aircraft from airport-data (if available)
- Write nicer-reading post text
- Add detection of aerial photography/imaging flights (zig-zags)
- Create configuration of watched aircraft list for specific tail numbers or icao
This code is periodically running and posts to the BSky account @skycirclesslc.bsky.social. I can be found on BSky as @sawyer.bike.