Skip to main content

A Python library of incremental MaxSAT solvers

Project description

Hermax: MaxSAT Optimization for Python

PyPI version PyPI wheel Python versions License: Apache-2.0 Documentation Status

Hermax Banner

Hermax is a Python bridge to high-performance MaxSAT backends, with a unified IPAMIR-inspired interface for hard clauses, soft literals, assumptions, and iterative optimization workflows.

Why Hermax

  • High-level modeling API (hermax.model) with typed variables, vectors, matrices, intervals, and lazy arithmetic.
  • Unified API across heterogeneous MaxSAT engines.
  • Incremental and non-incremental solver families
  • Scientific and reproducible workflow
  • Native compatibility with PySAT

Who Is This For?

Hermax is for combinatorially hard problems where:

  • finding even a good base solution is already difficult
  • the search state is mostly boolean

This is usually a better fit than MILP tooling when your problem is not mainly about floating-point structure, large integer arithmetic, or strong LP relaxations. In those cases, a MILP such as PuLP, SCIP, or Gurobi is often the more natural first choice.

If your problem is highly combinatorial but can benefit from a broader black-box CP approach, CP-SAT may also be a good alternative.

Hermax is especially relevant for:

  • engineers building repeated optimization workflows around hard clauses, soft literals, assumptions, and iterative solve loops,
  • users who already work with clauses, WCNF, or incremental solver-style APIs, and
  • researchers comparing MaxSAT backends behind a common Python interface.

Installation

Core install:

pip install hermax

Modeling Example

from hermax.model import Model

m = Model()

# Decision variables
x = m.int_vector("x", length=4, lb=0, ub=6)       # integer domain [0, 6]
use_bonus = m.bool("use_bonus")

# Hard constraints
m &= x.all_different()
m &= (x[0] + x[1] <= x[2] + 2)
m &= (x[3] >= 2).only_if(use_bonus)

# Soft objective terms
m.obj[5] += (x[0] == 1)
m.obj[3] += ~use_bonus

r = m.solve()  # auto-routes SAT/MaxSAT based on model content
print(r.status, r.cost)

Incremental MaxSAT Example

from hermax.incremental import UWrMaxSAT

solver = UWrMaxSAT()
solver.add_clause([1, 2])   # hard
solver.set_soft(-1, 10)     # soft weight
solver.set_soft(-1, 6)      # update weight (last-wins)

ok = solver.solve(assumptions=[-2])
print("status:", solver.get_status().name)
if ok:
    print("cost:", solver.get_cost())
    print("model:", solver.get_model())

Citation

Hermax is designed for the incremental MaxSAT setting formalized by:

  • Niskanen, Berg, Jarvisalo. Incremental Maximum Satisfiability. SAT 2022.

If you use Hermax in research:

  1. Cite the repository: https://github.com/josalhor/hermax
  2. Cite the backend solver papers relevant to your experiments (see CITATION.cff as a starting point)
  3. See additional attribution and latest-paper list in NOTICE.

License

This repository is licensed under Apache License 2.0. See LICENSE. Third-party integrated solvers may have additional license terms.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

hermax-1.2.1-cp314-cp314-win_amd64.whl (9.5 MB view details)

Uploaded CPython 3.14Windows x86-64

hermax-1.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

hermax-1.2.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

hermax-1.2.1-cp314-cp314-macosx_15_0_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

hermax-1.2.1-cp314-cp314-macosx_14_0_arm64.whl (5.4 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

hermax-1.2.1-cp313-cp313-win_amd64.whl (9.4 MB view details)

Uploaded CPython 3.13Windows x86-64

hermax-1.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

hermax-1.2.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

hermax-1.2.1-cp313-cp313-macosx_15_0_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

hermax-1.2.1-cp313-cp313-macosx_14_0_arm64.whl (5.4 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

hermax-1.2.1-cp312-cp312-win_amd64.whl (9.3 MB view details)

Uploaded CPython 3.12Windows x86-64

hermax-1.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

hermax-1.2.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

hermax-1.2.1-cp312-cp312-macosx_15_0_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

hermax-1.2.1-cp312-cp312-macosx_14_0_arm64.whl (5.4 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

hermax-1.2.1-cp311-cp311-win_amd64.whl (9.3 MB view details)

Uploaded CPython 3.11Windows x86-64

hermax-1.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

hermax-1.2.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (6.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

hermax-1.2.1-cp311-cp311-macosx_15_0_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

hermax-1.2.1-cp311-cp311-macosx_14_0_arm64.whl (5.4 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

hermax-1.2.1-cp310-cp310-win_amd64.whl (9.3 MB view details)

Uploaded CPython 3.10Windows x86-64

hermax-1.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

hermax-1.2.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

hermax-1.2.1-cp310-cp310-macosx_15_0_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

hermax-1.2.1-cp310-cp310-macosx_14_0_arm64.whl (5.4 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file hermax-1.2.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: hermax-1.2.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 9.5 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for hermax-1.2.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1b9844d949492308d9e1f414cf211ad25b2b9dade03c595bc05f3de643538f59
MD5 7e91a7bc4be155d4c793915da264ea78
BLAKE2b-256 63be9a2bf4c3e0a42debf5f8900fa43ade75881ac20bb7991b37bf65301c7dd9

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b8d6e0df9f9d5f9421ef19f334c876ddb884c07e84871f9b84dcb197e76b9aa1
MD5 51218ade6eb3778c51982f701c7e279b
BLAKE2b-256 8eba250799f5653514473705c674668b7e5ebf06241b4fa0ffe415819ae0c884

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 34c1f08cd37fd9eb0df6abaec993a06fe7b1843db15dcc2aef02d7976aaee89d
MD5 f28a7e351f4076165e4c918d790403bf
BLAKE2b-256 eb411efb9f3e220ce3da8d94d0d17f2711730634621d54fe80a7954878d838d4

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp314-cp314-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 a433317cf00f5eceafdebd4cb3508a3d9e196d2c273592a7b2ac5f5bed8bfce2
MD5 6fbef8aab2e5b6d9b6457a4783ada37d
BLAKE2b-256 3b80b6090c5aaf601e42d9d94c2f293cd52108dd234f2c188ec75bea5b6b99d0

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5323c4774ec57a33d852de317c8f5064d01ec1a9a95a92c0bc68835cddc3a3fa
MD5 66c217733eeae102c85ef47a949e6e7c
BLAKE2b-256 52a3140b3bccee532bd2239dd4927706f3dddce94ca4b4e56cc59967682c81f2

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: hermax-1.2.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 9.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for hermax-1.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c6d5a163ee08a40bae895e8a0fc2167e81f57649cb65a9bcd12c7518c340b3ff
MD5 65bac55bf715013cabeb486f36f3a293
BLAKE2b-256 fcbcc55975bbe07f8f22f166bd6fd1c5bd8f2a6c5d356994b1acc100a9375645

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8c6cd4d597eff72ec208a1ae304759ff455ad355e76a07daa9b317de2cc61524
MD5 9239af39f5700a1915026c0f164e5b11
BLAKE2b-256 1271cd3e7d3b7314967379599f2c746a2a3828e5002109c66f84f889bdcbe7ba

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7844adef37a8ef2103f51ca0f52eec244cdec26c56b585cd248be45203deba82
MD5 4091aa392f8d4fbf26e704f78ac8e0c5
BLAKE2b-256 b886a071b0d2ade1d4c3e79890261f02d6c3b51827ef367ed23ed317b93a0e2c

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 4a9fc0c3d43a7ba384f4a970209510f628392faf158ed5315ccff00741795abb
MD5 8f7767af54d3a80e50dd56d630ae9da1
BLAKE2b-256 a329d995f7798af7eb7bd4e02d048230d0f1af81ce26aeb4e935d3f7ac6633e1

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7be2260b38ec5b7798d203c68edb0f0a99d39e0bada4b80f58ea491c1087e8ca
MD5 09cacd2bfbe4bab914a8d945a0ba418f
BLAKE2b-256 74ce487de785b74f53284ae9ab7fc680dbdac87697d147addb8efd70d4c2ca12

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: hermax-1.2.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 9.3 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for hermax-1.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0d947dad0a7820c34c5b6b7ad59e4fb26d619f61c39c9560f5a310e80f88a37c
MD5 98010561b05b76016f621003b72c3e99
BLAKE2b-256 1d45251ddc79458323706bbca84a460c611bc0e0f8af86d8ac6b848a27598a68

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 39581ca6c01f6b1653f132df8fee83efabb0651b8ad135df24884effeac0effe
MD5 ab984d5d9d4b62ee85f9fd870e7553b6
BLAKE2b-256 da6852cc6a6b1e8d3c211dde3582b742dd77bf0a02b72e9c483cf8531e51a000

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 007327fa1b347a7b4137d31de65f828a4a4a3ef0eadba8d1b1a0046fd30c711c
MD5 be1a7f5839a45d9cd7c6a161b8903b11
BLAKE2b-256 88d5b33688f204a60b89647f0d721fec33da9242b711cacc9afafcd5d3162216

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 c0202a1093d428f9b59ee1909c28197e21b85f091cf2ab0501297f65839d634b
MD5 982410bc805448c135d09067b4f2e0d5
BLAKE2b-256 0b4f1a85e6ee402f8f10ea472e4f3bd68ac97115e1d5b991f451b015589b3837

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a3a1e84851d4680e57e0b53b645676f24d4753ff6ff9f884552af00592f3edde
MD5 f64240b4b9c9518986ca0c6bb43ad7fe
BLAKE2b-256 4918545ee83125116dcfb8ffa90454c591823da2a785f46972d93f5aa3fd10f1

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: hermax-1.2.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 9.3 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for hermax-1.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 81eabf728c5300ec44f048528fba2a6e117b20fe1bee89cbe9daeeb551f22c6e
MD5 2791545690a8786b60d1c8c5b08cb67d
BLAKE2b-256 488f60cafb39a83247777aebda1a16e244ab60cc572756f109105771b28ec609

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b61f66aba9405c5acea428167363681c88ed917097cfd2da72feaf712273b21
MD5 2d8d9f94d8e7b14eadbcc551de69f562
BLAKE2b-256 ab09d4420f7b896f2a56d3c594574fbf6006a9351eda05ff7dc6464c5ee5c6ec

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2910823f2ad1506435ad6193c8b671f7943f9bf4da2fd01ee84fd6f8e8b2c506
MD5 0e714abfd8070a3613d6d1503c28ad11
BLAKE2b-256 9319bacd2324b98bec35dbb91f676020d5d538e1fcedbfc1dff00624d18b08e0

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 6475f2ef2152dc22019663e61d862b62602713ad0c3a896022d016cc0b0fae7a
MD5 6c8ac7602d2784ba4cd52bb67fc9a3ed
BLAKE2b-256 36e62199a4d9aa9bc1d4dbc7b33597f26441e0355d8e520e1b3e027aaaf31854

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a17bccddd0f0aed3818b95a82728edd04c9292f078d589da78da2a104a93a937
MD5 f59a74e35f8a65f84241cd91174b2b50
BLAKE2b-256 4b6c42f09227221d18ac0837fde3970b1e81f1bdcc04a4505a6d7dda5fbe542b

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: hermax-1.2.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 9.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for hermax-1.2.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a683a037898082b579fa43809c639353efde5745314b23669711899d04634f81
MD5 d531801fa89e3db96488c71af2655a05
BLAKE2b-256 02a52d1342af7e8be4b9828faae559f6c3478258c5f38ba5c373806620acd90d

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 495fefb736f782ae5c5a35baa1b18e086f749c0b046e18d9fe5f2ac2da0e45f3
MD5 e91e7525fbc523dd4b730aa3d2813545
BLAKE2b-256 66e4e9ab8f3710bbefa46d52ab1d91bb8fc3fab6430c07a6ead1e414891d4d21

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5c969ae81633d490fbaebecacd559a0cef26ce51821574b9b74668ec92aa05be
MD5 470280664a712f5a4c7a70dd92280846
BLAKE2b-256 c0752574bc47ed555199cb867004e3eaabdd2d3a56e9e74700124208c596448d

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 c392ffa4788a8f3e31ac58722e1b34cf38c83eb29222e3f20d215f87ec21ec30
MD5 a05cfe041324de48d9de92a2e06425de
BLAKE2b-256 2d4e246a0aa5fc6d337e32da10ab9bcc4a1d87884b0eabf5fe3d12935dcec50f

See more details on using hashes here.

File details

Details for the file hermax-1.2.1-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for hermax-1.2.1-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0adc556e3ba7c621a86fd79b1f6a128ab7f4dfdf8f7b31a4d86921ce4b635bbd
MD5 a36698f05ad373d03d1f84398552a036
BLAKE2b-256 5feb049681f4b695bb76cbf2c3fac0aca83acd890ba0cd326f994b9d756d2dac

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