# MapLibre GL / Protomaps

Vector maps you host. MapLibre GL JS is BSD-3-Clause; Protomaps is BSD-3-Clause PMTiles — Mapbox without the map load meter.

**Replaces:** Mapbox

**Tier:** Medium

## Problem

Mapbox meters map loads, tiles, and the GL JS SDK. You wanted vector tiles and a renderer whose license you can read. MapLibre GL JS is BSD-3-Clause (maplibre/maplibre-gl-js), the community fork of Mapbox GL JS v1. Protomaps is BSD-3-Clause PMTiles (protomaps/go-pmtiles) so a map can be one file you host. This is not Mapbox's every geocoding/navigation SKU — that slice is /replace/google-maps (Nominatim, GraphHopper). Street View stays behind.

## Stack

- [MapLibre GL JS](https://maplibre.org/maplibre-gl-js/docs/) — BSD-3-Clause vector map renderer in the browser
- [Protomaps](https://protomaps.com) — BSD-3-Clause PMTiles archives you host as a single file

## Estimated SaaS cost saved

| You stop paying | Typical / year | Self-host instead |
|---|---:|---|
| Mapbox (small team) | $1,200 | MapLibre GL JS + PMTiles |

**About $1,200 / year** on a small team, before you count lock-in.

## Deploy on Railway

Placeholder: serve a PMTiles file (or a tile server) plus a static page that loads MapLibre GL JS. A volume for the archive. No one-click template in this repo yet — Start on Railway. Geocoding/routing stays on /stacks/osm-maps.

[Start on Railway](https://c17.io/go/railway/maplibre-tiles?from=%2Fstacks%2Fmaplibre-tiles.md)

[Nominatim / GraphHopper if this is geocoding and routing, not vector tiles](https://c17.io/stacks/osm-maps)

## AGENT_PROMPT

```
Replace Mapbox GL / tiles with MapLibre GL JS and a Protomaps PMTiles file (or another OSM tile source you host).

- One map page, one archive or tile URL. Do not claim Mapbox geocoding or navigation APIs — those stay on /stacks/osm-maps.
- Write AGENT_PROMPT.md.
```

## FAQ

### MapLibre or Protomaps?

MapLibre is the renderer. Protomaps is tiles in a file. You usually want both.

### Why not the Google Maps page?

/replace/google-maps is geocoding, routing, and embeds (Nominatim, GraphHopper, uMap). This page is Mapbox-shaped vector tiles and GL JS.

### Do I get Mapbox geocoding?

No. Nominatim is /replace/google-maps.

Source: https://c17.io/stacks/maplibre-tiles
