A small macOS menu bar app that shows aircraft in your area in real time.
MenuBarADSB lives in your menu bar and shows the closest (or highest / lowest / fastest) aircraft within a configurable radius around your current location. Click it to see the full list of nearby aircraft — identifier, airline, route, type, altitude, speed, distance, and heading. Clicking an aircraft opens it on Flightradar24 or the adsb.lol globe.
- Live tracking within a 1–50 km radius, updating every 5–60 seconds
- Configurable menu bar display — pick which fields appear next to the identifier
- Dropdown list of all nearby aircraft, sorted by distance
- "Featured" selection: closest / highest altitude / lowest altitude / fastest
- Notifications for newly appearing aircraft (optional)
- Launch at login (
SMAppService) - Localization: English & German (follows system language)
- Sandboxed, signed with Hardened Runtime
- Pure SwiftUI, no external dependencies
The app fetches data live from two public APIs — nothing is stored locally:
| Data | Source |
|---|---|
| Aircraft positions (ICAO, position, altitude, speed, track) | adsb.lol |
| Airline name & route (origin/destination IATA) by callsign | adsbdb.com |
Big thanks to the maintainers of both projects for offering these for free.
Requirements: macOS 26 or newer.
- Grab the latest
MenuBarADSB-*.zipfrom the Releases page. - Unzip it and move
MenuBarADSB.appto/Applications. - First launch: the app is unsigned (ad-hoc only — no Apple Developer ID), so macOS Gatekeeper blocks the default double-click. Right-click the app → Open → confirm the dialog. After that it launches normally.
- macOS will ask for location permission — needed to determine the radius around your position.
Requirements:
- macOS 26 or newer
- Xcode 26 or newer
git clone https://github.com/RobinSp5/MacADSBMenuBar.git
cd MacADSBMenuBar
open MenuBarADSB.xcodeprojHit Run in Xcode (⌘R). On first launch macOS asks for location permission — needed to determine the radius around your position.
The app uses String Catalogs (Localizable.xcstrings, InfoPlist.xcstrings) with English as the source language and German as a translation.
- macOS in English → app in English, numbers with a dot (e.g.
1.5 km) - macOS in German → app in German, numbers with a comma (e.g.
1,5 km) - Per-app language override via System Settings → General → Language & Region → Applications
To add another language: add the locale to knownRegions in project.pbxproj, add the language in the String Catalog, then provide translations.
MenuBarADSB/
├── MenuBarADSBApp.swift // App entry, scene setup
├── Models/ // Aircraft, DisplayField, MenuBarSelection, GeoMath
├── Services/ // ADSBService, RouteService, LocationService,
│ // NotificationService, LaunchAtLoginService
├── State/ // AppSettings (UserDefaults), AircraftStore (polling)
├── Views/ // MenuBarLabelView, MenuBarContentView, SettingsView
├── Localizable.xcstrings // UI strings EN/DE
└── InfoPlist.xcstrings // NSLocationUsageDescription EN/DE
- Watchlist / favourites (highlight callsign patterns)
- Manual location override
- Trend indicator (approaching / receding)
- Aircraft photos via Planespotters
- Inline map in the popover
- Pause / snooze
- Multiple zones (alert radius vs. display radius)
No license set yet. Open an issue if you need one.
Built for personal use. Not affiliated with adsb.lol or adsbdb.com.


