Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证An interactive map of the world's oil and gas system: reserves, extraction, pipelines, refineries, LNG terminals and voyages, storage and ports, 1990–2024. It includes disruption scenarios that show who is exposed when a chokepoint or pipeline is cut. It was built for energy-policy researchers and IR/economics scholars.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Who loses supply when a chokepoint closes or a pipeline is cut? An open, inspectable model of oil and gas dependency: pick a disruption and see which importers, exporters, refineries and LNG terminals are exposed, by how much, and from which source — over a map of the infrastructure and trade it is computed from (reserves, extraction, pipelines, refineries, LNG terminals and voyages, storage and ports). It was built for energy-policy researchers and IR/economics scholars who think in systems, and every number on it traces to a cited public source.查看完整 README ↗Who loses supply when a chokepoint closes or a pipeline is cut? An open, inspectable model of oil and gas dependency: pick a disruption and see which importers, exporters, refineries and LNG terminals are exposed, by how much, and from which source — over a map of the infrastructure and trade it is computed from (reserves, extraction, pipelines, refineries, LNG terminals and voyages, storage and ports). It was built for energy-policy researchers and IR/economics scholars who think in systems, and every number on it traces to a cited public source.
Live: https://energymap.marain.space
Built and maintained by Narendra Nag as a project of Marain. Terms of use · Privacy
?year= link shows the numbers as of that year with an "as of" chip./methodology explains each layer, /data lists every file with its licence and checksum, and /query is a SQL console over the same files for anyone who wants to ask their own question.What it deliberately doesn't do: price responses, rerouting, strategic stocks, or daily flows. Scenario results are exposure accounting, not a market model.
| You are… | Read |
|---|---|
| An energy researcher using the map | docs/researchers/: tour, worked examples with links, the scenario method in plain language, coverage and caveats, citing and reuse, FAQ |
| Building with AI agents, or pointing an agent or LLM at this data | docs/ai/: how this was built with coding agents, the reusable playbook, and the machine interface (URL grammar, schemas, recipes) · /llms.txt |
| Contributing code or data | CLAUDE.md (stack, schema, commands, conventions) · docs/refresh.md (data refresh runbook) · docs/superpowers/ (specs and plans) |
| Layer | Count | Source (licence) |
|---|---|---|
| Proved reserves, oil and gas, by country | 1990–2020 (frozen after); production through 2025 | Energy Institute Statistical Review (view only) |
| Oil and gas extraction sites | 7,055 | Global Energy Monitor (CC BY 4.0) |
| Oil, NGL and gas pipelines | 3,957 (build year known for 64 % oil, 74 % gas) | Global Energy Monitor (CC BY 4.0) |
| Refineries | 1,164 (capacity known for 350) | NETL GOGI (public domain) + OpenStreetMap (ODbL) |
| LNG terminals | 314 | LNG-T3, Zhou, C. 2026 (CC BY 4.0) + GEM |
| LNG voyages, 2020–2024 | 17,592 | LNG-T3 (CC BY 4.0) |
| Petroleum basins · storage hubs · ports | 1,046 · 7,733 · 3,694 | NETL GOGI (public domain) |
| US shale-region production (Permian, Bakken, Eagle Ford, Haynesville, Appalachia), 2009–2025 | 170 country/region-years | EIA Short-Term Energy Outlook (public domain) |
| EU gas storage + LNG send-out, daily, 2020– | 188,767 rows, 22 countries | GIE AGSI / ALSI (view only) |
| Recent monthly crude + LNG imports, 2025–2026 | 8,839 rows | UN Comtrade (view only) |
| Daily chokepoint transits (Hormuz, Malacca, Suez, Bab el-Mandeb, Bosporus), 2019– | 14,205 rows | IMF PortWatch; vessel data Kpler, UN Global Platform (view only) |
| Bilateral crude (HS 2709) and LNG (HS 271111) trade, 1995–2024 | 53,727 country-pair-years | CEPII BACI (Etalab Open Licence 2.0) |
| Scenario route shares, 12 scenarios (16 oil/gas route-share sets) | 527 rows, each with a citation (plus 54 intra-Gulf Hormuz pairs and 3 Turkish-Straits pairs set to 0) | EIA / IEA and operator reports |
Known limits that matter:
See data and coverage.
/data and from the map's Share menu. The Energy Institute series and the mixed-licence asset table are view-only; assets_open.parquet is the downloadable asset table without the OpenStreetMap rows. Per-source terms and the attribution lines to keep are in LICENSE-DATA.md (plain language, not legal advice).CITATION.cff or GitHub's "Cite this repository". To cite a specific view with its source dates, use Share → Cite this view.LICENSE)./terms (not advice, no warranty, attribution and acceptable use) and /privacy (no accounts or cookies; cookieless Vercel analytics; OpenFreeMap tiles). Sources: docs/legal/.pnpm install
pnpm dev # http://localhost:3000 (predev copies the self-hosted DuckDB files)
# Data pipeline (Python via uv; sources pinned in scripts/common/sources.py)
uv sync
uv run python -m scripts.build_all --ingest # first time: download pinned sources, then build
uv run python -m scripts.build_all # rebuild public/data/ from data/raw/ — byte-identical reruns
# Tests
pnpm lint && pnpm typecheck && pnpm test # ESLint, tsc, Vitest
uv run python -m pytest tests/python # transforms, schemas, data integrity
pnpm build && CI=1 pnpm test:e2e # Playwright against a production build (~15 min)
Stack: Next.js 16, React 19, TypeScript strict; deck.gl 9 inside MapLibre (OpenFreeMap basemap); Parquet read in the browser by hyparquet. DuckDB-WASM is self-hosted and loaded only on /query (a SQL console over the same catalog), never on the map's load path. There is no backend: data files are served as static assets with immutable, content-versioned caching. The build-time pipeline is Python (pandas, pyarrow, geopandas, duckdb). CI runs lint, typecheck, unit, Python and e2e tests (including an axe accessibility scan), plus a post-deploy smoke test.
The site runs on Cloudflare Workers through OpenNext (@opennextjs/cloudflare); it moved from Vercel in October 2026. wrangler.jsonc points at cloudflare/worker.mjs, a thin wrapper that handles /data/* and /duckdb/* itself (year-long caching for ?v= URLs, byte ranges, and the two DuckDB wasm modules streamed from the R2 bucket global-energy-map-assets, because they are over Workers' 25 MiB per-file limit) and passes everything else to Next. Every page is prerendered and served from the asset store.
pnpm run preview # OpenNext build → wasm into the local R2 → wrangler dev on :8787
E2E_PORT=8787 pnpm test:e2e # the e2e suite against that local Worker
pnpm run deploy # OpenNext build → wasm into R2 → wrangler deploy
scripts/smoke/run.sh <url> # pages, catalog sizes + sha256, Range reads, one browser check
pnpm exec wrangler tail global-energy-map --format json # live request log
.github/workflows/deploy.yml does the same deploy and then runs the smoke workflow. It needs the repo secrets CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID. The app reads no secrets at runtime.
Phases 1–10 are complete: layers, scenarios, a correctness pass, consolidation, the product redesign, and launch hardening. Since then: a data-freshness upgrade added live EU gas storage, UN Comtrade recent imports and US shale-region production, and refreshed EI/GOGET/OSM/NETL/BACI to their latest releases; a post-launch UX pass added the /query SQL console, country-click profile panel, header search, trade-flow arcs, embed mode, and five more disruption scenarios (Malacca, Suez + SUMED, Bab el-Mandeb, Turkish Straits, Keystone/Enbridge/ESPO), plus partial-severity closures, two scenarios combined at once, and an exporter-side view of any scenario. Since 2026-10-15 every chokepoint scenario also shows observed traffic: IMF PortWatch's AIS-observed tanker transits over the latest 30 days against a year earlier (view-only; a lower bound when ships run with transponders off). Earlier post-launch work (2026-09-11): intra-Gulf Hormuz trade is no longer counted as exposed, LNG attribution uses only terminals in service that year, the map reads Parquet directly in the page (cold load ≈ 1.2 s at 40 Mb/s, down from ≈ 4.9 s), the storage layer drops EPA records that are not bulk storage, and the scenario panel flags BACI gaps for Iran (2019+) and Russia → Belarus (2022+). Most recently (2026-09-21): the year slider is gone from the UI (every layer shows its latest data by default; ?year= still pins an older view behind an "as of" chip), the copy throughout leads with the scenario question rather than the asset inventory, and every information surface — scenario headline, layer badges, country panel, tooltips — now states the vintage of the data behind it. The history is in docs/history.md, and the roadmap and review in docs/superpowers/specs/. Candidate next steps (coal, tanker AIS, per-basin production, pipelines as vector tiles) are in docs/data-sources.md.
Found an error in the data or the method? Open an issue. The map's error panel pre-fills one.