Skip to content
For developers

Build with SkyCache

SkyCache Nexus is intentionally modular. The core is a Python hub that ingests public content, prioritizes it, serves a mobile-first offline portal, and can form a multi-node community mesh fabric (DTN + opportunistic open gateway) - wrapping tools like SatDump and gr-satellites instead of reinventing demodulation. Not free commercial broadband.

Current software: v1.35.0 | Operator how-to | Roadmap tracker

Stack

  • Python 3.11+ | FastAPI | SQLite | static PWA | skycache.nexus | skycache.rx
  • SoapySDR / RTL-SDR for receive-only hardware access
  • SatDump CLI for free-to-air weather decode (SkyCache watches products)
  • gr-satellites for open amateur / CubeSat telemetry
  • Optional: pip install sgp4 for real pass geometry
  • hostapd + dnsmasq + batman-adv templates for village fabric
  • MIT software tree

Quick start (simulation)

cd SkyCache
python -m pip install -e ".[dev]"
python scripts/make_sample_package.py
python -m skycache first-boot --data-dir data --yes --pin 739184 \
  --ssid SkyCache-Sim --legal-rf-mode receive_only --sim
python -m skycache serve --sim --host 127.0.0.1 --port 8080
# -> http://127.0.0.1:8080/

Live FTA RX (real-world)

Operators run SatDump for the pass; SkyCache schedules recipes, arms the station, ingests products, and can auto field-log. Full runbook: phase2-live-rx.md.

python -m skycache rx doctor
python -m skycache rx station --lat LAT --lon LON --antenna "V-dipole 137"
# optional: pip install sgp4 && skycache rx tle-import tles.txt
python -m skycache rx schedule --hours 24
python -m skycache rx arm --hours 12
python -m skycache rx cmd --next-pass
# After SatDump writes products:
python -m skycache rx watch --dir /path/to/products --once --satellite "NOAA 18"
python -m skycache rx duty

CLI surface (v1.35.0)

python -m skycache capabilities
python -m skycache doctor
python -m skycache ops status
python -m skycache skybrary samples --ingest
python -m skycache skybrary pack --profile literacy-1gb
python -m skycache skybrary doctor --verify --record
python -m skycache skybrary export-catalog --out data/catalog-export --starter-kits
python -m skycache library doctor
python -m skycache library status
python -m skycache library export --out data/ops/library-board.html
python -m skycache library kit --out data/library-kit
python -m skycache library publish --out data/catalog-publish
python -m skycache library zero-network --out phone-zero-network
python -m skycache library sync --out data/library-sync --skip-zero-network --with-packs --apply-web
python -m skycache library pack-kits --out data/library-pack-kits
python -m skycache skybrary pack --profile emergency-health
python -m skycache skybrary pack --profile multilingual-literacy
python -m skycache pi-image bundle --out data/pi-download
python -m skycache dual-radio doctor
python -m skycache mesh dual-radio-pack --out media/dual-radio-validation
python -m skycache handoff doctor
python -m skycache handoff join-card --portal-url http://10.42.0.1:8080/ --ssid SkyCache-Village
python -m skycache handoff export --limit 10
python -m skycache gateway doctor
python -m skycache gateway pull-preset gutenberg-sample --dry-run
python -m skycache gateway pull-preset gutenberg-sample --sim
python -m skycache dtn doctor
python -m skycache dtn forward-sim --nodes 3
python -m skycache village-day doctor
python -m skycache village-day kit --out data/village-day-kit
python -m skycache federation doctor
python -m skycache federation sim --nodes 2
python -m skycache federation kit --out data/federation-kit
python -m skycache integrity doctor
python -m skycache integrity verify --record
python -m skycache integrity kit --out data/integrity-kit
python -m skycache disaster doctor
python -m skycache disaster run --nodes 3
python -m skycache disaster closeout
python -m skycache disaster kit --out data/disaster-kit
python -m skycache power doctor
python -m skycache power sheet --out data/ops/power-sheet.html
python -m skycache power kit --out data/power-kit
python -m skycache licenses doctor
python -m skycache licenses export --out data/ops/licenses-inventory.html
python -m skycache licenses kit --out data/licenses-kit
python -m skycache capabilities doctor
python -m skycache capabilities export --out data/ops/capabilities-matrix.html
python -m skycache capabilities kit --out data/capabilities-kit
python -m skycache ops doctor
python -m skycache ops export --out data/ops/local-ops-board.html
python -m skycache ops kit --out data/ops-kit
python -m skycache rx doctor
python -m skycache rx export --out data/ops/rx-station-board.html
python -m skycache rx kit --out data/rx-kit
python -m skycache report doctor
python -m skycache report export --out data/ops/node-report.html
python -m skycache report kit --out data/report-kit
python -m skycache corpus doctor
python -m skycache corpus export --out data/ops/corpus-board.html
python -m skycache corpus kit --out data/corpus-kit
python -m skycache seal doctor
python -m skycache seal export --out data/ops/seal-board.html
python -m skycache seal kit --out data/seal-kit
python -m skycache partner doctor
python -m skycache partner export --out data/ops/partner-board.html
python -m skycache partner ops-kit --out data/partner-ops-kit
python -m skycache nexus federation --nodes 2
python -m skycache nexus validate --nodes 2
python -m skycache rx doctor
python -m skycache rx schedule --hours 24
python -m skycache rx arm --hours 12
python -m skycache rx watch --dir ./products --once
python -m skycache rx duty
python -m skycache serve --sim

Full operator paths | Library catalog | Skybrary plan

Downloads

Architecture

Loading diagram...

Plugin contract

Decoders implement a small protocol: name, legal_profile (fta_public | amateur_open | file_import_only), can_handle, run -> CaptureResult. Commercial decrypt plugins are out of scope and will be rejected.

HTTP APIs (node)

  • GET /api/rx/status - SDR/SatDump doctor + station
  • GET /api/rx/passes - upcoming FTA weather passes
  • POST /api/rx/import - ingest product path
  • GET /api/ops/local - disk, power, peers (no cloud)
  • GET /api/skybrary/catalog.json - dual-access catalog

Contribute

  1. Read legal/ethics rails - receive-only FTA/open content only.
  2. Keep simulation mode green without hardware.
  3. Prefer wrapping mature tools over reimplementing demods.
  4. Add tests for prioritizer, ingest, RX watch, and API changes.
  5. Open an issue or PR on GitHub.