About
++ Gee Bee is a lightweight Go application that + continuously polls live flight data from + ADSB.one + and fires a notification whenever one of your watched tail numbers + takes to the skies. It supports Discord, Slack, and any custom + webhook. +
++ Gee Bee is heavily inspired by and shares logic with + Jetspotter + by + Vincent Van Ouytsel. Many thanks for the excellent foundation! +
+Live Flight Tracking
++ Queries the ADSB.one API on a configurable interval to track + specific registrations. +
+Multi-channel Alerts
++ Push notifications to Discord, Slack, or any custom HTTP + endpoint. +
+Docker Ready
+
+ A production-ready Docker image is built and published
+ automatically on every commit to main.
+
Flexible Config
++ Configure via a YAML file or plain environment variables – ideal + for containers and CI pipelines. +
+Quick Start
+ +1 – Clone and configure
+git clone https://github.com/rorpage/gee-bee.git
+cd gee-bee
+cp config.example.yml config.yml
+# Edit config.yml with your tail numbers and webhook URLs
+
+ 2 – Run
+task run
+ + Or with the Go tool directly: +
+go run cmd/geebee/*
+
+ 3 – Build
+task build # produces gee-bee.exe
+
+ Docker
+
+ A pre-built image is published to the GitHub Container Registry on
+ every push to main. Pull and run it with:
+
docker run --rm \
+ -e TAIL_NUMBERS="28000,29000" \
+ -e DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/…" \
+ ghcr.io/rorpage/gee-bee:latest
+
+ Or with Docker Compose:
+services:
+ gee-bee:
+ image: ghcr.io/rorpage/gee-bee:latest
+ environment:
+ TAIL_NUMBERS: "28000,29000"
+ DISCORD_WEBHOOK_URL: "https://discord.com/api/webhooks/…"
+ FETCH_INTERVAL: "60"
+ restart: unless-stopped
+ Configuration
+
+ Values can be set in a config.yml /
+ config.yaml file placed next to the binary, or via
+ environment variables. Environment variables take precedence.
+
| Config key / Env var | +Default | +Description | +
|---|---|---|
+ tailNumbersTAIL_NUMBERS
+ |
+ 28000,29000 |
+ + Comma-separated list of aircraft registrations (tail numbers) to + watch. + | +
+ fetchIntervalFETCH_INTERVAL
+ |
+ 60 |
+ + How often (in seconds) to poll the flight API. Values below 60 + may trigger rate limits. + | +
+ logPlanesToConsoleLOG_PLANES_TO_CONSOLE
+ |
+ true |
+ Print spotted aircraft details to stdout. | +
+ discordWebhookUrlDISCORD_WEBHOOK_URL
+ |
+ empty | +Discord incoming-webhook URL for notifications. | +
+ slackWebhookUrlSLACK_WEBHOOK_URL
+ |
+ empty | +Slack incoming-webhook URL for notifications. | +
+ customWebhookUrlCUSTOM_WEBHOOK_URL
+ |
+ empty | ++ Any HTTP endpoint that accepts a JSON POST. See the + Custom Webhook section for the + payload shape. + | +
Example config.yml
+tailNumbers: 28000,29000
+fetchInterval: 60
+logPlanesToConsole: true
+discordWebhookUrl: https://discord.com/api/webhooks/12345/abcdef-ghijkl
+slackWebhookUrl: https://hooks.slack.com/services/random/ids/andstrings
+customWebhookUrl: https://your-custom-url.com/endpoint
+ Notifications
+ +Discord
+
+ Set discordWebhookUrl to a valid Discord
+ Incoming Webhook
+ URL. Gee Bee posts a rich embed for each spotted aircraft containing
+ callsign, registration, speed, altitude, heading, aircraft type,
+ owner/operator, and a thumbnail image when available.
+
Slack
+
+ Set slackWebhookUrl to a Slack
+ Incoming Webhook
+ URL. Notifications use Slack's Block Kit for clean, structured
+ messages.
+
Custom Webhook
+
+ Set customWebhookUrl to any URL that accepts an HTTP POST
+ with a JSON body. Gee Bee sends the following payload per spotted
+ aircraft:
+
{
+ "altitude": "3,200 m",
+ "callsign": "AF001",
+ "description": "Boeing 747-400",
+ "heading": "270°",
+ "imageUrl": "https://…",
+ "ownerOperator": "Air France",
+ "speed": "900 km/h",
+ "squawk": "1234",
+ "tailNumber": "F-GITD",
+ "type": "B744",
+ "url": "https://globe.adsbexchange.com/…"
+}
+ Taskfile Commands
++ Gee Bee uses + Task + as its task runner. Install it once and use the following commands: +
+| Command | +Description | +
|---|---|
task build |
+ Compile the app to a gee-bee.exe binary. |
+
task format |
+
+ Run gofmt -s -w . to format all Go source files.
+ |
+
task run |
+
+ Run the app directly with go run, reading
+ configuration from config.yml or env vars.
+ |
+
License
++ Gee Bee is released under the + MIT License. +
+