Skip to main content

jsonata-core + jsonatapy

High-performance JSONata implementation in Rust, with Python bindings.

Much of this project was built using Claude Code with significant human oversight. There was no performant JSONata implementation in Python, so the goal was to port JSONata to Rust (with a PyO3 wrapper for Python) and see how fast it could go. The answer: faster than V8 for most expression workloads, and faster than the next pure-Rust implementation.

Many, many thanks to the incredible work of all the maintainers of the JSONata reference library. JSONata is a very powerful, well-designed, and useful language that has made an impact on many projects. This project leverages their outstanding work to extend that capability to Python and Rust and would not be possible without that project. The implementation in Rust was strongly influenced by their implementation. The 1600+ tests they created provided the scaffolding and validation for all of this project. This project will continue to follow and be a derivative of the reference project as the JSONata reference library evolves.

Crates.io PyPI version Python versions License: MIT


Two packages, one implementation

jsonata-core jsonatapy
Language Rust Python
Published on crates.io PyPI
Install cargo add jsonata-core pip install jsonatapy
Use when You're writing Rust You're writing Python

jsonatapy is a thin PyO3 wrapper around jsonata-core. Both live in this repo.


Rust quick start

use jsonata_core::evaluator::Evaluator;
use jsonata_core::parser;
use jsonata_core::value::JValue;

let ast = parser::parse("orders[price > 100].product")?;
let data = JValue::from_json_str(r#"{"orders":[
    {"product":"Laptop","price":1200},
    {"product":"Mouse","price":25}
]}"#)?;

let result = Evaluator::new().evaluate(&ast, &data)?;
# Cargo.toml
[dependencies]
jsonata-core = "2.1.6"          # pure Rust, no Python dependency

# Optional: disable SIMD for constrained targets
jsonata-core = { version = "2.1.6", default-features = false }

Python quick start

pip install jsonatapy
import jsonatapy

# One-off evaluation
result = jsonatapy.evaluate('"Hello, " & name', {"name": "World"})
print(result)  # "Hello, World"

# Compile once, evaluate many times (10–1000x faster for repeated use)
expr = jsonatapy.compile("$sum(orders.(quantity * price))")
result = expr.evaluate({
    "orders": [
        {"product": "Laptop", "quantity": 2, "price": 1200},
        {"product": "Mouse",  "quantity": 5, "price": 25},
    ]
})
print(result)  # 2450

# Pre-convert data once for maximum throughput
data = jsonatapy.JsonataData(large_dataset)
result = expr.evaluate_with_data(data)   # 3–15x faster than evaluate(dict)

Supports Python 3.10, 3.11, 3.12, 3.13, 3.14 on Linux, macOS (Intel & ARM), and Windows.


What is JSONata?

JSONata is a query and transformation language for JSON data:

  • Queryperson.name
  • Filterproducts[price > 50]
  • Transformitems.{"name": title, "cost": price}
  • Aggregate$sum(orders.total)
  • Conditionalsprice > 100 ? "expensive" : "affordable"

See official JSONata docs for the full language reference.


Performance

jsonata-core passes 1682/1682 JSONata reference tests and is the fastest JSONata implementation available in either Rust or Python:

  • ~6x faster on average than the JavaScript reference implementation (V8), across all benchmark categories — up to ~16x for complex transformations and string operations
  • ~40x faster than jsonata-rs (the next pure-Rust JSONata implementation) on pure-Rust Criterion benchmarks with no Python overhead on either side (cargo bench)
  • hundreds of times faster than jsonata-python, even when it reuses its fastest (Context-based) repeated-evaluation path

For large array workloads, pre-convert data once with jsonatapy.JsonataData and reuse it across queries — this avoids the Python↔Rust conversion cost that otherwise dominates:

data = jsonatapy.JsonataData(large_dataset)
result = expr.evaluate_with_data(data)   # 3–15x faster than evaluate(dict)

See Performance docs for the full category-by-category breakdown and benchmark methodology.


Features

  • 1682/1682 JSONata reference tests passing
  • Pure Rust core — no JavaScript runtime, no Node.js dependency
  • Optional Python bindings — PyO3/maturin, zero-copy where possible
  • Cross-platform — Linux, macOS (Intel & ARM), Windows; Python 3.10–3.14
  • SIMD-accelerated JSON parsing — via simd-json (optional feature)

Documentation


Building from source

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Clone
git clone https://github.com/txjmb/jsonata-core.git
cd jsonata-core

# Build and install Python extension
pip install maturin
maturin develop --release

# Run Python tests
pytest tests/python/ -v

# Run Rust benchmarks (no Python required)
cargo bench --no-default-features --features simd

License

MIT — see LICENSE.

This project implements the JSONata specification. jsonata-js (the reference implementation) is also MIT licensed.

Download files

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

Source Distribution

jsonatapy-2.1.7.tar.gz (273.0 kB view details)

Uploaded Source

Built Distributions

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

jsonatapy-2.1.7-cp313-cp313-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.13Windows x86-64

jsonatapy-2.1.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

jsonatapy-2.1.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

jsonatapy-2.1.7-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

jsonatapy-2.1.7-cp312-cp312-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.12Windows x86-64

jsonatapy-2.1.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

jsonatapy-2.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

jsonatapy-2.1.7-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

jsonatapy-2.1.7-cp311-cp311-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.11Windows x86-64

jsonatapy-2.1.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

jsonatapy-2.1.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

jsonatapy-2.1.7-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

jsonatapy-2.1.7-cp310-cp310-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.10Windows x86-64

jsonatapy-2.1.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

jsonatapy-2.1.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

jsonatapy-2.1.7-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file jsonatapy-2.1.7.tar.gz.

File metadata

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

File hashes

Hashes for jsonatapy-2.1.7.tar.gz
Algorithm Hash digest
SHA256 8cf6ff2b400b375a680b3e56ce2da0d053fe11ab01b72bc43afb5c74fc2d6d36
MD5 811f1d9015ecda3d8ef4795cd572da54
BLAKE2b-256 7b44d3f232589b8d93b6d6b78f9fc208392f08f3781c388d2cc675c75aa96f37

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7.tar.gz:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: jsonatapy-2.1.7-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jsonatapy-2.1.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 16d66621c96a886ff0c2f603e0b3fab21d47688e987852a465b5193e5fdbeee8
MD5 e737fb61ca133f1829d94770d823ffa9
BLAKE2b-256 e0161296a7f6d877c50cd34e75a7a1f96ea5bf2f679880ed2cf6840cffffd066

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp313-cp313-win_amd64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 420e5fb6d285e02a2c7108f17751becf32bb0e816ff0dfebcbad3f9f03a26026
MD5 645df300bbc016340cebf01800207de1
BLAKE2b-256 69e83de4c419adaf96081d6a7f14330537559e340765aa99c7e2d47954fdada0

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9de9ac1e273e95f7cd5293db26e51ec19e57f1995adcb825f4c49218a54989c6
MD5 3657809406e20d5f81d259ddb6bf269b
BLAKE2b-256 47e444a4b9435bdb401eb822f4d3ecf0f97ab68d2d20881c17121c93cbe51a69

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3c50307a71aaafebdd79bf1870b63f5664649e4bac3f7c120cd5726b24317e09
MD5 8832747236a5cc3e53ff6a2022ba4154
BLAKE2b-256 9890afab729e832a8839d2cfe347160da30db1f15645c7a605139f228cf35213

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: jsonatapy-2.1.7-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • 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 jsonatapy-2.1.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fcc4f4fc000ed2236b63eb3c7a814788427f9c6cf4208ada6f1a867ea0db10ac
MD5 ff056afd8cc333bc6e02cb8518e98c2c
BLAKE2b-256 3ace398164b3272543c14e9ec4725be463ca94dfb92ca4e18a961890fffa1ef9

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp312-cp312-win_amd64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ade236d3c18d269cf538711b5abea660fcd16f5d9ef72358157aebf3d9dd0a8
MD5 f34f00e70076170cf56e061333156efc
BLAKE2b-256 5b494c63dbca4fb6336e16705027114404dc2d460407c788ce91ebc3caf7f97d

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 abbce22d4ac5046d4932a248c44f307016827522a7fa2404b229f0b86323975b
MD5 8c5a43ec7c25e68c64223c2402788072
BLAKE2b-256 1da1c8cbf7b483bad5c0c7941f691d01d42a278e89ea4865227b0b906609e575

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbf0466a71350fa02509972f0ad36a2d800be4dbcd9c09717637bfa89ba279e4
MD5 1b365078bb5926adb4bc170c1766cb3c
BLAKE2b-256 ae14fe1aca004ad0421f139aa7b77caef1fcf3b4850bb2a93af1cb58deed768f

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: jsonatapy-2.1.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • 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 jsonatapy-2.1.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6a47ca276e4ce77dee91e710337b2b49e69227df337e9082bdb3e1686e09b9eb
MD5 c084b47b092204354042a1a9acbce9ea
BLAKE2b-256 c5d2c4d57f77eafc40f4eb8875682b2cdbc103cca2dc594c8621eb092a2213bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp311-cp311-win_amd64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d5c414bad00f9b0619ab2823dc6468cef41e2a544207804238e3246ace74d15
MD5 57da29b8c490ef8afe594363220e37ff
BLAKE2b-256 64c9162a3ebfd7ceceefe93da557be86de08a4922abe889e76cc131e4e0eaf8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 49fcd6f8c4eb9129de03d51081df73b2738d2cc7bb910d00e986b7cbd2e04894
MD5 9ffef2ffe4e2074d6c0f217cee84d113
BLAKE2b-256 5ecb3b32cb5f6692657c247e81e3ded08f878a451fc7ab716fb1904bab1e48b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e42c48bb57eda67cbaca8d3b319460193ba04fcad3891710c5a769370dc83b9
MD5 a1c4fa7ed89f6b95677ec4d999b5d087
BLAKE2b-256 19023398ccb57403979781fe400d06378abb12a47d7175c648a9653271986731

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: jsonatapy-2.1.7-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • 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 jsonatapy-2.1.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0112a63845e939191c477822ac81675fd539ef570db902043c601f5229021a1a
MD5 6e9209efac6250fb5ef0dcbf11f592c8
BLAKE2b-256 8b6b8d26dffabba726efe38b8e146011d2e4448292a26a4cc6c898b67b4a90c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp310-cp310-win_amd64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e202718d8077e9828b8fb95f14a22239569c81f9020bbd4de0fc6f2a6dd07e3f
MD5 0902bbb529ea0f99d0d5ba4c663df0f6
BLAKE2b-256 2253792b5809b95385aaa0024e468b8a673f7f2f163339d99a8f71aa6b2d365f

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c1e07c5aaca2f4ed2448b53fa427633a4cb6b239234512eb74d62e4b2e6371de
MD5 1b8e56a583cc73cb7239ac88f2303f57
BLAKE2b-256 f08f871a20cd55a7d20df85e47888b479e177e48f263f70d393d070d1f4b785b

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

File details

Details for the file jsonatapy-2.1.7-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jsonatapy-2.1.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d93b33f60a1d21139b477c63333c58a85a8e65b90a87834df98f4269ee7cb7ba
MD5 868a377c77e61a47549829261dd25c37
BLAKE2b-256 52d400aa86e8e60f8307c33a9b09e35957f03bce922c4ea1e03a1151bd589713

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonatapy-2.1.7-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on txjmb/jsonata-core

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

Release history Release notifications | RSS feed

2.2.7

17 files

2.2.6

17 files

2.2.5

17 files

2.2.4

17 files

2.2.3

17 files

2.2.2

17 files

2.2.1

17 files

This release

2.1.7 This release

17 files

2.1.6

17 files

2.1.5

17 files

2.1.4

13 files

2.1.3

13 files

2.1.0

19 files

Supported by

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