MeshSky Docs

Feeders

How to install, configure, and operate a MeshSky feeder.

A feeder is the front door to the mesh. It listens to the sky, signs what it hears, and ships those observations to the network.

What you need

  • A single-board computer (Raspberry Pi 3B+ or newer recommended).
  • A software-defined radio (RTL-SDR Blog v3 is the cheapest known-good).
  • A 1090 MHz antenna, ideally roof-mounted with a clear sky view.
  • A reliable internet connection (10 kbps is plenty).

One-line install (Linux / Raspberry Pi OS)

curl -fsSL https://get.meshsky.io | sudo bash

The installer:

  1. Detects your SDR hardware.
  2. Generates a fresh Ed25519 feeder identity (stored at /etc/meshsky/feeder.key).
  3. Configures meshskyd, the feeder daemon.
  4. Connects to the nearest 3 AirBridge peers.
  5. Starts shipping observations within ~30 seconds.

Back up /etc/meshsky/feeder.key. Your feeder’s reputation is bound to that key. Lose the key and you start over from zero.

Docker

docker run -d --restart=unless-stopped \
  --name meshskyd \
  --device=/dev/bus/usb \
  -v meshsky-data:/var/lib/meshsky \
  ghcr.io/meshsky/feeder:latest

Configuration

Configuration lives at /etc/meshsky/feeder.toml:

[feeder]
name        = "kbfi-roof-1"
location    = { lat = 47.5300, lon = -122.3019, alt_m = 95 }
geo_fuzz_m  = 0           # 0 = share exact location

[radio]
device      = "rtlsdr:0"
gain        = "auto"
bands       = ["adsb-1090", "uat-978"]

[mesh]
peers       = ["auto"]
upstream_kbps = 64
mlat        = true

Earning reputation

Reputation grows with every signed, well-timed observation. The reputation score is a function of:

  • Volume — how many unique signals you’ve signed.
  • Quality — how often your timing matches the consensus.
  • Coverage — how unique your geographic position is.
  • Uptime — how reliably you ship over rolling 30/90/365-day windows.

See Governance for how reputation translates into priority routing and (in time) protocol-level rewards.

Privacy

Operators choose what to share:

  • geo_fuzz_m = 1000 rounds your published location to a 1 km grid.
  • share_identity = false keeps your name private; only your public key is exposed.
  • Per-band opt-outs let you participate in ADS-B without contributing UAT, etc.

Diagnostics

meshsky status         # connection, peers, reputation, observation rate
meshsky peers          # current AirBridge peers and RTT
meshsky logs --follow  # live log tail
meshsky verify         # cryptographic self-test of recent observations

Going further

  • Run multiple antennas with radio.device = "rtlsdr:0,rtlsdr:1".
  • Pair with a GPS-disciplined clock for sub-microsecond MLAT timing.
  • Operate a fleet — large operators can register a single owner identity that signs many feeder keys.