Your receiver. Your sky. Your tools.
Skylark runs beside FlightAware, Flightradar24, adsb.lol, ADS-B Exchange or whatever your Pi already feeds. It finds a supported local decoder, pairs with a code instead of copied keys, and checks your decoder snapshot, clock, connection and upload acknowledgement. Your private workspace shows your first accepted observation; publication follows operator approval.
Try it before you sign up
Download and inspect the source toolkit, then run this on your receiver. It reads a local snapshot, needs no account key, and sends nothing to Skylark.
python3 skylark_feed.py --check # Or select the decoder yourself: python3 skylark_feed.py --check --source /run/readsb/aircraft.json
A fresh, labelled decoder passes even when the sky is quiet. The result says transmitted: false. Run python3 verify.py for the toolkit's offline software checks. Compatibility on actual PiAware, ultrafeeder and ADSB.im hardware is still being verified.
Add Skylark to your receiver
- Create your station (or sign in to it). You get a private workspace for it straight away.
- On the receiver, run:
curl -fsSL https://skylark.watch/feed/install.sh | sudo bash
- It prints a code like KXQ7-M4TB. Enter it at skylark.watch/pair. That's it.
Read the script first if you like: install.sh · the forwarder · its checksum. The installer verifies the forwarder and all Receiver Lab files against their manifest checksums before installing anything.
Leaves your setup alone
It only reads the decoder's aircraft.json. It never opens the radio, installs a decoder or touches another feeder's config, and it runs as its own locked-down user.
Finds your decoder
Supported readsb and dump1090-fa snapshots, including expected paths for PiAware, ultrafeeder and adsb.im, as a file or on the loopback web server. Compatibility on each receiver still needs verification. If nothing is running it says what to install, and starts sending the moment a decoder appears.
Tells you what is wrong
sudo skylark-feeder doctor checks the decoder, the clock, the connection, your key and your station, and names the fix for the first thing that fails.
What the doctor looks like
✓ Python 3.11.2 ✓ Config /etc/skylark-feeder/config.json is private and valid ✓ Decoder /run/readsb/aircraft.json: 64 aircraft, 51 with position, 47 direct ADS-B positions to send, snapshot 0.4s old · Left out 9 MLAT and 0 TIS-B aircraft stay local; Skylark takes direct ADS-B only ✓ Connection reached skylark.watch in 0.2 s ✓ Clock within 0.3 s of the server ✓ Station Howth hill is approved and publishing ✓ Uploads 31,204 positions accepted, 12 rejected in the last two hours · Today 412 aircraft, furthest 231 nm All good. Skylark is receiving from this station.
Illustration of the output format; your own numbers appear when you run it.
What you get
- Your station's workspace: what your receiver hears right now, coverage by altitude over 1, 7 and 30 days, range by direction, a ten-minute replay, health with the reason for every rejected position, and a private journal for antenna changes.
- Your aircraft on the map: once approved, your positions fill gaps on skylark.watch and in the Skylark iPhone app for everyone in Ireland. Your exact location is never published.
- Your local sky, remembered: approaches, go-arounds and estimated noise for where you live, built from the network you are part of.
- Free receiver tools: your private workspace, diagnostics and personal exports are available while your station awaits publication approval.
- Open data if you want it: opt in to publish your daily observations under ODbL.
A clearer picture of your receiver
Try Receiver Lab before joining. See current direct aircraft, decoder freshness, signal readings and ten minutes of history. Add your antenna coordinates to see observed range by direction and reported altitude.
python3 skylark_feed.py --lab --source /run/readsb/aircraft.json
Open http://127.0.0.1:8765 on the receiver. No account, uploads or extra Python packages. It runs alongside your existing feeds and holds measurements in memory. The guide explains remote access and measurement limits.
Open tools you can make your own
The feeder toolkit is free to inspect, modify and share under the MIT licence. It includes Receiver Lab, the forwarder, installer, service, reuse guide and offline checks. Aircraft data has separate permissions.
Download the complete source toolkit · MIT licence · Read the guide
These are complete toolkit source files, available without a GitHub account.
Verify the bundle against the download manifest. Its checksum provides integrity; it is not an independent signature.
Know when it is working
- Local check: a fresh decoder snapshot, with nothing uploaded.
- Upload received: after installation, the doctor reports a recent upload. An empty snapshot can prove this step.
- First accepted position: your private workspace shows an actual accepted observation. Publication follows approval.
You can keep your other feeds running. Your dashboard, diagnostics and private exports are available while publication is pending. If it does not suit you, sudo skylark-feeder uninstall removes the local software and key.
Looking after it
sudo skylark-feeder # status and health check sudo skylark-feeder logs # follow the log (one line every ten minutes) sudo skylark-feeder pair # pair again, for example after moving the Pi sudo skylark-feeder upgrade # latest forwarder, keeps your pairing sudo skylark-feeder uninstall # removes the forwarder, its key and its user
Needs Linux with systemd and Python 3.9 or later: Raspberry Pi OS, Debian, Ubuntu or DietPi. Your decoder must label direct positions ("type": "adsb_icao"), which readsb and dump1090-fa 4 and later do; the old dump1090-mutability inside some Flightradar24 images does not, so install readsb beside it. Only direct 1090 MHz ADS-B is sent: MLAT, TIS-B and database details stay on your receiver.
