osm-tools
| Version | 2026.144.1443 |
| Repo | superproject |
OSM tile-pipeline CLIs (tippecanoe/gdal/pmtiles/gpq-tiles) plus the martin vector-tile server supervised on port 3000 Bundles every CLI the OSM data pipeline needs — tippecanoe (GeoJSON → MBTiles/PMTiles, built from felt/tippecanoe source), the gdal CLIs ogr2ogr/ogrinfo (format conversion), the pmtiles inspection CLI, and gpq-tiles (direct GeoParquet → PMTiles) — and runs martin, the Rust vector-tile server, as a supervised service. martin reads tiles from the user-owned /workspace/tiles/pmtiles/ volume via a wrapper that pre-creates the directory, so DAG output and tile-server input share one persistent location and martin answers GET /catalog on port 3000 the moment it starts. Every claim below is verifiable: each binary on disk responding to –version, the wrapper script present and executable, and a live service + reachable-port + HTTP-catalog probe against the running deployment.
Services
Section titled “Services”martin
Acceptance plan
Section titled “Acceptance plan”This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.
| Intent | Step |
|---|---|
run |
command=set -euo pipefail git clone –depth 1 https://github.com/felt/tippecanoe /tmp/tippecanoe cd /tmp/tippecanoe make -j“$(nproc)“ make install PREFIX=/usr/local cd / rm -rf /tmp/tippecanoe |
run |
download=https://github.com/maplibre/martin/releases/download/martin-v1.9.0/martin-${BUILD_ARCH}-unknown-linux-musl.tar.gz |
run |
command=set -euo pipefail LATEST=$(curl -fsSL “https://api.github.com/repos/protomaps/go-pmtiles/releases/latest” | jq -r ‘.tag_name’) VERSION=“${LATEST#v}” TMPDIR=$(mktemp -d) cd “$TMPDIR” curl -fsSL “https://github.com/protomaps/go-pmtiles/releases/download/${LATEST}/go-pmtiles_${VERSION}_Linux_${BUILD_ARCH}.tar.gz” \ -o pmtiles.tar.gz tar -xzf pmtiles.tar.gz pmtiles install -m 0755 pmtiles /usr/local/bin/pmtiles cd / && rm -rf “$TMPDIR” |
run |
command=set -euo pipefail cargo install gpq-tiles –root /usr/local –jobs “$(nproc)” rm -rf /root/.cargo/registry /root/.cargo/git \ /root/.cargo/.crates.toml /root/.cargo/.crates2.json |
run |
write=/usr/local/bin/martin-wrapper.sh |
check |
tippecanoe (built from felt/tippecanoe source) responds to –version |
check |
the gdal ogr2ogr conversion CLI responds to –version |
check |
the pmtiles inspection CLI responds to its version subcommand |
check |
the gpq-tiles GeoParquet→PMTiles converter is installed at /usr/local/bin/gpq-tiles |
check |
the martin (musl) tile-server binary is installed at /usr/local/bin/martin |
check |
the martin start wrapper is present and executable (0755) |
check |
the martin supervisord program is running |
check |
the martin port accepts a TCP connection from the host |
check |
martin answers GET /catalog with HTTP 200 (empty source list pre-DAG, populated post-DAG) |
agent-check |
martin auto-discovers PMTiles files written into /workspace/tiles/pmtiles/ and serves each as a named vector-tile source (Content-Type application/x-protobuf) under / |
check |
command=jq –version |
check |
command=martin –version |
check |
command=/usr/local/bin/gpq-tiles –version |
check |
command=test -d /workspace/tiles/pmtiles |