From orbit to offline knowledge · Community fabric · Skybrary mission
skycache.jonbailey.xyz
· Skybrary plan
SkyCache receives public free-to-air / open satellite information (and USB education packs), prioritizes what matters, replicates across a local unlicensed Wi-Fi mesh, and serves a store-and-forward portal for schools, clinics, villages, and disaster zones.
Skybrary (the Sky Library) is the long-horizon mission on this foundation: a resilient, legal, dual-access archive of open written knowledge — online for the connected, offline packs for the rest. North star, not a claim of completeness: see docs/VISION-SKYBRARY.md.
Legal (non-negotiable): SkyCache is receive-only for satellite/RF reception and only targets unencrypted free-to-air, public, or openly licensed content. Mesh transmit uses unlicensed/ISM Wi-Fi (and optional regional LoRa for control). It is not free Starlink/OneWeb/commercial VSAT broadband, and it will not help decrypt paid services. Operators must check local spectrum and Wi-Fi regulations. Full policy:
docs/legal-ethics.md.
| Does | Does not |
|---|---|
| Cache weather, education, health, emergency packs | Provide free commercial broadband or Starlink |
| Serve phones over local hotspot + multi-node mesh | Decrypt commercial satellite constellations |
| Prioritize Emergency → Health → Education under pressure | Require cloud accounts or personal-data harvesting |
| DTN queues, USB data-mules, opportunistic open pulls | Satellite uplink by default |
| Run full multi-node simulation with zero RF hardware | Replace SatDump / Kiwix — it orchestrates them |
# From the SkyCache directory
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 8080Open http://127.0.0.1:8080/ — icon portal with sample Emergency, Health, Education, Farm, Weather, Maps, and Skybrary Library content.
Village / Pi golden path (<2 hours): docs/first-boot.md · sudo bash deploy/install-village-fabric.sh
python -m skycache doctor
python -m skycache capabilities
python -m skycache nexus doctor
python -m skycache nexus sim --nodes 3 --disaster
python -m skycache nexus validate --nodes 2
python -m skycache skybrary pack --profile literacy-1gb
python -m skycache skybrary export-catalog --out data/catalog-export
python -m pytest -qv0.8.0 Village Ready: pack profiles 2.0, power maintainer sheets, gateway receipts/quota, dual-access catalog export, partner kits — see CHANGELOG.md · docs/partner-kits.md.
Windows: use py -3 instead of python if needed.
Antenna/SDR (RX only) → decoder plugins → ingest + prioritizer → SQLite + packages
↓
Nexus fabric (mesh gossip, DTN, gateway quotas)
↓
FastAPI + multi-language PWA ← Wi-Fi AP / batman-adv mesh
Details: docs/architecture.md · Mesh field guide: docs/mesh-deployment.md · Village recipe: docs/village-nexus-playbook.md.
| Phase | Goal |
|---|---|
| 0 | Simulation/demo with sample packages |
| 1 | File ingest, package create/validate, USB drop watch, hotspot enable — docs/phase1-file-ingest.md |
| 2 | Live FTA weather via SatDump on RTL-SDR — docs/phase2-live-rx.md |
| 3 | Full prioritization ops, power sensors, DTN-lite messaging |
| 4 Nexus | Multi-node mesh, content fabric, opportunistic gateway, disaster mode, village playbooks |
| 4.0 Community UX | Search, boards, ratings, license inventory, power/traffic monitors, onboarding |
| S0–S1 Skybrary | Mission docs + architecture + PD sample scaffold |
| S2 Skybrary | Works FTS catalog, Library tab, facets |
| 0.6 Legal surface | Full capability matrix, open fetch, pack profiles, verify, handoff |
| 0.7 Village + dual-access | First-boot, PWA reader, USB kits, handoff UI, corpus import, passport, federation E2E · NEXT-STEPS |
| 0.7.1 Phone offline demos | No cell plan: hub Wi-Fi → Save demos to this phone (3 PD texts zip) · phone-offline-demo |
| 0.7.2 Zero-network kit | No Wi-Fi and no cell: USB/SD/BT/pre-deploy → open READ-OFFLINE.html · zero-network-phone |
| 0.8 Village Ready | Signed pack kits 2.0, power sheets, gateway ethics, mesh validate, dual-access catalog export, partner kits — current · CHANGELOG |
- Python 3.11+, FastAPI, SQLite, static multi-language PWA
- Plugins wrap SatDump, gr-satellites, file/ZIM import
- Mesh: batman-adv hooks + in-process sim; hotspot hostapd + dnsmasq
- Inspired by SatNOGS, TinyGS, Kiwix, Internet-in-a-Box/RACHEL, community networks (see
docs/open-sources.md)
skycache/ # Python package (CLI, pipelines, web, policy, nexus/)
webui/ # Mobile-first PWA (i18n: en fr es ar sw hi pt)
samples/packages/ # Demo content
deploy/ # systemd, hotspot, Debian installer, village fabric notes
docs/ # Architecture, legal, mesh deploy, BOM, playbooks
tests/ # pytest (including multi-node Nexus sim)
Ultra-low-cost target: RTL-SDR + Raspberry Pi/Orange Pi + commodity Wi-Fi APs, optional LoRa for control plane, optional solar.
BOM: docs/hardware-bom.md (~$90–180 MVP without solar; multi-node scales with extra Pis/APs).
| Doc | Audience |
|---|---|
docs/legal-ethics.md |
Everyone — read first |
docs/mesh-deployment.md |
Mesh / spectrum / multi-node |
docs/mesh-field-checklist.md |
Printable 2-node day checklist |
docs/disaster-drill.md |
Disaster mode drill + partner checklist |
docs/village-nexus-playbook.md |
Field install recipe |
docs/first-boot.md |
Golden path — demo node in <2 hours |
docs/phone-offline-demo.md |
Phone, no cell plan — download 3 demos over hub Wi-Fi only |
docs/zero-network-phone.md |
No Wi-Fi, no cell — USB/SD/BT kit; open READ-OFFLINE.html offline |
docs/installation.md |
Technical volunteers |
docs/community-playbook.md |
NGOs / local clubs |
docs/training-local-maintainer.md |
Field training |
docs/content-packaging.md |
Content authors |
CHANGELOG.md |
Release notes |
skycache init [--load-samples]
skycache first-boot --yes --pin NNNN [--ssid] [--legal-rf-mode] [--sim]
skycache serve [--sim] [--host] [--port]
skycache ingest <path>
skycache package create|validate ...
skycache watch [--once]
skycache pipeline --plugin sim_file|satdump_weather|gr_satellites|package_import
skycache status
skycache doctor
skycache mesh status [--compliance]
skycache gateway [--sim] [--request ID] [--pull]
skycache nexus doctor
skycache nexus sim [--nodes 3] [--disaster]
skycache nexus status
skycache search [query]
skycache licenses [--summary]
skycache skybrary doctor [--verify] # --verify: content-tree integrity (bit-rot)
skycache skybrary samples [--ingest]
skycache skybrary search [query]
skycache skybrary pack --profile literacy-1gb|--list
skycache skybrary import-folder DIR --license "public domain" [--ingest]
skycache skybrary import-open URL --license "project gutenberg" [--ingest]
skycache capabilities [--json]
skycache open-fetch URL --out FILE
skycache verify data/content # same integrity pass; schedule weekly via cron
skycache handoff --out data/handoff
Corpus import (legal bulk, operator-run): see docs/skybrary-corpus-import.md.
License passport: GET /api/packages/{id}/passport and GET /api/skybrary/works/{id}/passport (license, provenance, sha256, redistribute yes/no/review). PWA shows a Passport chip on cards.
Legal RF mode (env SKYCACHE_LEGAL_RF_MODE): receive_only | ism_mesh | ism_lora_control | hybrid_gateway | amateur_operator (requires SKYCACHE_AMATEUR_LICENSE_AFFIRMED=true).
Never: commercial decrypt or default satellite uplink.
Repo: https://github.com/Pitchfork-and-Torch/SkyCache
Site: https://skycache.jonbailey.xyz
See CONTRIBUTING.md. Please keep the legal rails intact — PRs that add commercial decryption, satellite uplink, or dishonest “free broadband” claims will be rejected.
Apache License 2.0 — see LICENSE and NOTICE.
Built on open tools and community-network practice. SkyCache Nexus maximizes what is already legal for humanitarian impact: education, health, emergency coordination, and local ownership after volunteers leave.
