lite-bootstrap wires production observability — OpenTelemetry, Prometheus, Sentry, and structlog — into FastAPI, Litestar, FastStream, and FastMCP services in a few lines, with no boilerplate.
With lite-bootstrap, you receive an application with lightweight built-in support for:
sentryprometheusopentelemetrypyroscope- with OpenTelemetry trace-profile linkingstructlogcorsswagger- with additional offline version supporthealth-checks
Those instruments can be bootstrapped for:
Lifecycle constraints
A few constraints that aren't obvious from the API:
- One bootstrapper per application instance. Constructing two
FastAPIBootstrappers around the samefastapi.FastAPI(or twoFastMcpBootstrappers around the sameFastMCP) is not supported. The second bootstrapper warns at construction, and itsbootstrap()raisesConfigurationError. - One
OpenTelemetryInstrumentper process.bootstrap()callsopentelemetry.trace.set_tracer_provider(...), which the OTel SDK enforces as set-once — subsequent calls log a warning and have no effect.teardown()flushes spans and closes exporters but can't reset the process-global pointer. teardown()is idempotent.BaseBootstrapper.teardown()short-circuits if not bootstrapped; per-instrument teardown methods are safe to call multiple times.- Partial teardown failures are aggregated. If an instrument's teardown raises, the bootstrapper continues with the rest of the instruments and raises
TeardownErrorat the end with all collected failures.
Usage examples:
- with Litestar - litestar-sqlalchemy-template
- with FastAPI - fastapi-sqlalchemy-template
Acknowledgements
lite-bootstrap is inspired by microbootstrap — a single package that wires up the common observability stack (sentry, prometheus, opentelemetry, logging, cors, swagger, health-checks) for FastAPI / Litestar / FastStream services and for plain scripts.
The following ideas were borrowed:
- the overall surface — a
Bootstrapperper framework that composes a set of instruments, - the lifecycle model — each instrument has
bootstrap()/teardown()/is_ready()and is skipped when its optional dependency is not installed, - the catalog of supported instruments and supported frameworks.
The following intentionally differ:
- Configuration:
lite-bootstrapuses frozendataclassconfigs (nopydantic/pydantic-settingsruntime dependency), which is what makes it "lite".microbootstrapconfigures everything throughpydantic-settingsmodels. - Granular extras:
lite-bootstraphas exactly one mandatory runtime dependency, the pure-Pythontyping-extensions; every instrument (sentry,otl,logging,pyroscope) and every framework (fastapi,litestar,faststream,fastmcp) is its own extra, plus an opt-inorjsonspeedup for logging, per-pair combos (fastapi-sentry,litestar-otl,faststream-metrics, …) and*-allrollups. You install only what you actually use. It also runs on free-threaded CPython 3.14t: every extra whose dependencies are pure Python installs there, and the ones that don't are blocked upstream —orjsonandpyroscopehave no free-threaded wheels, andotlneedsgrpcio, so useotl-httpinstead.microbootstrapbundles the full observability stack (opentelemetry, sentry-sdk, structlog, pyroscope-io, rich, pydantic-settings, …) as base dependencies and only splits framework packages into extras. - Scope:
lite-bootstrapis deliberately narrow — only instrument wiring. It does not include a Granian server runner or a console writer.
📚 Documentation
📦 PyPI
📝 License
Part of modern-python
Browse the full list of templates and libraries in
modern-python — see the org profile for the categorized index.
Metadata
Release files for lite-bootstrap 1.13.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lite_bootstrap-1.13.0.tar.gz | 1.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lite_bootstrap-1.13.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.7 MB
Release files / lite_bootstrap-1.13.0.tar.gz
| Download URL | lite_bootstrap-1.13.0.tar.gz |
|---|---|
| Size | 1.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ec5e0897fa1855f4911d0b61467b2da954500d3a8ee977eb7e71bc006090d921
|
|
BLAKE2b-256 checksum How to use checksums |
3371645aaf63a35ef09615c03d22958ebe7244bbc5349a5e3d3c2e13886def7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / lite_bootstrap-1.13.0-py3-none-any.whl
| Download URL | lite_bootstrap-1.13.0-py3-none-any.whl |
|---|---|
| Size | 1.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
36ae7d76fed4d5c0b782e199367ab47e4d22ff2d87a578fa84112a9ded89fa22
|
|
BLAKE2b-256 checksum How to use checksums |
ab8e1a53f12b0a18a55c98cb54cefef7e1520eadb26ee0261ce6295a8041546a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|