Tileserver RS
Available on GitHub Releases Browser-Local AI — no API keys

Serve Vector TilesAt Lightning Speed

One Rust binary. All geospatial formats. Vector tiles, raster tiles, PostGIS collections, COG, STAC, and OGC APIs  everything you need to serve maps at scale, with a browser-local AI that actually talks to your data.

brew install vinayakkulkarni/tap/tileserver-rs

Capabilities

Everything you need to serve vector tiles

Data formats

PMTiles & MBTiles

Native support for modern PMTiles and classic MBTiles tile archives with MVT and MLT format support.

PostgreSQL / PostGIS

Serve vector tiles directly from PostGIS tables with optimized spatial queries.

Cloud Optimized GeoTIFF

Serve raster tiles from COG files with on-the-fly reprojection and colormap support.

PostgreSQL Out-DB Rasters

Dynamic VRT/COG tile serving via PostGIS functions with query-based filtering.

GeoParquet Source

Serve vector tiles directly from GeoParquet files — no preprocessing. Point at Overture Maps data and get instant tiles.

DuckDB Backend

Generate tiles from SQL queries against embedded DuckDB. Query GeoParquet, CSV, or any format DuckDB reads — PostGIS power, zero ops.

OGC API Features

Serve PostGIS tables as OGC-compliant feature collections. CRS reprojection, CQL2 filtering with SQL-injection defence, full CRUD write operations, and JSON Schema introspection. QGIS, ArcGIS, and FME ready.

STAC Catalog Sources

Point at any STAC API (Element84, Planetary Computer, USGS) and serve COGs as tiles. Static discovery, dynamic per-tile bbox search, and multi-asset mosaic compositing — all without preprocessing.

Rendering

Blazing Fast

Built in Rust for maximum performance. Serve tiles with sub-millisecond latency.

MLT Transcoding

On-the-fly MLT↔MVT transcoding. Serve next-gen MapLibre Tiles from existing MVT sources — up to 6x smaller tiles.

Vector & Raster

Serve vector tiles directly or render them to raster on-the-fly.

Static Images

Generate static map images like Mapbox Static API with native MapLibre rendering.

Developer experience

Zero-Config Startup

Point at a directory or file and start serving. Auto-detects PMTiles, MBTiles, styles, and fonts.

Hot-Reload

Reload configuration without downtime via SIGHUP or admin API. Zero-request-drop with ArcSwap.

Drag & Drop

Drop GeoJSON, KML, GPX, CSV, Shapefile, PMTiles, MBTiles, or COG files onto the map for instant visualization with auto-styling.

OpenAPI & Analytics

Interactive OpenAPI spec with Scalar UI. Generate SDKs, import into Postman, or track usage with built-in telemetry.

Configurable Caching

Per-source cache control headers with configurable max-age, stale-while-revalidate, and CDN-friendly strategies for optimal tile delivery.

Deployment

Self-Hosted

Run on your own infrastructure. No vendor lock-in, no API keys required.

One-Click Deploy

Deploy to Railway, Render, DigitalOcean, or Fly.io in minutes. Sample data auto-downloads on first start.

Intelligence

Browser-Local AI

Talk to your maps with a built-in LLM. Runs entirely in your browser via WebGPU — no API keys, no cloud, no token costs.

AI Assistant

AI Without the Landlord

Your maps, your GPU, your data. The built-in AI assistant runs entirely in your browser — no API keys, no cloud inference, no per-token billing. Just open the chat and talk to your maps.

Zero Data Leakage

Every query stays in your browser. Map data, questions, and results never touch a third-party server.

WebGPU Powered

Runs on your GPU via WebLLM. No server to maintain, no API keys to rotate, no monthly AI bills.

Natural Language Control

Fly to locations, filter layers, query features, and restyle your map — all by chatting in plain English.

10+ Map Tools

fly_to, fit_bounds, set_layer_paint, query_rendered_features, spatial_query, and more — all callable by the LLM.

AI Chat — browser-local, WebGPU

You

Show me all buildings in downtown Tokyo

AI

Flying to [139.7670, 35.6812] at zoom 15 ✅ Found 847 building features in viewport Highlighting buildings with height > 100m...

You

Make parks greener and more visible

AI

✅ Set park fill-color to #22c55e, opacity to 0.7

No tokens. No telemetry. No landlords.

The AI runs a quantized LLM directly on your GPU via WebGPU — the same technology that powers browser gaming. First load downloads the model (~2 GB), then it’s cached in your browser forever.

  • Works offline after first model download
  • 10+ map tools: navigate, filter, style, query
  • Spatial queries against your tile data
  • Chat history persisted locally in IndexedDB

Benchmarks

Benchmarked & Proven

Real numbers from Docker-to-Docker benchmarks on ARM64. Single-tile throughput and real-world viewport grid loads — no marketing fluff.

0

ms to fill 4×4 viewport

4× faster than tileserver-gl

0

Grids/sec at z14

PMTiles 4×4 viewport load

0

PostGIS req/sec at z14

7.45ms avg, 410 MB/s throughput

~0

MB/s throughput

Steady across the city zoom band

Configuration

Simple Setup

Get started with a simple TOML configuration file. Define your tile sources, styles, and server settings in one place.

  • Multiple tile sources (PMTiles, MBTiles, PostGIS, COG)
  • Custom MapLibre GL styles
  • In-memory tile caching with TTL
  • Configurable CORS and connection pooling
config.toml
# Tile sources
[[sources]]
id = "openmaptiles"
type = "pmtiles"
path = "/data/tiles.pmtiles"
serve_as = "mlt"  # MVT→MLT on the fly

# PostgreSQL / PostGIS
[postgres]
connection_string = "postgresql://user:pass@localhost/db"

[[postgres.tables]]
id = "buildings"
table = "buildings"
geometry_column = "geom"

API Reference

RESTful API

Simple, standards-compliant API with a built-in OpenAPI spec — something neither tileserver-gl nor martin offer. Explore the API

Interactive OpenAPI Spec

Every endpoint fully documented with request/response schemas. Generate client SDKs, import into Postman, or browse the Scalar UI.

Vector Tiles

GET/data/{source}/{z}/{x}/{y}.pbf
GET/data/{source}/{z}/{x}/{y}.mlt
GET/data/{source}.json

COG/Raster Tiles

GET/data/{cog}/{z}/{x}/{y}.png
GET/data/{cog}/{z}/{x}/{y}.webp

PostgreSQL Out-DB Rasters

GET/data/{source}/{z}/{x}/{y}.png?satellite=...

Style Rendering

GET/styles/{style}/{z}/{x}/{y}.png
GET/styles/{style}/{z}/{x}/{y}@2x.png

Static Images

GET/styles/{style}/static/{lon},{lat},{zoom}/{w}x{h}.png

Health & Admin

GET/health
GET/ping
POST/__admin/reload

Compare

Compare against the alternatives

We didn’t rebuild these. We rolled them into one binary.

Feature tileserver-rsmartintileserver-glpg_tileservtitiler
Vector tiles (MVT/PBF)
MLT transcoding
Raster tiles from COG
Server-side MapLibre rendering
PostGIS-backed tiles
OGC API Features (CRUD)
STAC catalog sources
Browser-local AI
Single binary (no Python deps)
OpenAPI spec built-in
Zero-config startup
Drag-and-drop file serving

Features as of April 2026. Alternatives may have added features since — check their docs.

Ready to Deploy?

Deploy your own tile server in minutes with our comprehensive documentation.