Skip to main content

tinyray

A minimal, actor-only Ray for ML experiments. Rust core, Python API.

import tinyray as tr

@tr.remote(num_gpus=1, max_restarts=3)
class Rollout:
    def __init__(self, cfg):
        self.env = make_env(cfg)
    def step(self):
        return self.env.rollout()          # ~10 MB

rollouts = tr.create_actors(Rollout, cfg, count=32)   # atomic, all or nothing
refs = [r.step.remote() for r in rollouts]            # returns immediately
ready, pending = tr.wait(refs, num_returns=24)        # 24 finished; 8 still running
learner.update.remote(ready)                          # data goes rollout -> learner

wait returns two lists of ObjectRef, never values: ready are the ones that have settled, pending the ones still running. Both are just names -- a task id and the address of the actor holding the result -- so the driver moves a few dozen bytes per reference and never the payload. Passing ready to the learner hands over those names, and the learner fetches each 10 MB batch straight from the rollout that produced it.

Dropping the eight slow rollouts drops their results, not their work: they are still running, and their outputs still occupy the producers' stores until the watermark or TTL reclaims them. And if the group runs NCCL collectives, those same eight actors must still attend the next barrier -- see tinyray.collective.

What it is, and is not

Built for one workload: RL rollouts and hyperparameter sweeps, ~32 actors, ~10 MB payloads, ~200 ms per call.

  • Actors only. No stateless tasks. ML workers hold models and CUDA contexts.
  • HTTP for control and results. At 200 ms per call a ~200 µs round trip is 0.1% overhead, and every message is inspectable with ordinary tools.
  • No object store. A result stays in the actor that produced it; consumers fetch it directly. No plasma, no spilling, no distributed refcounting.
  • NCCL for weights. tinyray implements no collective transport at all. It assigns ranks and manages the epoch state machine; torch.distributed moves the bytes.

Design notes, measurements and the decisions the implementation forced us to revise are kept with the source rather than published here.

Why Rust

An actor running a 200 ms training step holds the GIL. If the data path were Python, it could not serve result fetches during that time, and 32 actors fetching from each other would degrade to serial. The Rust core removes that coupling entirely:

10 MB decode idle 4 GIL-bound threads slowdown
native thread (the real serving path) 0.37 ms 0.38 ms 1.04x
initiated from Python 0.75 ms 36.7 ms 49x

Which also yields an architectural rule: the serving path must be driven by tokio, never by a Python-side loop. Work initiated from Python inherits GIL scheduling latency no matter how little of it runs in the interpreter, so /task/fetch never enters the interpreter at all.

Install

pip install tinyray

Wheels are built per interpreter version (3.9-3.13) for Linux and macOS on both x86_64 and aarch64. There is no abi3 build: the buffer protocol that makes results zero-copy is absent from the limited API on older interpreters, and version-specific wheels are a cheap price for it.

The package ships py.typed and hand-written stubs for the Rust extension, so type checkers see the full API.

From source

Requires a Rust toolchain.

python -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/maturin develop --release
pre-commit install

Tests

./scripts/test.sh                    # everything
cargo test --workspace               # 120 Rust tests
pytest tests/ -q                     # 216 Python tests
pytest benchmarks/ -q -s -m bench
python scripts/mutate.py             # 19 mutants: do the tests actually work?

Testing the tests

A green suite proves nothing about the tests. Two mechanisms keep them honest:

  • tests/test_suite_quality.py -- structural checks encoding the six blind spots that let real bugs through: unwired modules, timing constants that only ever run at their production value, options accepted but ignored, collapsed error taxonomies, untested lock branches, and design claims with no test.
  • scripts/mutate.py -- deliberately breaks 19 invariants and reports which ones the suite catches. It has already found two tests that passed while the behaviour they claimed to check was disabled.

Each check exists because a real bug got through in that exact shape.

Development

pre-commit install wires up the gates that CI also runs:

hook what it guards
ruff check / ruff format Python lint and formatting
cargo fmt / cargo clippy -D warnings Rust formatting and lint
mypy the public API's annotations, checked against the stubs

Releases are cut by pushing a v* tag; .github/workflows/release.yml runs the full suite, builds the wheel matrix and an sdist, and publishes to PyPI through a trusted publisher. workflow_dispatch targets TestPyPI by default so a dry run cannot reach the real index by accident.

Operations

tinyray status 127.0.0.1:41234 127.0.0.1:41235   # what is each actor doing?
tinyray introspect 127.0.0.1:41234               # raw report
tinyray health 127.0.0.1:41234

status calls out stalled callers, evictions, backpressure and stragglers, because "which actor is stuck, and on what?" is the question that dominates distributed ML debugging.

Layout

crates/tinyray-core/      wire protocol, framing, identifiers
crates/tinyray-runtime/   store, ordered queue, transport, cluster, collective, shm
crates/tinyray-py/        PyO3 bindings (all unsafe lives in buffers.rs)
python/tinyray/           API, serde, launcher, head, collective, pool, CLI

Download files

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

Source Distribution

tinyray-0.0.2.tar.gz (106.6 kB view details)

Uploaded Source

Built Distributions

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

tinyray-0.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tinyray-0.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

tinyray-0.0.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.0 MB view details)

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

tinyray-0.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tinyray-0.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

tinyray-0.0.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.0 MB view details)

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

tinyray-0.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tinyray-0.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

tinyray-0.0.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.0 MB view details)

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

tinyray-0.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tinyray-0.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

tinyray-0.0.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.0 MB view details)

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

tinyray-0.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

tinyray-0.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

tinyray-0.0.2-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.0 MB view details)

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

File details

Details for the file tinyray-0.0.2.tar.gz.

File metadata

  • Download URL: tinyray-0.0.2.tar.gz
  • Upload date:
  • Size: 106.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tinyray-0.0.2.tar.gz
Algorithm Hash digest
SHA256 e75df9261b9f1a0da50fecd940e996259a65c82b4c6ab5fee73fdcc55f79f7db
MD5 00bc3b26437062ef31053c4f1fdb319c
BLAKE2b-256 937a316fcd12125e8027b0b0f42b55b3cc3450ca17446800a4f349797ea25b74

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2.tar.gz:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c15790f9ad2b9cbc27352998d1e5ea6af1935d9770978d2a2c1d82940e6e781f
MD5 5da59bd5aab7b12bcb7f30a3b803cd1f
BLAKE2b-256 1ae55d8fa8a32ac48a90f5af1b0ba6f2e47ad32cdae01cab8ca8873f522222b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3ff31bb463e065502b0e1cf8dc2b7be49db287c2981708e15a27d44b6233cff6
MD5 01cb1bd1722f8882f827badb5c0c032a
BLAKE2b-256 28971cc619b87d6ec894d7d5a73053e0fd0464feff8bbded5bc52efc18de4a4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 f8bb3c059e8b4da272287db2087bd3492768a10098d74e0f7810e2c8d0318314
MD5 164055d8a6692e96bc6a8db5153264c1
BLAKE2b-256 64a995d479c1ceb4ecb2e482d96d315e1a06f8f8b96a316aa8545d21aff02f29

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0b7a3715a612119ceb14bdb215edbb4c714d09366ec477934c987cf7ca783f4e
MD5 57c8042e2bc8c1f2f5fd875016f1de86
BLAKE2b-256 8035e8744673cd840ed29b4cf30aaf786e2dc24ba8871cbcfbefe1e8478d857b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d952b60c1d967ab7b82bbe563a09c8f7af672218f9da3794fe5440e29e8a5831
MD5 c0113720fbe9590d32a18e6a2898b422
BLAKE2b-256 f248835ce4518152434aa821038719499d119f4103ace029ffac11781b9cc8ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 f72245703abfd25d4e06d3a8ac0b312ff33b3d4b3a39fdc1ec2b207914293a1c
MD5 25a355c3c690e8be61c6a7470be0e223
BLAKE2b-256 b00188d1c4ec5f444a344350cf0ec4baa018e4e3b23f4f7a100d2cc8f6d87b3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 432b5824bf1f1a6a52c9826938bd8223535b32c864837a41fe3de36e23383686
MD5 9e3acad51902eda565268c7582f79b8f
BLAKE2b-256 592082065368260ceb4237a0ab973823ace4885457cc138be47203b9e8d31022

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bf604d314a5e09c4b8c125218efd8e4cefcd537d239b2c4e5531b14f054e2b93
MD5 462d00a6cbfa6272e3863a6fe76bf1a6
BLAKE2b-256 11fe46b15b05c3f539422213f35bbf5dd15ae582de0976d5f89b4393bbc078f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 60e11213a9859cbb8fe64919e7ca2287f5fad23ce8e70f4490502ab686dc988c
MD5 803afce9205af125f65beabc01987105
BLAKE2b-256 94811049cdd503c3c0f20654d801210207ca776b33c6f2243e26fd5da2df20c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b6f8af7cada81a03f5fa16723881b202bfbab3cc0774422b8ebd5744afad5ff
MD5 9d4dbd47c3fbe7106934769b1e894181
BLAKE2b-256 cb0fd3b8c4543844c75740b5c99776e109bc794931cfab40e578ec766e3ddb30

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fe64b31596ef8e40f437228283f22fac8d8af9b9c9aaa0958033970a1d562a7c
MD5 d8dc3d88c96528c334f6312e686af497
BLAKE2b-256 c4eb67317fa1fae84c194b9a3e404319f4f2a24ee132891ab4fcf1e9a4c76b6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 0e6b44cb04381987061c2880242facff66a900487b324a933af133d408ca1b3b
MD5 377f31aa8f076870ad5de733b4b6ac8f
BLAKE2b-256 b506b3a7f05207afef0159541763ab3307ad3e6f658d89f357f0672628855625

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4b2a9d212fac9782ef682ead526bfb537e9c7aef2a2463e3581840fefea6da6f
MD5 9961e41e9fbca79cdbedec59993337eb
BLAKE2b-256 31594ff16c6ef2fbf51f240cfb3336035bd1c76fbdc7e29941dabc7e92ceef30

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 762256df7c596d567f99db0fe66bba9eeacf4717c6db2bffc598b6be236a8ab0
MD5 216bd00b3d7bebe9375a10ea9350e9fa
BLAKE2b-256 7b807cbada12986135a0f1ffd0986ad080df5ec2c67cfe7ab33d08a1382fcedd

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on HSPK/tinyray

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

File details

Details for the file tinyray-0.0.2-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tinyray-0.0.2-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 97f328516d9955ab813c46513a8d712d552318eb14d4a1395e5046a8d65f6f9f
MD5 bc14620530c6864843c54a8be9697627
BLAKE2b-256 b45844e2de579a3674018b539c3e13ec3f2e9a347973f5b6207d1132317086a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tinyray-0.0.2-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on HSPK/tinyray

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

Release history Release notifications | RSS feed

0.13.0

13 files

0.12.0

13 files

0.11.0

13 files

0.10.0

13 files

0.9.1

13 files

0.9.0

13 files

0.8.1

13 files

0.7.1

13 files

0.6.1

13 files

0.6.0

13 files

0.5.0

13 files

0.4.1

13 files

0.4.0

13 files

0.3.0

13 files

0.2.1

16 files

0.2.0

16 files

0.1.0

16 files

0.0.3

16 files

This release

0.0.2 This release

16 files

0.0.1

16 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page