Flight Sitter

A Personal Flight Tracker So I Could Stop Refreshing FlightAware.

My wife travels occasionally for work, and every time she does, I end up doing the same thing: opening a new tab, typing in her flight number, waiting for the page to load, closing it, and then doing it again twenty minutes later. FlightAware is great. I just wanted it to come to me.

So I built Flight Sitter — a self-hosted flight tracking app that watches a flight and pushes updates straight to Telegram. No refreshing. No subscriptions. No third-party app with access to my account. Just a Docker container running on my home server, doing the watching for me.

How It Works#

You give it a flight ident — like UA1234 — either through a Telegram command (/track UA1234) or the web dashboard. From there it takes over: polling FlightAware's AeroAPI every 30 minutes (or faster if you want), pulling position, altitude, speed, and heading. When something meaningful happens — departure, arrival, a delay, a diversion — it sends you a Telegram message.

Flight Sitter progress update in Telegram

A mid-flight update — departure time, ETA, altitude, and delay status, pushed straight to Telegram.

Flight Sitter pre-departure update in Telegram

An earlier ping while the flight is still on the ground, showing it is running on time.

There's also a web dashboard if you want to actually see the flight. It pulls up a Leaflet map with the flight path, the route card, METAR weather for origin and destination, and any active FAA airport advisories.

Flight Sitter web dashboard

The dashboard — every tracked flight at a glance, with route, aircraft, departure times, and live position data.

Flight Sitter per-flight detail view

Each flight gets its own detail page with a full route card; a live Leaflet position map sits just below it in the app.

If you want near-instant notifications instead of polling, you can wire up FlightAware's webhooks. That's optional — the app falls back to polling gracefully if webhooks aren't configured.

What It Actually Costs#

The FlightAware AeroAPI Personal tier has no monthly minimum — you pay about $0.002 per query. For a single five-hour flight on a 30-minute poll cycle, that's roughly $0.05. Even a busy month tracking multiple trips would run well under a dollar.

The rest of the stack is free: FAA airport advisory data pulls from a public API with no key required, the map uses OpenStreetMap via Leaflet, and the whole thing runs in a single Docker container with SQLite.

The Stack#

Built with FastAPI, python-telegram-bot, APScheduler for the poll loop. Single SQLite database.

git clone https://github.com/jchimp/flight-sitter.git
cd flight-sitter
cp .env.example .env
# Fill in your FlightAware API key, Telegram bot token, and chat ID
docker compose up -d --build

Then open http://localhost:8080 or fire off /track UA1234 in Telegram.

Why Self-Host This?#

Honestly, you don't have to. FlightAware's own app is fine. This was just fun.

The full source, setup instructions, and cost breakdown are on GitHub: jchimp/flight-sitter.