Skip to main content

Named-entity bank validation and Rust-backed extraction

Project description

Named Entity Regex Builder (NERB)

CI License

NERB is a Python package, CLI, and MCP server for validated named-entity regex banks. It lets you define curated entity names and aliases, validate them before use, scan text locally with a Rust-backed engine, and return deterministic JSON records for agents, services, and CI gates.

Use NERB when you need:

  • local, explainable extraction for known entities such as companies, people, products, codes, accounts, or domains;
  • stable byte-offset records that agents can cite, patch, diff, evaluate, and promote;
  • one shared extraction surface across Python code, shell commands, and MCP clients;
  • Rust-backed matching performance without moving authoring, validation, and workflow control out of Python.

Installation

pip install --upgrade nerb
nerb --help

NERB requires Python 3.10 or newer. Published releases include the Rust extension in CPython 3.10 through 3.14 wheels for Linux x86_64 (manylinux_2_28), macOS universal2 (x86_64 and arm64), and Windows x86_64. Source installs and other platform builds require a Rust toolchain with cargo available on PATH.

From a source checkout:

git clone https://github.com/johnnygreco/nerb.git
cd nerb
make sync
uv run nerb --help

Quickstart

JSON banks are the main format for agent and service workflows. A bank stores entity types, canonical names, literal or regex patterns, statuses, metadata, and optional eval references in one validated JSON object. See docs/schemas.md for the complete bank schema, extraction record contracts, eval JSONL format, and a copyable minimal company.json.

Validate and extract:

nerb validate-bank --bank company.json
nerb extract-text --bank company.json --text "Send this to Acme Corp today."
nerb extract-file --bank company.json --file email.txt
nerb extract-report --bank company.json --file email.txt

Extraction responses are JSON. Records include canonical names, matched strings, byte offsets, JSON-bank IDs, pattern kind, and the current captures object.

Agent repair and promotion commands use the same JSON-compatible response style:

nerb apply-patches --bank company.json --patch patches.json
nerb diff-banks old-company.json new-company.json
nerb eval-bank --bank company.json
nerb benchmark-bank --bank company.json
nerb regress-bank --old-bank old-company.json --new-bank new-company.json

apply-patches accepts RFC 6902 JSON Patch operations, validates the patched candidate, and returns diagnostics with the candidate response. regress-bank combines diff, eval, and benchmark checks so a bank update can be promoted by a machine-readable gate.

Python API

Use JSON-bank helpers for agent, service, and test integrations:

from nerb import extract_text, load_bank, validate_bank

bank = load_bank("company.json")

validation = validate_bank(bank)
result = extract_text(bank, "Send this to Acme Corp today.")

print(validation["valid"])
print(result["records"])

For direct source-bank scanning, use the Rust-backed Bank API:

from nerb import Bank

bank = Bank.from_source_bytes(b'{"ARTIST":{"Rush":"Rush"}}', format_hint="json")
records = bank.scan_text("Rush played in Toronto.")

Bank.scan_text returns records with entity, canonical_name, surface_name, string, start, end, and offset_unit. Byte offsets are the default record contract across the CLI, Python helpers, and MCP tools.

Other public helpers include apply_bank_patches, bank_stats, benchmark_bank, canonicalize_bank, diff_banks, eval_bank, extract_batch, extract_file, extract_report, explain_match, hash_bank, regress_bank, and validate_bank_schema.

MCP Server

NERB ships a local stdio MCP server for agents that should validate, patch, diff, scan, report, evaluate, benchmark, or regress banks without reimplementing file handling or serialization.

nerb-mcp --version

Minimal installed-package client config:

{
  "mcpServers": {
    "nerb": {
      "command": "nerb-mcp"
    }
  }
}

From a source checkout, point the client at the repo:

{
  "mcpServers": {
    "nerb": {
      "command": "uv",
      "args": ["run", "nerb-mcp"],
      "cwd": "/path/to/nerb"
    }
  }
}

The MCP tools mirror the Python and CLI surfaces: JSON-bank validation, patching, diffing, extraction, reporting, eval, benchmarking, regression, stats, and match explanation. Config-backed extraction tools are also available for YAML detector configs.

YAML Detector Configs

YAML detector configs are a compact authoring format for simple regex extraction:

ARTIST:
  Pink Floyd: 'Pink\sFloyd'
  The Who: '[Tt]he\sWho'

GENRE:
  _flags: IGNORECASE
  Rock: '(?:progressive\s)?rock'

Common commands:

nerb init --config detectors.yaml
nerb add ARTIST "Pink Floyd" 'Pink\sFloyd' --config detectors.yaml
nerb validate --config detectors.yaml
nerb doctor --config detectors.yaml --format json
nerb extract ARTIST document.txt --config detectors.yaml --format json
nerb extract --all --text "Pink Floyd played progressive rock." \
  --detector 'ARTIST:Pink Floyd=Pink\sFloyd' \
  --detector 'GENRE:Rock=rock' \
  --format json

Config path resolution is explicit --config, then NERB_CONFIG_PATH, then the platform user config path. YAML extraction uses the same Rust-backed Bank scanner and byte-offset record contract.

Performance

NERB uses Python as the authoring and control plane, and Rust as the matching data plane. Literal and regex patterns are canonicalized into Rust detector metadata, scanned natively, then projected into stable JSON records. Compiled banks are cached in process by canonical bank hash, engine version, compile options, and platform dimensions.

The final Rust engine gate covers conformance, dense memory, mode strategy, wheel smoke tests, and a representative synthetic medium bank with 1,000 entities. See docs/performance.md and docs/rust-engine-gates.md for reproducible benchmark and release-gate evidence.

Development

make sync
make check
make build

make check runs Ruff linting and formatting checks, mypy src/nerb, ty check, and pytest. make build builds and validates the source distribution plus the local platform wheel with twine check --strict.

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

nerb-0.0.6.tar.gz (92.2 kB view details)

Uploaded Source

Built Distributions

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

nerb-0.0.6-cp314-cp314-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.14Windows x86-64

nerb-0.0.6-cp314-cp314-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

nerb-0.0.6-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.2 MB view details)

Uploaded CPython 3.14macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

nerb-0.0.6-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

nerb-0.0.6-cp313-cp313-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

nerb-0.0.6-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.2 MB view details)

Uploaded CPython 3.13macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

nerb-0.0.6-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

nerb-0.0.6-cp312-cp312-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

nerb-0.0.6-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.2 MB view details)

Uploaded CPython 3.12macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

nerb-0.0.6-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

nerb-0.0.6-cp311-cp311-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

nerb-0.0.6-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.2 MB view details)

Uploaded CPython 3.11macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

nerb-0.0.6-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

nerb-0.0.6-cp310-cp310-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

nerb-0.0.6-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.2 MB view details)

Uploaded CPython 3.10macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file nerb-0.0.6.tar.gz.

File metadata

  • Download URL: nerb-0.0.6.tar.gz
  • Upload date:
  • Size: 92.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for nerb-0.0.6.tar.gz
Algorithm Hash digest
SHA256 f388f44b13d2c2b228e506ec1b3422e970b6a70bfc9e16a11fd52c0c37fa1755
MD5 8eef3e7ec96ec022d29dcf7c70166014
BLAKE2b-256 e1e0a9fd39b5ec01b73ed816c10cf86300c657884cab8d33f3d09e9e3747b12e

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6.tar.gz:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: nerb-0.0.6-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for nerb-0.0.6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5815c33baed11c8e539c45fdfc8bd9065861d3a504c6a48b48f8e36b379eff1e
MD5 ea1df5f92da814f6c4d3a9a39174d628
BLAKE2b-256 6deabe5aa10972f84b51843bc77721eb17113fd73e9c50a1b8b838aee532779e

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nerb-0.0.6-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6334e2c36ab7dff621592047346334c501c93df6e6e5e612628cdf1e44a71c76
MD5 5663500065a09c8e20b4447f36ead99d
BLAKE2b-256 34ee54ffdcd54f04818e68236e7c40bed1770a8318d2df7a717ab276cf9e6846

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for nerb-0.0.6-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 4e937d2e16fc3ee16076a886f032372ce62e0ba7fce351ecdae902e50f4ea60a
MD5 98881fedca413c4b96c8549e36f5f717
BLAKE2b-256 a4dc2e2000fab9b6c716b446f19b9a131eb0a61991f66e2b7be7a49ceccc7b06

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: nerb-0.0.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for nerb-0.0.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1f2c8b7b595bc0c2e3ea2cd67023249d53c47d77ad9d17652efce73f6bb12642
MD5 84a18aae7e9f01a6450e50e44b898981
BLAKE2b-256 92a31f44c96936d6e05008753b5baabf17f5af9fc06e51dfde6feff954e2d919

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nerb-0.0.6-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fb418a7be5f37fde05ba0043db9371a8fa7506ed2f163979670ff5247a046889
MD5 fd95091ecec57b70e946363a8ac6649c
BLAKE2b-256 23882f0f501f4006d7b1d5f18397e9228f39c845abfe6b6679062731739b1d80

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for nerb-0.0.6-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 b97ff024004cc3d3f392a6a171592b7c04c3659a10060ef25512236bb9cb3f53
MD5 58ee84cb95822bb0e2b731ed825b9e22
BLAKE2b-256 171fa57f96334952f76b3dea36f30a0447d3d89dd98f668752ec1722640ecb14

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: nerb-0.0.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for nerb-0.0.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bc06a4fc5780ee94ddd8b4767b1efdb6ec6817d0eb50e67f0b7e7e85e308f064
MD5 182c88725422dfc40dbc6b35d7e75fa3
BLAKE2b-256 f43d9a156e1da0bbc86529f3e133384fedd443229b4bc94c0b855e613ac03fb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nerb-0.0.6-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 89018ee54c6353c2f039bec09a5bde68ecd13b5c4fb9fa8727ec4adb3ba92614
MD5 c88db7e20a6e37a2103ab7b9a3894ecc
BLAKE2b-256 0329323f97daa5c33cc1fff5d4ec156f968dad8c1bed42fb7051050b640082eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for nerb-0.0.6-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 b2ed6ac90ffa9570aafecd717f19a4dbbb05edde9dba7e961e31bb0851278b03
MD5 658c72b5898a6e9fd5d2e1782d0f8be2
BLAKE2b-256 6a25db7a153ef9974c7aa091502e34da5cd15328eebabad45ad2c35741bdb9aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: nerb-0.0.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for nerb-0.0.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3ba9c9ca2aafa1a9d872f438bebf4aa8aa1283d0441fe70f28903da7f6578e1a
MD5 6f531c44666102168e7db9b9dae361d2
BLAKE2b-256 d31adf54b66ab9e774284dfd73982683baa20a4f7406ddd7593752efca1c8d2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nerb-0.0.6-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 86ad3bfe931ed9bf3f5431da323f5adb858d4910e02ed70d7ac993d1b0ccbeeb
MD5 b1f05372a61cd77a38c60efabf827987
BLAKE2b-256 160a0f946cf0f2ec743a35fbd358bbd52184a6ed9f48589d3d12eb10cb24565f

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for nerb-0.0.6-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 49e3f207571f2a2238d5426ade4a4748b0c973c2b0e7cf2bf36a1b82cdc64758
MD5 a7d38d807aa242c4681e8968f8985cf1
BLAKE2b-256 a634dabbb251eedad8dd31b366cd405bdca5bc16cd1ed3cf84fd48eeca2a83fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: nerb-0.0.6-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for nerb-0.0.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 165479c480612c3eac6976bc602e09eec504b4e0dcffb6df6e987f619df1356c
MD5 2b91e3a98540f8ead782e411e7a4a95a
BLAKE2b-256 4d1543604d7be0d10a994e45f79a3f20a577dbfc5dad761bc27d32b5cc92f4b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nerb-0.0.6-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 410f2071044c8c7e27009a510874803d634af7ddef21b91c63178332f1f6d828
MD5 093cb307cb435341cf29c80c85036bd3
BLAKE2b-256 46d58729386b81f0d9ded52f19fcb37a46572891f98bdf15ae23d8a68ae11d13

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on johnnygreco/nerb

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

File details

Details for the file nerb-0.0.6-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for nerb-0.0.6-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 1153f1785a686dd1de182c4888cb4fb94144cf53f9afb0c1ca0a5c5c36583507
MD5 9b774224b7c3f622344207a8d0668cfe
BLAKE2b-256 afae1996cfdf5d0bc7e16a4f3eae8600779e67a6f8284f310f912c997c90c4a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for nerb-0.0.6-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: publish.yml on johnnygreco/nerb

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