A daily, independently witnessed, publicly verifiable archive of the public space object catalog.
Every day, decentralized operator nodes pull the public Resident Space Object catalog from Space-Track, roll it forward from the prior snapshot, hash the canonical bytes, and publish evidence anyone can verify.
- Why bother: public orbital data should have durable, independently verifiable memory outside any single service
- What's preserved: historical snapshots of tracked artificial objects in Earth orbit
- How: many fork-based nodes run the same zero-dependency pipeline and compare SHA-256 hashes
- Current output: Git metadata on each
nodebranch plus deterministic GitHub Release bundles - Permanent layers: Arweave permanence, automatic DocChain attestations, and NFT-based verification/visualization
| Goal | Read |
|---|---|
| Understand the public value | docs/faq.md |
| Set up a node | docs/setup.md |
| Operator and sweeper model | docs/operator.md |
| Understand the architecture | docs/architecture.md |
| Understand the snapshot rules | docs/snapshot-spec.md |
| The chain profile (normative spec) | docs/profile.md |
| The chain: consensus core + observation log | docs/chain.md |
| Join late and attest from genesis in one tx | docs/late-join.md |
| Build attestations | docs/attestation-design.md |
| Verify a daily archive | docs/verification.md |
| Consume the archive (pointers, latest.json) | docs/consuming.md |
| Develop locally | docs/development.md |
| Catch up a node | docs/roll-forward.md |
| Learn the Science | docs/glossary.md |
The public catalog comes primarily from one source, Space-Track (US Space Force), and is made more accessible by individual volunteer efforts like CelesTrak and KeepTrack.space. Those services are valuable. RSO Archive depends on Space-Track and does not replace any of them.
Public access is not the same as durable public memory. A daily, reproducible archive gives future users a stable artifact to cite, mirror, compare, and verify, even if live APIs, formats, accounts, or institutional priorities change.
Orbital Witness fixes that by making the archive a reproducible public process:
prior snapshot + bounded Space-Track GP_HISTORY delta
|
v
canonical JSON catalog
|
v
SHA-256 hash + manifest + ledger + release bundle
If independent nodes produce the same daily hash, the record is being witnessed, not merely hosted.
Live archive baseline:
2026-04-20
Current implementation:
- zero runtime dependencies; Python stdlib only
- daily scheduled GitHub Actions workflow
- fork-safe
main/nodebranch model - rolling catalog snapshots from bounded
gp_history - current-GP visibility audits
- deterministic GitHub Release bundles
- optional Arweave upload with nonfatal failure receipts
main: code, docs, workflows, and controller logicnode: generated archive state, includingdata/,ledger.json, retained bootstrap catalogs, generated reports, and storage receipts
Forks should include all branches so the upstream node bootstrap state is
copied. After that, do not use GitHub's Sync fork button as normal
maintenance; the daily workflow updates main from upstream and applies the
code to node without overwriting node-generated archive state.
See docs/setup.md for the exact setup path, and docs/operator.md for the operator overview.
On the operator's node branch:
data/YYYY/MM/DD/manifest.jsondata/YYYY/MM/DD/annotations.jsondata/YYYY/MM/DD/conjunctions.jsondata/YYYY/MM/DD/delta.jsondata/YYYY/MM/DD/audit.jsondata/YYYY/MM/DD/visibility_state.jsondata/YYYY/MM/DD/storage.jsonledger.jsoncatalog.json.gzfor the newest two archived days
As a release asset:
rso-archive-YYYY-MM-DD.tar.gz
The consensus object is the core projection hash (content_sha256): the
SHA-256 of the canonical catalog with the nine mutable object-directory fields
excluded, because Space-Track back-patches those in place on published rows.
The raw catalog (all 39 fields, exactly as returned) stays the archival
artifact; annotations.json records what the node learned about the
mutable fields and when (directory edits, decay messages, reentry
predictions), and conjunctions.json preserves the day's public
close-approach warnings — a feed that cannot be re-queried later. See
docs/chain.md for the
measurements behind the split. The release URL, storage URI, and Arweave
transaction ID are never part of consensus; attestations sign the exact bundle
SHA-256 so mirrors can be checked byte-for-byte.
- Create a free Space-Track.org account.
- Fork this repo with all branches. Leave GitHub's Copy the main branch only option unchecked.
- Enable GitHub Actions and workflow write access.
- Add
SPACETRACK_USERandSPACETRACK_PASSas Actions secrets. - Run Validate RSO Archive.
- Enable and manually run Daily RSO Snapshot once.
- Optional: add a disposable no-funds EOA secret so the same workflow publishes signed DocChain attestations for sweepers.
Detailed instructions: docs/setup.md.
python3 pipeline/snapshot.py verify --date 2026-05-01More verification options: docs/verification.md.
- Architecture
- Snapshot specification
- Attestation design
- Verification
- Development
- Roadmap
- Prior art and acknowledgments
- Full design background
CC0 1.0 Universal
The community is the infrastructure. The art is the dashboard. The meme is the message.