// the find
CrunchyData/pg_tileserv
A very thin PostGIS-only tile server in Go. Takes in HTTP tile requests, executes SQL, returns MVT tiles.
pg_tileserv is a minimal Go server that sits in front of PostGIS and serves Mapbox Vector Tiles over HTTP. Point it at a DATABASE_URL, and every spatial table or MVT-returning function the connected user can see becomes a tile endpoint automatically. It's for GIS developers who already have PostGIS and want to skip the Geoserver/MapServer weight.
The function layer design is genuinely clever — any PL/pgSQL function with z/x/y args that returns bytea is instantly a tile endpoint, which means spatial processing logic (hexagonal aggregation, radius clipping, dynamic geometry) lives in SQL where it belongs, not in a middleware layer. Multi-layer tile requests via comma-separated table names in the URL reduce round trips without any config. The security model is just Postgres permissions — no ACL system to maintain, the DB user controls exactly what's visible. Docker image is 18MB, which is honest about what this thing actually does.
No tile caching built in — the README explicitly tells you to put Varnish in front, which is fine advice but means a cold cache under any real load hammers Postgres directly. The CQL filter support (custom ANTLR grammar, cql/ directory) is a significant complexity addition for a 'very thin' server, and if there are bugs in that grammar it's painful to debug. Auto-discovery of tables requires geometry columns to have explicit SRID and type in the schema — views work but need casts, which is a footgun for anyone creating views from existing tables. Last meaningful commit activity has slowed, and it's still targeting Go module patterns from a few years back; the martin tile server (which it flatters by mimicking the API) has more active development and built-in caching.