This repository contains the Sentry Streaming Platform. The Streaming Platform provides the infrastructure and the runtime to build and run Kafka based streaming stateful and stateless streaming applications.
The repository is organized into two main Python packages:
-
sentry_streams/- The core streaming platform implementation (hybrid Rust/Python package)- See sentry_streams/AGENTS.md for package-specific development instructions
-
sentry_streams_k8s/- Kubernetes integration and deployment automation for Sentry Streams (pure Python package)- See sentry_streams_k8s/AGENTS.md for package-specific development instructions
Overall structure of the streaming platform is in the README. It contains links to the specific module.
The architecture of the platform itself — subsystems, decisions, invariants, guarantees and known debt — is in sentry_streams/docs/architecture.
platforms/- Docker and deployment configurationsscripts/- Utility scripts for development and deployment
The root Makefile provides commands for common development tasks across both packages:
make install-devInstalls development dependencies for all packages using uv. This will:
- Install
uvpackage manager if not present - Set up virtual environments for
sentry_streamsandsentry_streams_k8s
make install-pre-commit-hookInstalls pre-commit hooks for code quality checks.
make resetRemoves all build artifacts and virtual environments for a clean slate.
make tests-streamsRuns Python tests for the sentry_streams package.
make tests-integrationRuns integration tests for sentry_streams.
make tests-rust-streamsRuns Rust tests for the sentry_streams package.
make tests-k8sRuns tests for the sentry_streams_k8s package.
make typecheckRuns mypy type checking on both packages. This will:
- Build Rust modules needed for type checking
- Run strict type checking on
sentry_streams - Run strict type checking on
sentry_streams_k8s
make build-streamsBuilds the sentry_streams wheel package.
make build-streams-k8sBuilds the sentry_streams_k8s wheel package.
make docsBuilds the Sphinx documentation for the streaming platform.
- Python 3.11+
- Rust toolchain (for
sentry_streamsdevelopment) - uv package manager (automatically installed by
make install-dev) - direnv (recommended for automatic environment setup)
For detailed development instructions specific to each package, including virtual environment requirements, testing, and type checking, see the AGENTS.md files in each package directory:
- The repository uses
direnvfor automatic environment setup. Rundirenv allowwhen prompted. - If encountering CMake errors, the
.envrcshould setCMAKE_POLICY_VERSION_MINIMUM=3.5automatically. - For GCP interactions, run
gcloud auth application-default login. - Documentation is available at: https://getsentry.github.io/streams/
