Skip to main content

Vehicle routing open-source optimization machine (VROOM)

Project description

Python Vehicle Routing Open-source Optimization Machine

gh_action codecov pypi

Good solution, fast… in Python.

Pyvroom is an Python wrapper to the excellent VROOM optimization engine for solving vehicle routing problems.

The library aims to solve several well-known types of vehicle routing problems, including:

  • Travelling salesman.

  • Capacitated vehicle routing.

  • Routing with time windows.

  • Multi-depot heterogeneous vehicle.

  • Pickup-and-delivery.

VROOM can also solve any mix of the above problem types.

Basic usage

>>> import vroom

>>> problem_instance = vroom.Input()

>>> problem_instance.set_durations_matrix(
...     profile="car",
...     matrix_input=[[0, 2104, 197, 1299],
...                   [2103, 0, 2255, 3152],
...                   [197, 2256, 0, 1102],
...                   [1299, 3153, 1102, 0]],
... )

>>> problem_instance.add_vehicle([vroom.Vehicle(47, start=0, end=0),
...                               vroom.Vehicle(48, start=2, end=2)])

>>> problem_instance.add_job([vroom.Job(1414, location=0),
...                           vroom.Job(1515, location=1),
...                           vroom.Job(1616, location=2),
...                           vroom.Job(1717, location=3)])

>>> solution = problem_instance.solve(exploration_level=5, nb_threads=4)

>>> solution.summary.cost
6411

>>> solution.routes.columns
Index(['vehicle_id', 'type', 'arrival', 'duration', 'setup', 'service',
       'waiting_time', 'location_index', 'id', 'description'],
      dtype='object')

>>> groups = solution.routes[solution.routes.type == "job"].groupby("vehicle_id")["id"].apply(lambda x: set(x.dropna().astype(int)))
>>> groups[47] == {1414, 1515} and groups[48] == {1616, 1717}
True

Usage with a routing engine

>>> import vroom

>>> problem_instance = vroom.Input(
...     servers={"auto": "valhalla1.openstreetmap.de:443"},
...     router=vroom._vroom.ROUTER.VALHALLA
... )

>>> problem_instance.add_vehicle(vroom.Vehicle(1, start=(2.44, 48.81), profile="auto"))

>>> problem_instance.add_job([
...     vroom.Job(1, location=(2.44, 48.81)),
...     vroom.Job(2, location=(2.46, 48.7)),
...     vroom.Job(3, location=(2.42, 48.6)),
... ])

>>> sol = problem_instance.solve(exploration_level=5, nb_threads=4)
>>> 3800 < sol.summary.duration < 4200
True

Installation

Pyvroom currently makes binaries for on macOS and Linux. There is also a Windows build that can be used, but it is somewhat experimental.

Installation of the pre-compiled releases should be as simple as:

pip install pyvroom

The current minimal requirements are as follows:

  • Python at least version 3.10.

  • Intel MacOS (or Rosetta2) at least version 15.0.

  • Apple Silicon MacOS at least version 15.0.

  • Windows on AMD64.

  • Linux on x86_64 and Aarch64 given glibc at least version 2.34.

Outside this it might be possible to build your own binaries.

Building from source

Building the source distributions requires:

  • Download the Pyvroom repository on you local machine:

    git clone --recurse-submodules https://github.com/VROOM-Project/pyvroom
  • Install the Python dependencies:

    pip install -r pyvroom/build-requirements.txt
  • Install asio headers, and openssl and crypto libraries and headers. For mac, this would be:

    brew install openssl@1.1
    brew install asio

    For RHEL:

    yum module enable mariadb-devel:10.3
    yum install -y openssl-devel asio

    For Musllinux:

    apk add asio-dev
    apk add openssl-dev
  • The installation can then be done with:

    pip install pyvroom/

Alternatively it is also possible to install the package from source using Conan. This is also likely the only option if installing on Windows.

To install using Conan, do the following:

cd pyvroom/
conan install --build=openssl --install-folder conan_build .

Documentation

The code is currently only documented with Pydoc. This means that the best way to learn Pyvroom for now is to either look at the source code or use dir() and help() to navigate the interface.

It is also useful to take a look at the VROOM API documentation. The interface there is mostly the same.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyvroom-1.15.0.dev25.tar.gz (25.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyvroom-1.15.0.dev25-cp314-cp314-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.14Windows x86-64

pyvroom-1.15.0.dev25-cp314-cp314-manylinux_2_34_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

pyvroom-1.15.0.dev25-cp314-cp314-manylinux_2_34_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

pyvroom-1.15.0.dev25-cp314-cp314-macosx_15_0_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

pyvroom-1.15.0.dev25-cp314-cp314-macosx_15_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

pyvroom-1.15.0.dev25-cp313-cp313-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.13Windows x86-64

pyvroom-1.15.0.dev25-cp313-cp313-manylinux_2_34_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyvroom-1.15.0.dev25-cp313-cp313-manylinux_2_34_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

pyvroom-1.15.0.dev25-cp313-cp313-macosx_15_0_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

pyvroom-1.15.0.dev25-cp313-cp313-macosx_15_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

pyvroom-1.15.0.dev25-cp312-cp312-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.12Windows x86-64

pyvroom-1.15.0.dev25-cp312-cp312-manylinux_2_34_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyvroom-1.15.0.dev25-cp312-cp312-manylinux_2_34_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

pyvroom-1.15.0.dev25-cp312-cp312-macosx_15_0_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

pyvroom-1.15.0.dev25-cp312-cp312-macosx_15_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

pyvroom-1.15.0.dev25-cp311-cp311-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.11Windows x86-64

pyvroom-1.15.0.dev25-cp311-cp311-manylinux_2_34_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyvroom-1.15.0.dev25-cp311-cp311-manylinux_2_34_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

pyvroom-1.15.0.dev25-cp311-cp311-macosx_15_0_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

pyvroom-1.15.0.dev25-cp311-cp311-macosx_15_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

pyvroom-1.15.0.dev25-cp310-cp310-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.10Windows x86-64

pyvroom-1.15.0.dev25-cp310-cp310-manylinux_2_34_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

pyvroom-1.15.0.dev25-cp310-cp310-manylinux_2_34_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64

pyvroom-1.15.0.dev25-cp310-cp310-macosx_15_0_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

pyvroom-1.15.0.dev25-cp310-cp310-macosx_15_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

Details for the file pyvroom-1.15.0.dev25.tar.gz.

File metadata

  • Download URL: pyvroom-1.15.0.dev25.tar.gz
  • Upload date:
  • Size: 25.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyvroom-1.15.0.dev25.tar.gz
Algorithm Hash digest
SHA256 461aa05c7676751cd7d22eb8482e60efd8b41effed8180e45c27d0567a261c37
MD5 b001a0c486c5e9ae8e8827c730872478
BLAKE2b-256 7f37f8b5999fd5cdd0956f95818943e586d5c2128bc9097bcce31035735f9617

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ce6d0662b6fc3a461aa5469ce68fbcc3ffd2715a6be53c6d2545db65b2ec3923
MD5 46a7787e996b557366098957a9f68094
BLAKE2b-256 2338b270ad7d04425720f98a92da912238079b5ad139de12f2716dee2b9687a0

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b641fe895ed8c4b63f1e2e09d6130518bc747ecc455c4f31d3effd5f24325fb1
MD5 fd36945e15b80fd4fb3b278326bf9304
BLAKE2b-256 f500e4bde27a915383249b999b18219aa61cd00967251355a5b09888eff68cef

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 522a9da2bd51658cd28e8055c50bf5461c4d891abee680a2d7f92b4d0fcbd35a
MD5 0f04a3c9f132538a01ee938c6e1c0ec6
BLAKE2b-256 17a21adc2f8549243c897f9bc82e0292ec5fb883405e12ad1e9558a3b322e76f

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp314-cp314-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 e17e87b663814f00204b52568bf6adaf2d7d48d269cdb594dbe51d9ec4abb2b6
MD5 451c8760e1722353b6962a066c2b5faa
BLAKE2b-256 993212c5210ded79251fddd8055aa60baf55dbd3a0fe178c72b59410c00666e9

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 38bc8e8f053e19d0a6c3ef65aab357f55783331e05f907cc89c168212cf9b9e1
MD5 c7e14ac15f4044034febfbb4dba239ff
BLAKE2b-256 6118a38ed1261809e3478d46c440551421c74c2e1d5d5ad941e74e706d532946

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2181ec5ead9052337ee2091d0ed7c5ed13239c16d3c07518356071f19ebb43bb
MD5 2a5ef8cbddb324c265546de0f2902fc7
BLAKE2b-256 0bb64f76bc18dff4b78d575ca209ed9520088372ca5e21fc83ba8a820e709917

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 439d6b5c931d621b45fc7c1354fecaf2ac4fe251f49738e8d4444b1d849a6f50
MD5 d0cc2e4b9401e134388a9ae11fb98635
BLAKE2b-256 bceed003818be3fe3632d36b644c9e537530e3b26a7a02b10fb525d95bdfc49b

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 c67942836aaebe117e5d4155ca3431a51e62d58c276d3d3b608532d1b889daca
MD5 469ae29f87569aceb6f319ed0346645f
BLAKE2b-256 addb9aea0d6ee5b4d26de98e76dfc959a5edc57c2929855cec933e92a8e2f9dc

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 baa610551014fbcedb1ed87fc20752b9e4bb720f434f4372be54a3962307056f
MD5 1db78f17643213b5dd0796be38d03b0a
BLAKE2b-256 f0649f0d786e806e95188ec93790e621555286db990924f9ac4b3c34d626fab4

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f0ba326746678922cfe76178c49cd8da40056ea4e19a87771a3d2a485b24c408
MD5 381bf050cc244f3115180de7bbcaf0e8
BLAKE2b-256 bc87a7541ace8c9ecb75417fafa144af37e99206bb2ea8d38a32eb02b8d5066e

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b8f1a91b3be69753dbf5766d881c5ce940b176ada80b614487fa876c8e4c0c62
MD5 5cac6e05177e37bfb05111b2683979db
BLAKE2b-256 63fa7f1c16b1070fbd753c7364f3be7887d2c2906a423c8261dba431d48cfca9

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1794389c6f991bf9c6e9939044ac9d81c2d618df6450ed038ce199b4148fc861
MD5 17188c9be27fcb97c2c5b8289abd7b2c
BLAKE2b-256 0fc2cf21d416f4d787aabaa288c22f0de43d517201fc70b107df693f82c9c2ba

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 9110a01495d803bf6e5231f383a8e4e39fa9a5e36740f073f5b6733ba7f3ec42
MD5 eca8ecd6128ac91288edadd2cf2e4352
BLAKE2b-256 f4649a8587c7fc8291d7ed2149d872b5fd57410cfe449f7e8b53a2ee2a0747c5

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 295175b18d47e278c0c10cdacb093d6924bf31cf19119e48ee97df985f61b3cd
MD5 0f82b4457473108e0e5dcd21a283199b
BLAKE2b-256 1be63cc773e930eb16641a928243262f1ecc40761ca2e013658f576c1c137d34

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 7d5c65cea9ea917fc40d5302033dff2878f584b695d3bbfed3afa50317fd747a
MD5 3e567d89abb557e366371d415afed938
BLAKE2b-256 3ee4c2bc64642d2ab83d320891423f2d77a16b461dc4ba6ed306870ee33495f9

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 40daa383b4330a12d2e6ad03e52b45db2333e107de230337462524015c06147b
MD5 34ab37a93b617ab883d490fc2ca6a8c4
BLAKE2b-256 d2e28cceb01ac27cf78ad8a6f72ef83329a53789ec39ee79932891e666806420

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3af7e661c261b0d668d7cb21aa22c3827b0a0762e876cea6a57cd0dce96b48e6
MD5 64af4df0bcb04f036be289f1973a7b6d
BLAKE2b-256 4bb23ea096d3a8edeef8af8ea9fcdd62249ed6439a5932f03ddddc23f1bc29f0

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp311-cp311-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 47609444cb3323b3499513fade3e672a011f6785f13138cdb7cdf93e96b3d8ad
MD5 4ecdae86f7d38179b231ac0d94905a7d
BLAKE2b-256 8cd7d9d918f98873a4c7a0aa6d4a54da0b199efa39a262a1c42a34713f164746

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 1b2a19a53ae13c61abf53211ef70fa7dfc91a2cd71a6a91e51e8dc1a561d47ad
MD5 d2ae18b4b863558a33b544f99e3809aa
BLAKE2b-256 ad7317dad0baa437e7ba706fe5128f3f287cd652333f00bc6007d92c64c2d118

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 6e3fabbccbc446afd22fa463f578af9b83e41996bce910a24d8ff1642635d8af
MD5 9a38f07ade99bc4aca991679495e3132
BLAKE2b-256 b84af904e143897796392d4bd814b2deeab6144b6489d063637c08b5c6df056a

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 628876285f25bdf16a84e551679c46499308d4c0f9b57fab0ca1599f919e7d98
MD5 15d030cea5c84efbfe465119e600cfb6
BLAKE2b-256 76a58c491f5810194edb92b62139f3a7e3d776605299da5c5291848ffe657b81

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 5a96e039ad2a976f143d7331c60b2751ee2c8bffd63235d8795755acd1aecd18
MD5 23f1dd52e86f8178732d6d8e136d3a08
BLAKE2b-256 325e87e5b9001590112e0cbc5be3d3833b63555584eb6e6c32bdd9c2925a78c5

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp310-cp310-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 0457f5920928d210fe9705fc47f7665529d54baf5e0ef27e641b392c0384b070
MD5 4ce3be1a2b5057a2b3ae4b0f0ad49794
BLAKE2b-256 8bcf2f9a9488451f13201a212809986eb2f7ae6ce226d96a91b776cbc7536167

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 1444e78a1ae6b7a966199ac675fbefcb708165847c3e791c06ddd2e3c4084472
MD5 5aafc8c8113056be16d08e596c2ef06c
BLAKE2b-256 69dec605bf90828454cf96cceff89c2481c68b868518470a94bb75a23486ff6a

See more details on using hashes here.

File details

Details for the file pyvroom-1.15.0.dev25-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyvroom-1.15.0.dev25-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 7cb50bc45cf5b21f1007ea6bc8ef753d5e66137c3725222e0ebcc211be9f355e
MD5 e88ab0779b788ec8e6d7aedad297b855
BLAKE2b-256 275a0b078ae6c35b23e6aad814c320aa839e8039bca6634fba9419837808714b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page