Skylark
Feed Skylark

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

  1. Create your station (or sign in to it). You get a private workspace for it straight away.
  2. On the receiver, run:
curl -fsSL https://skylark.watch/feed/install.sh | sudo bash
  1. 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

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

  1. Local check: a fresh decoder snapshot, with nothing uploaded.
  2. Upload received: after installation, the doctor reports a recent upload. An empty snapshot can prove this step.
  3. 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.