🏫 rand0m.ai 2025-2030 🛸 roswell, ga 🍑 ᴚk.xyz + ᴚk.llc + ᴚk.org 🏰
🌝 randomly.engineering & knightly.engineering 🌚
View Demo
·
View Docs
·
Report Bug
The living globe for rand0m.ai is keyless, open-source, clone-and-run.
A self-contained Flutter web app that renders Earth's real environmental signals as an animated globe with a Planet Health Score. It reads public rand0m.ai Storage over plain HTTPS and ships with bundled representative data, so it always renders offline: no keys, no auth, no Firebase, no private dependencies.
Prerequisites: the Flutter SDK (stable, Dart ≥ 3.6) and Chrome.
One command from a fresh clone:
git clone https://github.com/random-knights/xyz-earth.git && cd xyz-earth && flutter run -d chrome(flutter run fetches dependencies itself; no accounts, no keys, no .env.)
That's the whole setup. The globe boots from bundled representatives and upgrades to live data wherever a public rand0m.ai Storage object exists. There is nothing to configure and no secret to provide.
Build a static bundle (e.g. to host or to attach to a Release):
flutter build web
# output in build/web/- Toggle an Animate layer (wind / ocean currents / waves), a scalar Overlay (SST, air quality, forest, …), and a Points layer (wildfires, glaciers, power plants, …).
- Read the Planet Health Score ring (global) and open the History panel for the daily score over time.
- HD raises the flow-field particle budget; Spin auto-rotates the globe.
The viewer reads the public rand0m.ai Storage bucket directly:
https://storage.googleapis.com/randomknights-xyz.firebasestorage.app/<object>
- Score:
earth/score/health-score.json· historyearth/score/health-history.json - Scalar grids (
earth.scalarfield.v1):earth/<layer>/...-grid.json - Point sets (
earth.pointset.v1, identity-stripped): wildfire, biodiversity, …
Each source tries the public live object and, on any failure (offline, a
not-yet-deployed object, a non-public 403), falls back to the bundled
representative asset under assets/earth/. The app never crashes and never
blocks on auth. A live-ready manifest skips fetches for objects known to be
undeployed, and every live fetch has a timeout.
The score math is frozen at v0.7 (owner-ratified). This app only reads and displays the score document. It never recomputes or alters it.
2D globe (earth2d), wind layer. Static preview · open the interactive mock » (drag to rotate). Illustrative wind field, not live data.
A single number per region and globally, blending nine Earth-system domains. It is an estimate, not a certified assessment; every signal carries a confidence label.
| Domain | What it measures | Primary source |
|---|---|---|
| Land | Tree-cover health, forest loss rate | GLAD Hansen / VCF5KYR |
| Fire | Active hotspot burden, 24 h window | NASA FIRMS |
| Atmosphere | Air-quality burden, AQI-weighted | CAMS |
| Ocean temperature | SST anomaly vs 1991-2020 WMO baseline | NOAA OISST / Open-Meteo Marine |
| Ocean acidification | pH trend stress signal | (open for proposals) |
| Cryosphere | Sea-ice extent and anomaly | (expanding) |
| Biodiversity | Species pressure / habitat integrity proxy | GBIF |
| Conservation | Protected-area coverage signal | IUCN / WDPA |
| Anthroposphere | Human-pressure index (gHM-grounded) | Global Human Modification index |
Domains are anchored against planetary boundary thresholds (Rockström et al.). Signals within a domain are averaged; each domain contributes once to the global score. Normalizers are locked at ratification (anchored), not floating with observed ranges.
v0.7 adds two honesty refinements: protected-areas de-saturation (coverage is
scored on a saturating curve that treats the 30×30 target as a safe floor, not a
perfect score) and a humility ceiling (every domain's health is softly
compressed above 90 so no domain can ever read as a "solved" 100). The bundled
representative asset mirrors the live v0.7 document and is guarded against
methodology drift by test/score_asset_drift_guard_test.dart.
gantt
title Future Proofing
dateFormat YYYY-MM
section 2026
✌️ :a1, 2026-01, 365d
❤️ :active, a1, 2026-01, 365d
🌎 :crit, a1, 2026-01, 365d
If you have a suggestion that would make this better, fork the repo and open a pull request — or open an issue with the tag "enhancement". Don't forget to star the project!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
follow our progress on GitHub @ Random Knights
Everything you see is aggregated and identity-free by design:
- No callsigns, vessel names, tail numbers, registrations, or personal identifiers, ever. Identity suppression is a property of the data, not a display-time filter.
- No precise sensitive locations. Ambient mobility layers (flights, boats) are decimated and rendered non-interactive (flow, not followable targets).
- Open scientific sources only, each carrying its provider's license.
Contributors must keep this bar. See CONTRIBUTING.md and
the Code of Conduct. The
test/keyless_guard_test.dart gate proves the tree stays free of secrets, auth
SDKs, and private dependencies.
Discussions →: score methodology, data-source proposals, license questions, and layer requests.
- Code: MIT.
- Methodology & governance docs: CC BY 4.0.
- Brand assets (the rand0m logo/header, brand colors beyond the few inlined
UI tokens): reserved, not covered by the MIT code license. See
NOTICE. The app's runtime does not depend on the brand logo. - Upstream data & bundled third-party code: each carries its provider's
license. See
NOTICE(NOAA, NASA, CAMS, GLAD, IUCN/WDPA, Natural Earth, gHM, WRI, d3/topojson, …).
| Name | 🐿️ | Version | Description |
|---|---|---|---|
| Earth+ | 🌎 | v1.2.0 | Earth Health Scoring |
| AiEDs | ⚡ | v2.4.0 | AI Energy Disclosure |
| K13 | 👑 | v2.1.0 | AI Response Summary |
| AI for Good | ❤️ | · | (ITU) · (UN) Recommendations |
- RUNBOOK.md - humans: how it deploys (merging to main publishes the live site), roll back, what breaks and how to fix it.
- AGENTS.md - agents: the rules that apply in this repo.
|
⚡ |
🌫️ |
🌳 |
🔢 |
Tree-Time is the time one mature tree (two or more years of growth) needs to capture this carbon at its yearly rate, 21 kg CO₂e per year; shown in days.
The figures above are the AiEDs impact of developing this repository,
measured by a SessionEnd hook on the developers' machines and reported under AiEDs section 2.4.1,
which counts plain input, cache-creation and cache-read tokens all as input at the input coefficient.
98.5 percent of our input is cache reads, so that rule decides the answer by 8.4x.
Weighting a cache read at 0.1 instead gives 0.7 kWh, 0.3 kg CO₂e, 5 days of Tree-Time.
That lower figure is a local departure from the standard, not a reading of it. It is
published because it is what this project offsets against.
Equivalencies
The same educational comparisons the rand0m.ai app renders, from the same constants. Educational comparisons, not measurements.
| Equivalent | Amount | Basis |
|---|---|---|
| Phone charges | 464 | 12 Wh per charge |
| LED bulb hours | 557 | 10 W bulb |
| Laptop hours | 111 | 50 W laptop |
| Driving distance | 14 km | 170 g CO₂e per km |
| Tree-Time | 42 days | 21 kg CO₂e per mature tree per year |
Offset
What the figures above cost, and what it would take to absorb them. Modeled, like everything else here.
Energy cost: USD 1.02. 5.6 kWh at USD 0.1834 per kWh, the United States average residential price for June 2026 (18.34 cents per kilowatthour), from U.S. Energy Information Administration, Electric Power Monthly, Table 5.3. The rate is pinned, not looked up at render time, so this figure is reproducible.
Modeled provider spend: USD 17.84. The same sessions priced at published API list prices, rates version 2026-09-01, with cache writes at 1.25x and cache reads at 0.1x an input token. It is a MODEL, not a bill: this work runs on a subscription, so the marginal cost was nothing. It covers the 3 of 6 sessions counted above whose model that file prices; the other 3 carry a model nobody has priced and add nothing, rather than an assumed rate.
Trees needed: 1. 2.4 kg CO₂e divided by 21 kg CO₂e, the yearly capture of one mature tree, rounded up: 1 mature tree would absorb this carbon within one year. Put the other way round, that is the Tree-Time above: one mature tree working for 42 days.
Offset cost: USD 0.01. 0.0 tonnes of CO₂e at USD 6.03 per tonne, the REDD+ (Reduced Emissions from Deforestation and Degradation in Developing Countries) average, 2024, Ecosystem Marketplace, State of the Voluntary Carbon Market 2025, Table 4. That is a nature-based avoidance and protection, not removals average: this project prices itself against keeping land, animals and trees standing, never against carbon removals or industrial and household offsets. Buying an offset is not the same as not spending the energy, and this line does not claim otherwise.
class-estimated, the second-weakest provenance tier
· grid 429 gCO₂e/kWh pinned
· measured by a `SessionEnd` hook, not modeled from a guessEnergy and carbon are modeled estimates. Tree-Time and equivalents are educational comparisons.
Measured by a SessionEnd hook on one developer machine; a second machine's ledger is not yet merged in, over 293 recorded sessions covering 2026-07-27 to 2026-09-13, which is every session the hook recorded and no session it did not. Two attribution bases are published: BY LANE LEDGER in the table above, and BY WORKING DIRECTORY, the stricter view, in aieds-readme.json. The organization totals are the same under both. Both bases are DATE AWARE: the application repository was named xyz until 2026-08-19 and is named ruok now, so a row written before that day is placed on the repository the name meant then. Any offset figure is a nature-based average, not removals. Generated, never hand-typed.
If any issues arise, please draft a strongly worded email and never send it to: admin@rand0m.ai
