Routing documentation In development
Geolith Routing
A Rust router with Valhalla-compatible /route, /isochrone, /sources-to-targets and map matching endpoints, answering from the routing part of a .glx file that geolith builds from OpenStreetMap. In development: not deployed for public use, and api.geolith.app has no routing endpoint.
In development. In development, not deployed for public use. On Berlin, routes on geolith-built tiles are byte-identical to Valhalla 3.9.1. A test Worker answers them, but edge latency is not good enough yet; no hosted API, no pricing.
Plan
What exists and what is planned
The routing part
Road graph tiles on three grids, in one .glx file read by range.
Valhalla-compatible API
Route, isochrone, matrix and map matching with Valhalla bodies. Not callable yet.
Edge only
One Rust router, built to WebAssembly, in a Worker that reads R2.
Untrusted tiles
Bounds-checked decoders, no unsafe. A malformed tile is refused whole.
Byte-identical to Valhalla
On Berlin: 100/100 auto routes on geolith tiles, 0 missed. Same JSON, byte for byte.
Builder done
geolith --output-format routing writes the graph as 64 KiB zstd blocks.
Navigate
Jump into the docs
Overview
What geolith Routing is, how it works, and its status.
Read moreHow it works
From OpenStreetMap to a route: the builder, the file, the router.
Read moreThe routing part
The byte layout of the routing part of a .glx file.
Read moreAPI
The six Valhalla-compatible endpoints, one example each. Not callable yet.
Read moreSelf-hosting
The router library, the Worker app, and edge latency as measured.
Read moreStatus and roadmap
Done, in progress and next, with the accuracy tables.
Read moreTraffic and live data
Historical speeds in the routing part, and live speeds and closures from the caller. In development.
Read more