How it works: one memory-mapped file per country
A Rust engine reads a country's addresses straight from one memory-mapped file on disk. Nothing is loaded into a database, so it starts in milliseconds and runs on a laptop.
The file
Each country is a single file (the optional points-of-interest layer for France is a separate one): street, municipality and postcode indexes as finite-state transducers, and house numbers in compact blocks. The engine memory-maps it, so the operating system reads only the pages a query touches. Layout: file format specification.
The engine
Written in Rust, used from the command line, from Python (a wheel built with pyo3), from DuckDB (a community extension) and from AI agents (an MCP server). Exact lookups run at about 3,000 per second on one laptop core. Source: github.com/gridpin/gridpin, Apache-2.0.
$ gridpin query france.bin "1 rue de la Paix Paris" -k 3 $ gridpin batch france.bin in.jsonl out.jsonl -k 1