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
Downloads
- Golden SD kit (zip) - flash Pi OS Lite, then bake; not a multi-GB raw .img in git
- Dual-radio validation storyboard - all board models + shared day-one steps
- Skybrary library - starter kits with license passports
- GitHub release v1.35.0
Architecture
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 + stationGET /api/rx/passes- upcoming FTA weather passesPOST /api/rx/import- ingest product pathGET /api/ops/local- disk, power, peers (no cloud)GET /api/skybrary/catalog.json- dual-access catalog