Skip to main content

Point process library with Hawkes specialization. Rust-accelerated MLE, EM, online, and Bayesian inference.

Project description

intensify

PyPI Python License: MIT CI

A Python library for point process modeling — Poisson, Cox, and Hawkes — with a Rust-backed implementation of the likelihood, gradient, and simulation hot paths. Provides closed-form gradients, Ogata thinning, cluster simulation, and time-rescaling goodness-of-fit diagnostics.

pip install intensify

Binary wheels are published for Linux (x86_64, aarch64), macOS (Intel and Apple Silicon), and Windows (x86_64) on Python 3.10–3.12. Source builds require a Rust toolchain; install via pip install 'intensify[fast]'.

Quickstart

import numpy as np
import intensify as its

# Simulate event times from a self-exciting process.
model = its.Hawkes(mu=0.6, kernel=its.ExponentialKernel(alpha=0.55, beta=1.4))
events = model.simulate(T=80.0, seed=1)

# Fit mu, alpha, and beta jointly from the observed events.
result = model.fit(events, T=80.0)

print(f"Branching ratio: {result.branching_ratio_:.3f}")
print(f"Log-likelihood:  {result.log_likelihood:.3f}")
print(f"Fitted params:   {result.flat_params()}")

# Visualize the fitted intensity.
fig = its.plot_intensity(result)
fig.savefig("quickstart_intensity.png", dpi=160)

Representative output:

Branching ratio: 0.547
Log-likelihood:  -66.671
Fitted params:   {'mu': 0.6271952244498643, 'alpha': 0.5470266035451343, 'beta': 1.0562059205150198}

Fitted Hawkes conditional intensity

Additional workflows:

# Multivariate connectivity: estimate directed excitation strengths.
kernels = [
    [its.ExponentialKernel(0.20, 1.0), its.ExponentialKernel(0.05, 1.0)],
    [its.ExponentialKernel(0.10, 1.0), its.ExponentialKernel(0.25, 1.0)],
]
mh = its.MultivariateHawkes(n_dims=2, mu=[0.5, 0.6], kernel=kernels)
mv_events = mh.simulate(T=100.0, seed=4)
mv_result = mh.fit(mv_events, T=100.0, fit_decay=False)
print(mv_result.connectivity_matrix())

# Goodness of fit: time-rescaling theorem residuals.
from intensify.core.diagnostics.goodness_of_fit import time_rescaling_test

ks_stat, p_value = time_rescaling_test(result)
print(f"KS stat={ks_stat:.3f}, p={p_value:.3f}")

# Cox process: latent, time-varying intensity for event-stream data.
lgcp = its.LogGaussianCoxProcess(n_bins=80, mu_prior=-0.2, sigma_prior=0.6)
events = lgcp.simulate(T=10.0, seed=11)
print(len(events), "events from an LGCP prior sample")

Features

  • Process families:
    • Poisson: HomogeneousPoisson, InhomogeneousPoisson (callable intensity or piecewise-constant rates).
    • Cox: LogGaussianCoxProcess (LGCP), ShotNoiseCoxProcess.
    • Hawkes: univariate, multivariate, marked, nonlinear (softplus, sigmoid, relu, identity links), multivariate-nonlinear, and signed (inhibitory).
  • Kernels: exponential, sum-of-exponentials, power-law, approximate power-law (Bacry–Muzy), and nonparametric (piecewise-constant). Each kernel is supported across all MLE code paths.
  • Inference: MLE with hand-derived closed-form gradients (no autodiff in the hot path); recursive O(N) likelihood for exponential-family kernels; EM and online (streaming) updates routed through the same Rust core; optional Bayesian MCMC via NumPyro ([bayesian] extra).
  • Diagnostics: time-rescaling theorem (KS and QQ on inter-compensator increments), AIC/BIC, and residual intensity.
  • Simulation: Ogata thinning (general) and cluster/branching (Galton–Watson), both implemented in Rust.
  • Stationarity enforcement: projected gradient for multivariate Hawkes; the spectral radius of the kernel-norm matrix is stored as branching_ratio_ on every multivariate FitResult.
  • Architecture: Rust core (intensify._libintensify) for kernel, likelihood, gradient, and simulation hot paths. Pure-Python user-facing API. The package raises ImportError at import time if the compiled extension is unavailable.

Comparison with tick

tick is the established Python library for Hawkes-process inference. intensify covers a broader set of process families and kernels, and its exponential-Hawkes path is competitive with tick on wall-clock time while requiring less manual configuration. The summary below is intended as a quick orientation for users choosing between the two; both libraries remain valuable, and tick is a sensible choice when its feature set is sufficient.

Feature coverage

Capability intensify tick
Inhomogeneous Poisson (arbitrary rate function or piecewise-constant) yes simulation only
Log-Gaussian Cox Process (LGCP) yes
Shot-Noise Cox Process yes
Joint MLE of (μ, α, β); Hawkes decay fit from data yes decay must be supplied
MLE for power-law, approximate-power-law, and nonparametric kernels yes
Marked Hawkes fit with any kernel yes
Nonlinear (softplus/sigmoid/relu) Hawkes; signed kernels yes
Multivariate stationarity enforcement (projected gradient) yes
Time-rescaling test on inter-compensator increments yes yes
Python 3.10–3.12 support, prebuilt wheels yes 3.8 only, C++ build

Performance

The benchmark suite builds seeded synthetic Hawkes datasets, fits the same model repeatedly, and reports median wall time over three runs. The comparison with tick locks the exponential decay β, because tick requires the user to supply it; intensify also runs in joint-decay mode, where β is estimated from data. Full methodology and reproduction commands are in docs/benchmarks.md.

Multivariate exponential, decay-given (mv_exp_5d), median wall time (single machine, both libraries built and timed together):

N tick (ms) intensify 0.3.2 (ms) speedup
501 1.1 0.5 2.0×
2,249 2.2 0.8 2.8×
9,271 5.7 2.0 2.8×
27,519 15.0 5.5 2.8×
91,249 47.8 17.5 2.7×

Parameter-recovery RMSE on the same problems is at least as low as tick's at every N — marginally lower across the whole range (0.072 vs 0.082 at N=501, converging to 0.006 vs 0.006 by N=91,249); full table in docs/benchmarks.md.

In joint-decay mode — where the kernel decay is fit alongside μ and α rather than supplied by the user — mv_exp_5d at N=1099 runs in about 12 ms. This is the path most lab users want, since avoiding a separate cross-validation loop over β is one of the practical motivations for the library. tick does not provide a comparable mode.

For kernels outside the exponential family — power-law, approximate-power-law, nonparametric, signed, marked, and nonlinear — intensify provides MLE paths that tick does not. The nonparametric path is viable at modest N: a 500-event fit completes in under one second using the binary-search bin lookup introduced in 0.3.0.

Documentation

Full documentation: https://hillmatt7.github.io/intensify

Citation

If you use intensify in academic work, please cite it:

@software{intensify,
  author = {Hill, Matthew},
  title  = {intensify: A Python point process library with Rust-backed inference},
  year   = {2026},
  url    = {https://github.com/hillmatt7/intensify}
}

See CITATION.cff for the machine-readable form.

Contributing and changes

License

MIT — see LICENSE.

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

intensify-0.3.3.tar.gz (114.7 kB view details)

Uploaded Source

Built Distributions

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

intensify-0.3.3-cp312-cp312-win_amd64.whl (328.9 kB view details)

Uploaded CPython 3.12Windows x86-64

intensify-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (434.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

intensify-0.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (412.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

intensify-0.3.3-cp312-cp312-macosx_11_0_arm64.whl (393.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

intensify-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl (418.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

intensify-0.3.3-cp311-cp311-win_amd64.whl (328.7 kB view details)

Uploaded CPython 3.11Windows x86-64

intensify-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (431.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

intensify-0.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (410.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

intensify-0.3.3-cp311-cp311-macosx_11_0_arm64.whl (395.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

intensify-0.3.3-cp311-cp311-macosx_10_12_x86_64.whl (418.8 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

intensify-0.3.3-cp310-cp310-win_amd64.whl (328.7 kB view details)

Uploaded CPython 3.10Windows x86-64

intensify-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (431.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

intensify-0.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (410.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

intensify-0.3.3-cp310-cp310-macosx_11_0_arm64.whl (395.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

intensify-0.3.3-cp310-cp310-macosx_10_12_x86_64.whl (418.8 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file intensify-0.3.3.tar.gz.

File metadata

  • Download URL: intensify-0.3.3.tar.gz
  • Upload date:
  • Size: 114.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for intensify-0.3.3.tar.gz
Algorithm Hash digest
SHA256 dab9464e1187bfbf84a6528ec85ed71f68e2ffe6272fa2fba716aaa85c4626ad
MD5 c478e19d78d1825e7a05b118b401dbc3
BLAKE2b-256 73634ce29e90cc716692d6418102dcd46a8c9ab58d83c24c0e0bfc7ce6e5a13a

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3.tar.gz:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: intensify-0.3.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 328.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for intensify-0.3.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b5ceb75bde57eabfa52571af6ac7015af5345294a5ecc801a2e35ddc2f95cabc
MD5 a6970ccbd8eca54546cececdf76fcdd3
BLAKE2b-256 cbd1ef193510b0181f7d6f0a82959df3f3f76b791e64869e054b36901b6c84ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0200461244fe58d0fea565012ea61664e17601d07b52fd0f1143f8c69622ebf6
MD5 eebbb2106e9eb12ad9a0ddef5d103e22
BLAKE2b-256 888cead8f3d4e14788d7c909706c9318743c60c1002dfd494afd848c66f0f201

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f544ed7e783d2635049128c0f7b5dfb6b272cf9d933ea4cafaa025fe0ba39f60
MD5 e6a46ec4d559a833fb00b34334ddbd12
BLAKE2b-256 738613f33f8b340dc381f73616db00cbeb4aa750517189a32db4d72deedda4db

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ce8fb4e69deae2bf291408ba1f1f8fa68faf218374b8f9039d273a24962dad6
MD5 a9f7ca82bf42150d667f97970fa2cb5c
BLAKE2b-256 cb2444add54e9d1fd844ebcd7e9dec86b72a5f8e621c8e295efdf7f6e684cf97

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7d7c6c4ac4730047ee8984d7c6a6e58d8f4febc27f6186c3684f9708b532cd49
MD5 e976cbb9b0ddcfffb08a7492fbf70fde
BLAKE2b-256 ab17644ad74976b653e26b8cf5fbc73bcaa51e9bceb416e16807b0dd18ed21ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: intensify-0.3.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 328.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for intensify-0.3.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 51eac1b46218cc24d35356bfadedb979dc703b1a2cd54bbe94ec2becbda480e6
MD5 f48af455639bfd7760c0534a8437713e
BLAKE2b-256 c2c3b934ba4bab88d27bfbb743185badbf73a31239891a48580f964ec7baa148

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4eaa5e1284c9398cf7d6b01971284e7507191aa44f289e88fecd8d1bfdb47bf
MD5 2c11f33a5f2e85ee3daf728116248c33
BLAKE2b-256 ab70e47309b7eb1509a56fc4c3be45e256f6e3f2dde68d09d7d4509bf1dffd34

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c3370186d9a1642cd7673d7b872821884856a317f1a772318cf9ab6781af7eab
MD5 e6a6ef37dd9fc65c1a3065e20c231b45
BLAKE2b-256 2e301f41de51365d74501538a4dd468403d08a0542bff8c21c576456d7816c6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2aed875da3bf74770efbb694bd8002ca4305bb2b2d1a35ee75bff66a60861e16
MD5 98eacee8dbd37031865179e01124b251
BLAKE2b-256 8bd4506e41c46653399bea92d360779fe84af9fae213529fa768b7a828d84022

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ed56cb9052deaba2d0129725cb5f5067fc6ac70c8b39dc8429bca8be316bb2bc
MD5 756567c38713d4e2769b09c8b5544f55
BLAKE2b-256 ab1ba4d2fff4dcca12892c34acc10ba2c3f59d1399ef02b544078f12057b74ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: intensify-0.3.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 328.7 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for intensify-0.3.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f66865c1f5f518bd4936fee02b5046fbd7c2e0347c0000acc4be767dd52609ee
MD5 395d58ceee3f6d4171d632e465d68213
BLAKE2b-256 bffda7e88cfcd0b201f82df0e7c8138d77f30e7be3acfb6a037c94f655208211

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 df52b5b6981d17336f7f93ce13c92534615a8c392bb3e0c1fb8aed2868e5fb82
MD5 3f64efb37247e6af2d0ed63b1dbd7cde
BLAKE2b-256 d7388a69a89e419b7c878f2ce18225e077a0cc585f9aafc195465b86462dccd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4d19aeebd78d5e8c1b9f9adda2b90209e6610c448cb14ab930e67753d3245510
MD5 414997156a987f5471dfe2a315ed2616
BLAKE2b-256 227e3dbfde02fbe7fd4b23a0932cf0041e9c7f585c760f1b9f8c02392e5516bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6baa59eda9cf898336df523ad71ce02a69c4ec3b77c33277ea4340285159965
MD5 2a304d4c09da63eb3435a0dd6719bdb8
BLAKE2b-256 3fdf3b382d55fa7fed38d0e16f045aff66df4fa7557646710cc5f2e5dd9d2250

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intensify-0.3.3-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.3-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c8f663e7b1ac0bdc8f24cd191723162af6d4f9be14f7a92ce4c2ff7b9c17c72a
MD5 5b514a28bebc51999a9599ce80f65136
BLAKE2b-256 eac4aa90898428f2758fb36600a66c21b9d5fdd87667f3dda9a552c449fd4abd

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.3-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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