TerraServe turns satellite imagery and map data into maps for any GIS client, over WMS, tiles and more, with no GDAL, no MapServer and no GeoServer underneath. Every byte is code we wrote, in Rust. It runs lean, it stays fast under pressure, and it passes the OGC conformance tests.
Why from scratch
Most map servers are a thin layer over GDAL, a huge, decades-old C library. TerraServe has none of it. The file readers, the reprojection plumbing, the tiling, the styling, the OGC protocols: all of it is written fresh in Rust. That is what keeps the server small, steady on memory, and free of the dependency behind most "my map server ate all the RAM and crashed" stories.
The build refuses to compile if GDAL, or any off-the-shelf GeoTIFF or GeoPackage reader, sneaks in. If the shortcut were there, the whole point would be lost.
No garbage collector, no cache that quietly grows forever. Under a traffic spike it holds a firm ceiling and hands the memory back when the rush passes, so it runs on a cheap server without falling over.
Every pixel and value is checked against GDAL and PROJ as an outside oracle, plus the formal OGC conformance suite, so "it looks right" is never good enough.
The engine
A request comes in for a piece of the world. TerraServe reads only the bytes it needs, puts them in the right map projection, paints them with your style, and streams the result back, as a picture (WMS) or as vector tiles the browser draws itself.
Only the tiles you asked for, from disk or streamed from cloud storage
Into the map grid the client wants, poles included
Colours, classes and labels, from an SLD or a MapLibre style
WMS · WMTS · TMS · vector tiles · PMTiles
The differentiator
Point TerraServe at a 4-gigabyte file of 15 million buildings and it opens in 4 megabytes of memory, because it reads only the small piece under your current view, not the whole file. A dataset that would sink a load-everything server runs comfortably on a small box.
Benchmarks
Head-to-head with MapServer 8.6 and GeoServer 2.26, all drawing the same 842,000-shape land-cover map. Everyday speed is a tie with MapServer. Where TerraServe pulls ahead is the moments that hurt.
MapServer 8.6 is a touch faster on everyday, one-at-a-time requests, and we're not hiding that. TerraServe's edge shows up under load: when a crowd arrives together, its slowest visitors wait about 0.6 s instead of about 2 s, it hands memory back when the rush passes, and the whole server is a quarter the size. Every number is reproducible, and the test scripts ship with the code.
How it was built
It was not weeks of typing. It was a sequence of decisions. AI agents proposed each capability, and an engineer who has shipped geospatial software for decades ruled on every one. Correctness was never assumed, it was measured against GDAL, PROJ and OGC conformance at each step.
Live demos
Each one is a real dataset on a small server, and each exercises a different trick: pre-baked tiles, windowed reads of a file too big to load, live math per request, vector tiles on a national grid most stacks can't touch, and calling the engine straight from Python with no server at all. Open any card to see exactly how it's served, flag by flag.