Why sentry-options?
Traditional database-backed configuration systems introduce latency, complexity, and operational overhead. Sentry Options solves these problems by moving configuration to version-controlled files with built-in validation and hot-reload support.Quickstart
Get started in minutes with our step-by-step guide for Rust and Python
Integration guide
Complete setup guide for integrating sentry-options into your service
API reference
Detailed API documentation for Rust and Python clients
Architecture
Learn how sentry-options works under the hood
Key features
Fast reads with in-memory caching
Fast reads with in-memory caching
Options are loaded into memory on initialization. File reads only happen during init and hot-reload events, providing sub-millisecond access times in your application code.
Schema validation with type safety
Schema validation with type safety
JSON schemas define your configuration structure with strict type checking. The system validates all values against schemas at build time and runtime, catching configuration errors before they reach production.
Hot-reload without pod restarts
Hot-reload without pod restarts
Configuration changes propagate automatically within 1-2 minutes without requiring pod restarts. The client library polls for file changes every 5 seconds and atomically reloads values when detected.
Git-based audit trail
Git-based audit trail
All configuration changes are tracked in git, providing complete audit history with blame, diffs, and rollback capabilities. No more wondering who changed what and when.
Multi-language support
Multi-language support
First-class clients for both Rust and Python with identical APIs. The Python client uses PyO3 bindings over the Rust implementation for performance and consistency.
ConfigMap deployment
ConfigMap deployment
Built for Kubernetes with automatic ConfigMap generation and injection. The CLI validates YAML against schemas and generates ConfigMaps ready for deployment.
How it works
Sentry Options follows a simple three-phase workflow:Build time
Your service repository contains JSON schemas that define available options with types and defaults. These schemas are baked into your Docker image:CI/CD pipeline
Thesentry-options-automator repository contains YAML files with runtime values. The CLI validates these values against your schemas, merges target-specific overrides, and generates ConfigMaps:
Runtime
Your application initializes the client library once at startup. The library validates values against schemas, provides defaults when values are missing, and automatically reloads when files change:Real-world use case
At Sentry, we use sentry-options to manage configuration for dozens of microservices across multiple regions. Here’s a typical scenario: Problem: The Seer service needs to gradually roll out a new autofix feature. The team wants to:- Enable the feature for specific organizations first
- Apply different rate limits per region
- Make adjustments without deploying new code
- Track all configuration changes in git
Schema (seer repo)
Values (automator repo)
Next steps
Quickstart
Install the client library and run your first example
Integration guide
Full setup guide for new services