Ephemera ephemera.space
Every eight hours, SpaceX publishes where each Starlink satellite is going, with its uncertainty. It is the only public feed of its kind. Each set is replaced by the next. Ephemera keeps the history.
The archive record
As of 2026-09-03 12:20 UTC the archive holds 15 cycles. 14 are complete with Merkle roots and 14 are anchored in Bitcoin through OpenTimestamps. Raw data kept: 314 GB. Poller heartbeat coverage: not yet measured (heartbeat history shorter than 24 h). Cadence holds (a manifest served longer than 9 hours): 1. This project exists because SpaceX publishes the feed openly.
| first seen (utc) | cycle | files recorded | raw gb | merkle root | opentimestamps | wayback machine |
|---|---|---|---|---|---|---|
| 2026-09-03 12:09 | a39dfdfee0fd | pulling now: 0 of 11,117 so far | 0.0 | none | follows the pull | pending |
| 2026-09-03 04:13 | 1e726fe006d9 | 11,118 / 11,118 | 22.5 | 449b43de57fa | block 965263 | manifest ok, 10/10 samples verified |
| 2026-09-02 22:54 | b37c74c03907 | 10,682 / 10,682 | 21.7 | 3b31bf7689b6 | block 965241 | manifest ok, 10/10 samples verified |
| 2026-09-02 20:15 | 3572d8775913 | 11,118 / 11,118 | 22.5 | e84216948e7b | block 965229 | manifest ok, 10/10 samples verified |
| 2026-09-02 12:08 | f5112bb77a2a | 11,092 / 11,092 | 22.5 | b46aca785a05 | block 965172 | manifest ok, 10/10 samples verified |
| 2026-09-02 04:12 | 0a85a65d5dbe | 11,093 / 11,093 | 22.5 | 381a895ce84e | block 965124 | manifest MISSING, 10/10 samples verified |
| 2026-09-01 23:24 | 51d5c047650a | 10,902 / 10,902 | 22.2 | b0f2521600e2 | block 965103 | manifest ok, 10/10 samples verified |
| 2026-09-01 20:09 | 7414ea02eac1 | 11,093 / 11,093 | 22.5 | 58ba872f5507 | block 965085 | manifest MISSING, 10/10 samples verified |
| 2026-09-01 12:26 | 7be3c2c6fc2c | 11,094 / 11,094 | 22.5 | 4d03a6f8fe32 | block 965040 | manifest ok, 10/10 samples verified |
| 2026-09-01 02:22 | d03dc522da18 | 11,093 / 11,093 | 22.5 | 5d69cd6dc0c9 | block 964976 | manifest ok, 4/10 samples verified, 6 lost |
| 2026-08-31 20:22 | 513b92c4683e | 10,481 / 10,481 | 21.3 | 476705cfc526 | block 964940 | manifest MISSING, 0/10 samples verified, 10 lost |
| 2026-08-31 11:44 | 1d424255c9ae | 8,568 / 8,568 | 17.4 | 6df13e066f37 | block 964903 | manifest ok, 10/10 samples verified |
| 2026-08-31 04:09 | 5e4faf0f4e4e | 9,353 / 9,353 | 19.0 | 91ca361b797a | block 964904 | lost: cycle superseded before witnessing completed: 1 manifest + 10 sample captures never made |
| 2026-08-30 20:02 | 92e6892c0f3e | 9,111 / 9,111 | 18.5 | 8c653747b19a | block 964904 | lost: cycle superseded before witnessing completed: 1 manifest + 10 sample captures never made |
| 2026-08-30 13:32 | 72bcd7796b49 | 17,861 / 17,861 | 36.2 | 677d3043ef28 | block 964904 | lost: cycle superseded before witnessing completed: 1 manifest + 10 sample captures never made |
Method: built from each cycle's cycle.json and witness.json in the poller's spool; coverage is the fraction of the last 24 h's minutes with a watcher heartbeat under 10 minutes old (D18); a cadence hold is a manifest first-seen gap over 9 h. Poller: home (Cape Town, residential; single poller until poller A exists). Full data: ledger.json; the verification procedure a stranger can run is in the repository's VERIFY.md (independent Merkle re-implementation, OpenTimestamps against a Bitcoin block, Wayback copies re-hashed).
Daily roots
2026-09-02: 647c6951a21d (block 965241) 2026-09-01: 7ecb7906d01b (block 965103) 2026-08-31: 948ecce3337d (block 964963) 2026-08-30: 1d7acc715f62 (block 964927)
Catalogue visibility
How far the public catalogue's prediction sits from the operator's, for every satellite in a cycle. The public element set (Space-Track) is propagated with SGP4 to the operator file's own epochs, every 360 minutes across the file's span, and the distance is taken. Both are predictions. The operator's file includes planned trajectory changes the public set cannot know about, so a large distance is that gap, not an error of the satellite. Public GP data is too noisy to test sub-metre covariance; the self-consistency scoreboard, when it exists, measures prediction-versus-later-prediction.
Latest scored cycle 1e726fe006d9 (first seen 2026-09-03 04:13 UTC): 11,091 of 11,118 files scored against the snapshot fetched 2026-09-03 04:10 UTC (12811 element sets); 27 without a public set, 0 marked decayed, 0 propagation failures, 0 unreadable. Mean element age across the comparison: 57.9 h. Scored 2026-09-03 09:31 UTC. See it on the globe: every satellite drawn twice, the operator trajectory and the public catalogue's ghost.
| element age | comparisons | median km | 90th pct km | within 10 km | within 30 km |
|---|---|---|---|---|---|
| 0-6 h | 14 | 0.7 | 2.3 | 100% | 100% |
| 6-12 h | 1,030 | 5.2 | 39.2 | 65% | 87% |
| 12-24 h | 11,367 | 5.2 | 42.4 | 72% | 87% |
| 24-48 h | 41,455 | 11.0 | 81.2 | 48% | 80% |
| 48-72 h | 43,907 | 25.0 | 221.4 | 35% | 54% |
| over 72 h | 45,447 | 39.6 | 214.0 | 29% | 46% |
Element age is the evaluation epoch minus the public element set's epoch; a negative age means the set was published after that point of the file. Age and time-into-file are correlated within one cycle, so these bins are not yet a clean age effect.
| cycle first seen | cycle | scored | public snapshot | median km, age 0-6 h | median km, all | within 10 km | within 30 km | scored at (utc) |
|---|---|---|---|---|---|---|---|---|
| 2026-09-03 04:13 | 1e726fe006d9 | 11,091 / 11,118 | 2026-09-03 04:10, fetched before the cycle | 0.7 | 16.3 | 40% | 62% | 2026-09-03 09:31 |
| 2026-09-02 22:54 | b37c74c03907 | 10,655 / 10,682 | 2026-09-02 22:10, fetched before the cycle | 2.0 | 14.3 | 43% | 64% | 2026-09-03 09:46 |
| 2026-09-02 20:15 | 3572d8775913 | 11,091 / 11,118 | 2026-09-02 20:07, fetched before the cycle | 1.8 | 12.1 | 46% | 68% | 2026-09-03 10:16 |
| 2026-09-02 12:08 | f5112bb77a2a | 11,091 / 11,092 | 2026-09-02 20:07, fetched after the cycle (the cycle predates the catalogue feed) | 1.1 | 8.9 | 52% | 73% | 2026-09-03 10:48 |
| 2026-09-02 04:12 | 0a85a65d5dbe | 11,091 / 11,093 | 2026-09-02 20:07, fetched after the cycle (the cycle predates the catalogue feed) | 1.0 | 6.4 | 59% | 78% | 2026-09-03 11:19 |
| 2026-09-01 23:24 | 51d5c047650a | 10,901 / 10,902 | 2026-09-02 20:07, fetched after the cycle (the cycle predates the catalogue feed) | 1.1 | 5.4 | 62% | 80% | 2026-09-03 11:46 |
Method: Public element set (Space-Track gp snapshot) propagated with SGP4 (skyfield 1.55, python-sgp4 2.27; TEME to GCRS by Skyfield, taken as J2000) and differenced against the operator-published trajectory (EME2000) at the file's own record epochs every 360 min. Distance in km; components in the operator's radial/in-track/cross-track frame; altitude is geocentric radius minus 6378.137 km; element age is evaluation epoch minus element-set epoch, signed. Both inputs are predictions; the operator's includes planned trajectory changes the public set cannot know about.
Contact
Kira Ryan. KiraRyan27@gmail.com, linkedin.com/in/kira-ryan.