bitfrost is a Python package that turns the OpenTelemetry spans your LLM
libraries already emit into a clean, queryable event stream — in your
terminal, in a local web dashboard, in SQLite, or shipped to Voight. One
line to start, no account required.
It’s the Python counterpart to the JavaScript @voightxyz/vercel-ai
exporter: same backend, same dashboard, different runtime. Events from
both land side-by-side under the same agent.
Install
Quick start
Ship to Voight
The hosted dashboard is one opt-in backend:VOIGHT_KEY in the environment and you can drop the api_key argument.
Events appear under AI Apps alongside your other SDKs.
Backends
| Backend | Import | Use it for |
|---|---|---|
| Console | bitfrost.backends.console.ConsoleBackend | live, color-coded terminal output |
| SQLite | bitfrost.backends.sqlite.SQLiteBackend | persistent local log; powers bitfrost serve |
| JSONL | bitfrost.backends.jsonl.JSONLBackend | one JSON object per line; replay-able |
| OTLP/HTTP | bitfrost.backends.otlp.OTLPBackend | POST events as JSON to any collector or webhook |
| Voight | bitfrost.backends.voight.VoightBackend | hosted dashboards (opt-in) |
| Tee | bitfrost.backends.tee.TeeBackend | fan out to several at once |
Auto-instrument helpers
backend, agent, session_id, and privacy.
CLI
Privacy
Three levels, applied in-process before any event is sent:minimal— metadata only, no prompt/response contentstandard(default) — content kept, PII scrubbed (12 patterns + Luhn)full— everything verbatim (local debugging only)