NDVI computed live over the Algarve
Rust OGC CITE 135/0 MPL-2.0

The OGC map server, rebuilt from scratch.

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.

$ docker run --rm -p 8080:8080 ghcr.io/terraops-org/terraserve:latest
# sample dataset baked in, open localhost:8080/xray
146 MB
the whole server, no GDAL
135 / 0
OGC CITE WMS 1.3.0, certifiable
119 MB
memory it settles to after a burst
14.9 M
building shapes from one live demo
NDVI · computed live · demo/ndvi

Why from scratch

Every byte is code we own.

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.

Clean-room

A gate in the build

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.

Small & predictable

Memory freed the moment a request returns

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.

Proven correct

Measured against the reference tools

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

One pipeline: read -> reproject -> style -> serve.

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.

01

Read

Only the tiles you asked for, from disk or streamed from cloud storage

02

Reproject

Into the map grid the client wants, poles included

03

Style

Colours, classes and labels, from an SLD or a MapLibre style

04

Serve

WMS · WMTS · TMS · vector tiles · PMTiles

The differentiator

Read only where you look.

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.

4 MB
to open a 3.8 GB / 14.9 M-shape file
0.085 s
a zoomed-in tile at full detail, live
14.9 million Iberia buildings in the X-ray viewer
14.9M buildings · demo/vida

Benchmarks

Fast under pressure. Light on your server.

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.

3.6× faster
Stays fast in a traffic spike
slowest responses when 128 people load a map at once
119 MB
Memory it holds, then gives back
drops to 119 MB idle vs 408 MB / 1.9 GB kept reserved
146 MB
Size to deploy
about a quarter of the others, and no bundled GDAL
on par
Everyday speed
matches MapServer request-for-request
Straight talk

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.

OGC CITE · WMS 1.3.0
135 / 0
Certifiable on the official OGC test engine
OGC CITE · WMS 1.1.1
104 / 1
Core-certifiable (~99%); the gap is optional-tier, documented

How it was built

AI wrote it. Experience directed it.

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.

01
File reader
Bespoke GeoTIFF / tiling / warp
02
WMS · WMTS · TMS
One tile core, many protocols
03
OGC certifiable
135/0 on the official engine
04
Vector + styling
GeoPackage · FlatGeoBuf · tiles
05
Windowed reads
Open huge files in megabytes