Draw the AOI. Pack the tiles. Go dark. New

Two new pieces close the basemap gap: vector basemaps in the live map — register Maptoolkit community styles and custom style.json URLs — and an offline tile packager that harvests a drawn AOI from any XYZ/TMS source, raster or vector, into a .mbtiles pack with style, sprites, and glyphs bundled. A vendored MapLibre viewer renders the pack with zero network.

MapLibre Vector StylesAOI: bbox or polygon Vector MVT · Raster XYZMBTiles + style + glyphs Live size estimateAir-gapped viewer
DATA → Basemaps · Offline Tile Packager

The storm kit for maps: pack it while you still have backhaul

Draw a rectangle or polygon over the service territory, point at a tile source, pick the zoom range, and watch the live tile-count and size estimate before you commit. The harvester runs as an async job and drops a self-contained pack folder you can open — or copy to another machine — with no connection at all.

  • Vector basemaps in the live map — register Maptoolkit community styles (summer, light, dark, street, hiking, cycling, winter) with enforced attribution, plus operator-added custom style URLs.
  • Source-agnostic harvester — any {z}/{x}/{y} XYZ/TMS template or remote style.json; format auto-detected (vector MVT or raster), zoom range and pack name yours.
  • Complete packspack.mbtiles + manifest; vector packs also bundle the rewritten style, sprites, and glyphs so labels and icons work offline.
  • True offline viewer — vendored MapLibre GL served from localhost; every byte comes from the pack. No CDN, no cloud, no phoning home.
/api/offline · /api/basemaps
GET  /api/basemaps/styles      → builtin + custom
POST /api/offline/packs
{
  "aoi": "polygon", "zooms": "8–14",
  "source": "https://…/{z}/{x}/{y}.mvt"
}
→ pack.mbtiles + style.json + sprites/ + glyphs/

● offline viewer  /offline-map/?pack=storm-aoi
// vendored MapLibre GL — zero network
In-App Screenshots

Offline Tile Packager & Offline Tile Packages

VoltGrid desktop — Offline Tile Packager dialog with AOI captured on map
Offline Tile Packager dialog: AOI captured from the map, ready to configure a tile source and zoom range
VoltGrid desktop — Raster tile package (.tpkx) loaded offline over the United States
Raster tile package (.tpkx) loaded and rendered offline over the continental United States
VoltGrid desktop — Vector tile package (.vtpk) loaded offline with global earthquake layer
Vector tile package (.vtpk) loaded with custom styling and rendered offline without internet connectivity
Why this matters for ops

A basemap that survives the outage

🌩️

Pre-storm staging

Pack the projected impact area at z8–z14 before landfall — EOC screens and crew laptops keep a full basemap when backhaul dies.

🔒

OT & enclave friendly

Packs are plain folders: build on a connected machine, sneakernet to the air-gapped network, serve from localhost.

⚖️

License-aware by design

Tile sources you choose, attribution enforced, and a mandatory terms acknowledgment when harvesting from a pasted remote style.

Honest boundary: Maptoolkit community basemaps are online-only — their license prohibits harvesting Maptoolkit tiles, sprites, or glyphs for self-hosting, so they are deliberately not offered as offline presets. Offline packs come from operator-supplied or ODbL-clean sources; the operator is responsible for source terms.