Skip to main content

Nextroute

Nextmv

Nextmv: The home for all your optimization work

Go Test Lint Python Test Python Lint Nextroute Package version Supported Python versions

Welcome to Nextmv's Nextroute, a feature-rich Vehicle Routing Problem (VRP) solver written in pure Go and supported in Python. Designed with a focus on maintainability, feature-richness, and extensibility, Nextroute is built to handle real-world applications across all platforms that Go (cross)compiles to.

Our goal is not to compete on specific VRP type benchmarks, but to provide a robust and versatile tool that can adapt to a variety of routing use-cases. Whether you're optimizing the routes for a small fleet of delivery vans in a city or managing complex logistics for a global supply chain, Nextroute is equipped to help you find efficient solutions.

📖 To learn more about Nextroute, visit the docs.

Installation

Go

Install the Go package with the following command:

go get github.com/nextmv-io/nextroute

Python

The package is hosted on PyPI. Requires Python >=3.10. Install using the Python package manager of your choice:

  • uv

    uv add nextroute
    
  • pip

    pip install nextroute
    
  • pipx

    pipx install nextroute
    

Features

Feature Description
Alternate stops Specify a set of alternate stops per vehicle for which only one should be serviced.
Compatibility attributes Specify which stops are compatible with which vehicles.
Capacity Set capacities for vehicles and quantities (demanded or offered) at stops.
Cluster constraint Enforce the creation of clustered routes.
Cluster objective Incentivize the creation of clustered routes.
Custom constraints Implement custom constraints with Nextmv SDK.
Custom data Add custom data that is preserved in the output.
Custom matrices Use custom matrices to achieve more precise drive time.
Custom objectives Implement custom objectives with Nextmv SDK.
Custom operators Implement custom operators with Nextmv SDK.
Custom output Create a custom output for your app.
Distance matrix Specify a distance matrix in the input that provides the distance of going from location A to B.
Duration matrix Specify a duration matrix in the input that provides the duration of going from location A to B.
Duration groups Specify a duration that is added every time a stop in the group is approached from a stop outside of the group.
Early arrival time penalty Specify a penalty that is added to the objective when arriving before a stop's target arrival time.
Late arrival time penalty Specify a penalty that is added to the objective when arriving after a stop's target arrival time.
Map data in cloud Calculates duration and distance matrices using a hosted OSRM map service when running on Nextmv Cloud. Note that map data is a paid feature.
Maximum route distance Specify the maximum distance that a vehicle can travel.
Maximum route duration Specify the maximum duration that a vehicle can travel for.
Maximum route stops Specify the maximum stops that a vehicle can visit.
Maximum wait time Specify the maximum time a vehicle can wait when arriving before the start time window opens at a stop.
Minimum route stops Specify the minimum stops that a vehicle should visit (applying a penalty).
Nextcheck Check which stops can be planned or why stops have been unplanned.
Precedence Add pickups and deliveries or specify multiple pickups before deliveries and vice versa.
Stop duration Specify the time it takes to service a stop.
Stop duration multiplier Specify a multiplier on time it takes a vehicle to service a stop.
Stop groups Specify stops that must be assigned together on the same route, with no further requirements.
Stop mixing Specify properties of stops which can not be on the vehicle at the same time.
Time windows Specify the time window in which a stop must start service.
Unplanned penalty Specify a penalty that is added to the objective to leave a stop unplanned when all constraints cannot be fulfilled.
Vehicle activation penalty Specify a penalty that is added to the objective for activating (using) a vehicle.
Vehicle initial stops Specify initial stops planned on a vehicle.
Vehicle start/end location Specify optional starting and ending locations for vehicles.
Vehicle start/end time Specify optional starting and ending time for a vehicle.

Local benchmarking

To run the go benchmarks locally, you can use the following command:

go test -benchmem -timeout 20m -run=^$ -count 10 -bench "^Benchmark" ./...

In order to compare changes from a PR with the latest develop version, you can use benchstat.

# on the develop branch (or any other branch)
go test -benchmem -timeout 20m -run=^$ -count 10 -bench "^Benchmark" ./...\
 | tee develop.txt
# on the new branch (or any other branch)
go test -benchmem -timeout 20m -run=^$ -count 10 -bench "^Benchmark" ./...\
 | tee new.txt
# compare the two
benchstat develop.txt new.txt

Versioning

We try our best to version our software thoughtfully and only break APIs and behaviors when we have a good reason to.

  • Minor (v1.^.0) tags: new features, might be breaking.
  • Patch (v1.0.^) tags: bug fixes.

Metadata

Release files for nextroute 1.13.0

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

Source distribution (sdist)

Source distribution for nextroute 1.13.0
File Size Uploaded
nextroute-1.13.0.tar.gz 26.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for nextroute 1.13.0
File
nextroute-1.13.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
nextroute-1.13.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
nextroute-1.13.0-py3-none-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl Python 3 none Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
nextroute-1.13.0-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details
nextroute-1.13.0-py3-none-macosx_13_0_x86_64.whl Python 3 none macOS 13.0+ x86-64 Details

Total release size: 39.1 MB

Release files / nextroute-1.13.0.tar.gz

Download URL nextroute-1.13.0.tar.gz
Size 26.1 kB
Tags Source
SHA-256 checksum
How to use checksums
462175440c16a19703f2f83e8f684f0d700e6c7f5585f0da68bee78c78e3cf7a
BLAKE2b-256 checksum
How to use checksums
33ead945c8ce10f23b0a5b1ede6a83ef510e799f641b31efc150d634b506290c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 2, 2026.

Transparency log

Release files / nextroute-1.13.0-py3-none-win_amd64.whl

Download URL nextroute-1.13.0-py3-none-win_amd64.whl
Size 7.9 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
0fa10ea114ca353022249e46f75d939dcbc1c0a10cf016a59bac2d09e586f894
BLAKE2b-256 checksum
How to use checksums
2126ba34ecd902e4ef72d555e5eb1551fcc6b3597beac686b47ee80af5db41ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 2, 2026.

Transparency log

Release files / nextroute-1.13.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL nextroute-1.13.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 7.5 MB
Tags Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
258d61711965a101569272f173e83ec5b8056dbb310d081968288daf4dbc138e
BLAKE2b-256 checksum
How to use checksums
552f047d652fb2fb85a12e3dc1d69f748008a1cb1b8b87998c1ac24662e79987
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 2, 2026.

Transparency log

Release files / nextroute-1.13.0-py3-none-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL nextroute-1.13.0-py3-none-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 8.2 MB
Tags Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64 Python 3
SHA-256 checksum
How to use checksums
56faef54cf40567d8ae94ab09592a58884c1304133e49e84ab98207935e22fd8
BLAKE2b-256 checksum
How to use checksums
27bb288077fbe07f3fbfe43a55b46e5cf4abf70d238d4bbab4c8956c3a6b622d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 2, 2026.

Transparency log

Release files / nextroute-1.13.0-py3-none-macosx_14_0_arm64.whl

Download URL nextroute-1.13.0-py3-none-macosx_14_0_arm64.whl
Size 7.5 MB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
9ba4a4a94e570ba54650d2e7c83f5a30b89e3dc2c0609552c706b1a09aee3b17
BLAKE2b-256 checksum
How to use checksums
e40c34e0f240b97dcd969a0eab8d8a154f9fdc34bfef3bd62c6e789166952ed7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 2, 2026.

Transparency log

Release files / nextroute-1.13.0-py3-none-macosx_13_0_x86_64.whl

Download URL nextroute-1.13.0-py3-none-macosx_13_0_x86_64.whl
Size 8.1 MB
Tags Python 3 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
ff0e635f4f6e6ac8b6e25fe060ec5ad1d9653d1087d854d394bc35257ca20dee
BLAKE2b-256 checksum
How to use checksums
8158881b0e5b248600fc43afd47b6993f0ffbef753ad019c552ef54dba9dc5f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.13.0 This release

6 release files

1.9.0

26 release files

1.8.1

26 release files

1.8.0

25 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