Skip to main content

Getting started

routing-earth-utils version

Read this online at docs.routing-earth.com.

routing-earth-utils (CLI is re) is the client software to initialize a local Valhalla graph extract and to consume daily/weekly graph delta updates with up-to-date OSM road data.

Requirements

  • Python ≥ 3.12 (binary wheels for Linux x86_64/aarch64, macOS arm64, Windows amd64)
  • A paid routing-earth.com API key with an entitlement for your scope & cadence (get one at routing.earth)
  • Disk: syncing briefly holds two copies of the extract plus the downloaded bundles (~2× the extract size)

Install

=== "uv"

```sh
uv tool install routing-earth-utils
# or, inside a project:
uv add routing-earth-utils
```

=== "pip"

```sh
pip install routing-earth-utils
```

This installs the re command.

Authentication

The CLI reads your API key from the environment (or pass --api-key):

export RE_API_KEY="re_..."

The key is only ever sent as a Bearer header to the routing.earth API. 401 means the key is invalid, 403 means it has no entitlement for the requested scope & cadence.

re init - Seed the extract

Pick a scope (planet or a region id, e.g. germany) and a cadence (daily, weekly or monthly) matching your plan, then:

re init --tar-extract tiles.tar --scope germany --cadence daily

This downloads the current full snapshot, verifies its signature, and writes a ready-to-serve extract:

initialized tiles.tar at dataset_id 20260718 (germany/daily)

Serve it

Point Valhalla at the tar in your valhalla.json:

{
  "mjolnir": {
    "tile_extract": "/path/to/tiles.tar"
  }
}

re sync - Keep it current

re sync --tar-extract tiles.tar

This downloads the diff bundle chain, applies it tile by tile, and atomically swaps the new extract into place. If your extract is too far behind, we might decide to pull a fresh full graph.

Every step along the chain is verified via our bundle signatures (Ed25519), and a per-tile checksum check adds additional security. Any failure aborts the sync and leaves your current extract untouched.

Operationally, run re sync on a scheduler with e.g. a 15 mins cadence:

# e.g. crontab, for a daily cadence
*/15 * * * * RE_API_KEY=re_... re sync --tar-extract /srv/valhalla/tiles.tar

Exits with code:

  • 0 on success (including "already current")
  • 1 on any failure

!!! note "Picking up the new extract" The swap is an atomic rename. A running Valhalla keeps serving the old extract from its memory map until it reopens the file — restart or reload the service after a successful sync to serve the new data.

re status - Check local graph's update status

re status --tar-extract tiles.tar
{"tar_extract": "tiles.tar", "dataset_id": 20260718, "scope": "germany", "cadence": "daily", "verdict": "diff-chain", "latest_dataset_id": 20260719, "osm_data_timestamp": "2026-07-19T02:00:00Z"}

Add --offline to simply print the local graph status without requesting our API.

Exits with code:

  • 0 on verdict = current
  • 1 on error
  • 2 on verdict = diff-chain, i.e. graph needs an update

Using the Python API

Everything the CLI does is available as a library — see the API reference, starting with client:

from pathlib import Path
from routing_earth_utils.client import init, sync, tar_status

extract = Path("tiles.tar")
if not extract.exists():
    init(extract, scope="germany", cadence="daily")
result = sync(extract)
print(result.verdict, result.to_dataset_id)

Troubleshooting

Symptom Cause / fix
resolver: HTTP 401 (invalid API key) $RE_API_KEY unset or wrong — check the export and your account.
resolver: HTTP 403 (no entitlement for this scope/cadence) Your plan doesn't cover this scope × cadence — re-check init arguments against your subscription.
not an initialized extract The tar wasn't created by re init (or is some other file). Seed it with init first.
already exists — use sync init never overwrites; advance an existing extract with sync, or remove it to reseed.
Signature / verification errors Fail-closed by design: the download was rejected and your extract is untouched. The <extract>.work dir is kept for diagnosis (safe to delete; the next run starts clean). Retry; if it persists, contact support.
Sync fails with a disk-space error Copy-on-sync needs roughly the extract's size in free space next to it.

Increase verbosity with -v (progress) or -vv (debug); diagnostics go to stderr.

Metadata

Release files for routing-earth-utils 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for routing-earth-utils 0.2.3
File
routing_earth_utils-0.2.3-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
routing_earth_utils-0.2.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 abi3 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
routing_earth_utils-0.2.3-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
routing_earth_utils-0.2.3-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details

Total release size: 838.5 kB

Release files / routing_earth_utils-0.2.3-cp312-abi3-win_amd64.whl

Download URL routing_earth_utils-0.2.3-cp312-abi3-win_amd64.whl
Size 348.6 kB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
83b5a9bdb8c1c0d591a843b2b0aa8dd8f13781fc0f9f273c2d9a539e93c75c48
BLAKE2b-256 checksum
How to use checksums
6399f1a31c0bfa2339b723d70f966a1130319f705222ec1ccf2d7400de53b742
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / routing_earth_utils-0.2.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL routing_earth_utils-0.2.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 198.1 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
9f8eb55bd2db9654a1b85a1cc2e22dd8cd492c4eac50540b67dd777e7ab0118e
BLAKE2b-256 checksum
How to use checksums
831d3a8772e0af4823b4bbd29fd11da4a24b6dfcfbd4c988889928d02feb36ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / routing_earth_utils-0.2.3-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL routing_earth_utils-0.2.3-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 184.4 kB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
12f5845e380dc210e310d9c8c2ab74aeaeaadf10b5c158fbe2110b49991ad77e
BLAKE2b-256 checksum
How to use checksums
0c00bc4980e1f12792840c9b7d8889a463ad2f06c8722c26b148ca6f98795521
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / routing_earth_utils-0.2.3-cp312-abi3-macosx_11_0_arm64.whl

Download URL routing_earth_utils-0.2.3-cp312-abi3-macosx_11_0_arm64.whl
Size 107.4 kB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
89c9381ebf244b7b23864d3162ae8014e02afda22a6587abdfa44f7314869ceb
BLAKE2b-256 checksum
How to use checksums
ba9e7157a85ea944e25a2971625706e7efb9539771c0749e0734d414ecc3dc6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.0

4 release files

This release

0.2.3 This release

4 release files

0.2.2

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page