martin is a free, open source databases project written in Rust and released under Apache-2.0. It has 3,925 GitHub stars, 388 forks and 52 open issues, and was last pushed 74 minutes ago. On this registry it ranks #166 of 203 tracked projects in Databases, with 5 head-to-head comparisons available.

What is martin?

Martin is a Rust-based tile server and toolkit from the MapLibre project that generates vector tiles on the fly from PostgreSQL/PostGIS databases and GeoJSON files, serves tiles from PMTiles, MBTiles and GeoParquet sources, and ships command-line tooling for bulk tile generation and MBTiles maintenance, aimed at teams that self-host map tiles under heavy traffic.

What it is

Martin is an open-source tile server and a set of supporting tools, distributed under the MapLibre organisation with documentation at martin.maplibre.org and maplibre.org/martin. It is written in Rust, listed in this registry under Infrastructure & Operations / Databases, and the registry records its licence as Apache-2.0, while the README states that it is licensed under either Apache License 2.0 or the MIT license, at the user's option. Beyond serving tiles, it also serves styles and generates sprites and font glyphs on the fly, so a map client can point at a single Martin instance for both tiles and the assets a style needs.

The concrete problem it solves is the glue code that usually sits between a spatial database and a tile cache. Martin reads PostGIS databases and automatically discovers compatible tables and functions, which removes the need to hand-write a layer definition for every table. It converts GeoJSON files to vector tiles on the fly, so there is no separate pre-rendering step, and it can pass tiles through from an upstream HTTP tile server or combine several sources into one composite source. For offline work, the martin cp subcommand generates tiles in bulk from any Martin-supported source into an MBTiles file, and the mbtiles tool examines, copies, validates, compares and applies diffs between MBTiles files. The project explicitly optimises for speed and heavy traffic.

Key capabilities

  • Serve vector tiles from PostGIS databases, automatically discovering compatible tables and functions.
  • Serve PMTiles from local files and over HTTP, and serve MBTiles files.
  • Convert GeoJSON files to vector tiles on the fly, and read GeoParquet files via DuckDB (unstable).
  • Passthrough tiles from an upstream HTTP tile server, and combine multiple tile sources into one composite source.
  • Serve styles and generate sprites or font glyphs on the fly.
  • Generate tiles in bulk into an MBTiles file with the martin cp subcommand.
  • Examine, copy, validate, compare and apply diffs between MBTiles files with the mbtiles tool.

Who uses it and how

  • Teams serving map tiles under heavy traffic, the workload Martin is built and optimised for, running the Rust server themselves instead of a hosted tile service.
  • Operators whose authoritative geodata already lives in large PostgreSQL/PostGIS databases: Martin discovers compatible tables and functions and publishes them as vector tiles without a separate export step.
  • Teams shipping MBTiles or PMTiles artifacts to browser clients, which the topic list indicates through maplibre-gl-js, mapbox-gl-js and leaflet; Martin serves those files directly, including PMTiles over HTTP.
  • Pipelines that need a portable tile archive: martin cp produces a bulk MBTiles file from any supported source, and the mbtiles tool validates and diffs those archives afterwards.
  • Operators who need to front or merge existing tile services, using passthrough and composite sources rather than re-rendering data.

Getting started

Install the martin crate published on crates.io, following the Installation page at maplibre.org/martin/installation/, then run it with the CLI or a configuration file; the Quick Start at maplibre.org/martin/quick-start/ covers the shortest path.

How it compares

No paid products or comparable tools are named in the facts provided for this registry entry. Martin therefore stands alone in this registry on the comparison axis.

When to use it — and when not to

A self-hoster must operate PostgreSQL/PostGIS for database sources and DuckDB for GeoParquet, and no hosted option is described in the facts, so the server and its upstream database remain the team's responsibility. GeoParquet support is explicitly marked unstable, and the README also describes a narrower licence position than the registry records, since it offers Apache-2.0 or MIT at the user's option while the registry lists Apache-2.0 only, which is worth confirming before adopting. Teams that do not want to run and maintain a PostGIS instance alongside a Rust service should not pick Martin.

project readme (upstream, from github) — read inline

Martin

Book docs.rs docs GitHub crates.io version Security audit CI build OpenSSF Best Practices

Martin is a tile server and a set of tools able to generate vector tiles on the fly from large PostgreSQL databases and GeoJSON files, and serve tiles from PMTiles and MBTiles files. It can also serve vector tiles from GeoParquet files via DuckDB (unstable). Martin optimizes for speed and heavy traffic, and is written in Rust.

Features

  • Serve vector tiles from
    • PostGIS databases, automatically discovering compatible tables and functions
    • PMTile, both local files and over HTTP
    • MBTile files
    • GeoJSON files, converted to vector tiles on the fly
    • GeoParquet files via DuckDB, converted to vector tiles on the fly (unstable)
  • Passthrough tiles from an upstream HTTP tile server
  • Combine multiple tile sources into one
  • Serve styles and generate sprites or font glyphs on the fly
  • Generate tiles in bulk from any Martin-supported sources into an MBTiles file with the martin cp subcommand
  • Examine, copy, validate, compare, and apply diffs between MBTiles files with mbtiles tool

Documentation

Getting Involved

Join the #maplibre-martin slack channel at OSMUS -- automatic invite is at

Contributing

Like any open source project, Martin welcomes contributions from anyone who wants to help improve it.

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Frequently asked questions

Is martin free to use?

martin is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does martin do?

Blazing fast and lightweight PostGIS, MBtiles and PMtiles tile server, tile generation, and mbtiles tooling.

What is martin written in?

martin is primarily written in Rust. Its source is publicly available at https://github.com/maplibre/martin, and it has 3,925 GitHub stars.