Skip to content

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.

  • martin

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 //{z}/{x}/{y}
check command=jq –version
check command=martin –version
check command=/usr/local/bin/gpq-tiles –version
check command=test -d /workspace/tiles/pmtiles