50,000 free calls a month, card-free. Get an API key →

The build log

We built MapMap in stealth between January and July 2026. These are the notes we kept as we shipped each piece, published together now that we are out of stealth. Each post is dated to when the work happened rather than when it went up, so the feed reads in build order.

Every post is also served as raw markdown. Append .md to the URL. Feeds: RSS · JSON · Agents: /llms.txt

Route lines, contour rings and tile grid squares converging from many directions into a single resolved node.
PinnedCompany10 min

Introducing MapMap: out of stealth, still in beta

MapMap is a self-hostable navigation platform covering routing, guidance and vector maps, now out of stealth in beta with a free tier of 50,000 calls a month.

Extruded rectangular building prisms rising to varying heights from a flat street-network plan, with simple canopy forms scattered between them and height datum lines marked as an axonometric study.
Maps8 min

How we built London in 3D

LIDAR-derived heights for 10,473 buildings, a street-tree survey join, three Blender landmark bakes and facades generated at runtime with no image assets.

A single framed map view held in registration brackets like a photographic plate, with a route line entering the frame and continuing across it as printed geometry.
Maps5 min

Static map images with no key, built for agents

mapmap.ai/api/static-map renders PNG, WebP or JPEG maps with route, GeoJSON or marker overlays, with no API key, rate-limited instead of metered.

Two coordinate grids at slightly different orientations, overlapping at one corner, with a single route line threading from one grid into the other through the narrow gap where their lines briefly align.
Platform8 min

Migrating from Google Maps: what changes and what does not

Google made Directions, Distance Matrix and Places legacy on 1 March 2025. The Routes API that replaced them has no truck mode. The honest endpoint mapping.

Concentric isochrone rings radiating from small charge-point nodes on a faint tile grid, with a single route line linking two of the nodes.
Agents5 min

Autonomous agents built an EV charging app in under a day

Autonomous coding agents built a working EV charging app on the MapMap SDK in under a day, and the live app now runs on our Built with MapMap page.

A route line passing through a gate of parallel ledger bars, small filled circles queued along a counter-running payment channel beneath it.
Agents6 min

x402 is live on mainnet, and agents have already paid

The hosted gateway now accepts x402 payments in USDC on Base and Solana, and the first mainnet settlements from a stock agent client are on-chain.

A slim upright handheld device rendered in fine linework, its screen holding a turn-by-turn route with node dots, a directional chevron locator and a manoeuvre arrow, ringed by dashed guidance circles and corner registration brackets.
SDK7 min

We built a full navigation app on MapMap

A complete turn-by-turn navigation app for iOS and Android, built from one Expo React Native codebase on our published SDKs. Run it, test it, fork it.

A self-contained territory of contours and roads enclosed by a rectangular boundary frame, its connection lines severed at every edge.
Platform9 min

Sovereign navigation: run the whole stack yourself

The same MapMap stack runs as our hosted API or entirely on your hardware, air-gapped, on signed territory packages, for a licence plus a data subscription.

Route geometry and contour lines dissolving at one edge into an ordered grid of uniform data cells and bracket glyphs.
Agents9 min

Maps for AI agents, with no human in the loop

MapMap's signup is an API call: POST /v1/keys returns a live key worth 1,000 calls over 72 hours, with no card, no CAPTCHA and no sales conversation.

Two networks of identical road geometry side by side in different line conventions, with registration marks bridging between them as one overlays the other.
Platform7 min

Migrating from Mapbox: what changes and what does not

Most of a Mapbox Directions integration moves to MapMap with a URL and key swap: our compatible endpoint returns OSRM routes and Mapbox-shaped instructions.

A measuring dial with graduated tick bands of increasing coarseness, beside a stepped tiered profile drawn as a descending staircase.
Platform8 min

Metered keys and pricing: prepaid only, no surprise billing

MapMap bills prepaid credit only: 50,000 free calls a month, then 0.05p a standard call and 1p a premium one, and a 402 or 429 instead of an invoice.

A turnstile gate mechanism with a single coin token passing through it, an itemised quote ladder of tick marks alongside.
Agents7 min

x402 machine payments: what is live, what is not

Every MapMap 402 carries the x402 wire body and the same quote arithmetic now settling on mainnet; the 402-versus-429 rules here are still the contract.

An open technical manual of layered instructional diagrams feeding knowledge into a set of tool heads along leader lines.
Agents6 min

Skills are what an agent knows, tools are what it does

Ten MapMap agent skills install in one command and teach a coding agent the truck, ADR, maps and self-host knowledge that MCP tool schemas cannot express.

A central hub node with twelve tool spokes radiating outward, each ending in a different geometric fitting.
Agents7 min

Seventeen MCP tools, one URL, no key to connect

The MapMap MCP server exposes seventeen tools over one URL with no key to connect, including a WCAG audit that lets an agent check its own map is readable.

Four stacked service containers joined by short pipe runs, the assembly enclosed in a rack outline inside a heavy perimeter wall.
Infrastructure7 min

The self-host distro: four services, one Compose file

The MapMap self-host distro is four Docker Compose services, two of them off by default, running air-gapped from a pre-built territory package on your own rack.

A sealed rectangular map package drawn as a stack of content layers with a wax seal and key motif, beside a smaller delta fragment aligning into a gap.
Infrastructure7 min

Signed territory packages, and only the delta over the air

Every MapMap territory package is ed25519-signed with BLAKE3 content-addressed layers, so a device downloads only the layers that changed, not the continent.

A route line continuing through a dense hatched no-connection zone, with every surrounding signal arc and network link severed at its boundary.
SDK7 min

Offline turn-by-turn navigation, ADR rules included

MapMap's offline turn-by-turn runs routing, debounced rerouting and ADR tunnel enforcement on the device, so a tanker in a tunnel keeps its compliance rules.

A single hexagonal core with two identical binding shafts extending symmetrically into two differently shaped device outlines.
SDK8 min

Android, iOS and WASM from one Rust core

Android, iOS and @mapmap/core are three sets of generated bindings over one Rust core, published from sdk-v* tags, so device and server never disagree.

A chase camera drawn as a wireframe frustum hovering behind a locator puck on a route line, with pitch and bearing arcs marked as dimension annotations.
SDK6 min

The navigation camera follows the snapped fix, not GPS

NavigationCamera in @mapmap/maps is a course-up chase cam with pitch 60, zoom 17 and a low-anchored puck, driven from the road-snapped fix, never raw GPS.

A motorway approach splitting into five lanes, each with its own directional arrow, some crisp and others fading to dashed outlines where the data thins.
SDK6 min

Lane diagrams from OSM turn:lanes, and when we omit them

MapMap draws lane diagrams in banner instructions from OpenStreetMap turn:lanes data, and omits the sub line where that tagging is absent rather than guessing.

A junction in plan view with a manoeuvre arrow curving through it, beside a stacked column of blank instruction banners and a sound waveform.
SDK7 min

Voice and banner instructions in the Mapbox shape

MapMap's compatible endpoint returns voiceInstructions and bannerInstructions in the Mapbox field shape, so an existing navigation UI parses our JSON unchanged.

Several closed vehicle tours of differing line weight leaving one shared depot node, each threading an ordered sequence of stop markers without crossing.
Routing8 min

Route optimisation over a truck-aware matrix

POST /optimise plans multi-vehicle fleets over a matrix from our own engine, so truck dimensions and ADR codes shape the plan. A request bills a flat 10 calls.

A jittery trail of noisy position dots drawn onto a clean road centreline by perpendicular correction ticks, raw trace and snapped path shown as two lines.
Routing7 min

Map matching: which roads a vehicle actually drove

POST /trace_route snaps a noisy GPS trace into a displayable route and POST /trace_attributes returns the matched road segments, both at 0.05p per trace.

A grid of origin and destination points with measurement lines drawn between every pair, forming a dense woven lattice with one block delineated.
Routing7 min

POST /matrix bills a call per started block of 25 elements

POST /matrix returns durations and distances for every source and target pair, billing one call per started block of 25 elements, capped at 10,000 per request.

Concentric reachability rings spreading unevenly from one origin, stretched by the road network into lobes rather than circles.
Routing6 min

Truck isochrones, billed one call per contour

POST /isochrone returns reachability contours as GeoJSON with truck limits enforced in costing, billed one call per contour and capped at 10 per request.

A scatter of unlabelled address points resolving into one precise crosshair, with search radius circles and candidate boxes narrowing along a road line.
Maps7 min

First-party geocoding: one engine, online and offline

MapMap serves GET /geocode and /geocode/reverse in-process from sn-geocode, our own tantivy engine, at 0.05p per Standard call, with Photon now a fallback.

A map canvas drawn as a thin rectangular frame holding route geometry and a locator puck, surrounded by construction lines and mounting brackets.
SDK7 min

The web maps SDK wraps MapLibre, it does not fork it

The @mapmap/maps package wraps MapLibre GL JS at version 0.1.0, adding tiles, styles, typed routing and a navigation camera without forking the renderer.

One map fragment repeated across four panels, each drawn with different line weights, hatching and fill patterns, like a printer's proof sheet.
Maps8 min

Studio: design a map style, and check it can be read

MapMap Studio designs a branded map style in the browser and publishes it as an immutable URL, with a WCAG contrast audit built into the theme engine.

An isometric grid of square map tiles carrying road and contour fragments that continue into their neighbours, some lifted to reveal the layer stacking.
Maps7 min

Hosted vector tiles and styles, scoped to territories

The gateway serves Mapbox Vector Tiles, TileJSON 3.0 and a MapLibre style per territory at 0.05p a request, cut from the archives the routing engine uses.

An exploded parts diagram of a machine, every component separated on a leader line to its own empty label plate.
Infrastructure8 min

Permissive licences only, enforced in CI, SBOM per release

Every MapMap distributable is permissive-licensed, enforced by cargo deny in CI on every push, with a CycloneDX 1.5 SBOM of 492 components per tagged release.

A cross-section of a road tunnel portal in engineering linework, with route lines fanning away and diverting around it under layered contour bands.
Compliance8 min

ADR tunnel compliance, enforced in costing

POST /adr/check returns the ADR 8.6.4 tunnel-entry verdict with its reasoning at 1p a call, and the same rules shape routes in costing before geometry exists.

An articulated lorry reduced to a wireframe box, ringed by height, width and length measurement lines beneath a low bridge with nested clearance envelopes.
Routing8 min

Truck routing with dimensions enforced in costing

MapMap puts height, width, length and weight inside the cost model itself, so a 4.2 m trailer is never planned under a 4.0 m bridge. Truck calls cost 1p each.

A dense core of interlocking gears and graph edges, with three identical road networks radiating outward in perfect register.
Routing8 min

Why we built our own routing core in Rust

MapMap runs one Rust routing core reaching Android, iOS and the browser, so a truck's height, weight and ADR tunnel code shape the route rather than filter it.