Skip to main content
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

pip install bitfrost                 # core
pip install 'bitfrost[cli,serve]'    # + CLI, TUI, and local web dashboard
pip install 'bitfrost[all]'          # everything
Python 3.10–3.13, MIT licensed.

Quick start

import bitfrost

bitfrost.quickstart(agent="my-app")   # auto-detects openai / anthropic / litellm / smolagents
Every LLM call now streams to your terminal — color-coded, with tokens, latency, and an estimated cost. No network calls, no account.

Ship to Voight

The hosted dashboard is one opt-in backend:
import bitfrost
from bitfrost.backends.voight import VoightBackend

bitfrost.instrument_auto(backend=VoightBackend(api_key="vk_..."), agent="my-app")
Set VOIGHT_KEY in the environment and you can drop the api_key argument. Events appear under AI Apps alongside your other SDKs.

Backends

BackendImportUse it for
Consolebitfrost.backends.console.ConsoleBackendlive, color-coded terminal output
SQLitebitfrost.backends.sqlite.SQLiteBackendpersistent local log; powers bitfrost serve
JSONLbitfrost.backends.jsonl.JSONLBackendone JSON object per line; replay-able
OTLP/HTTPbitfrost.backends.otlp.OTLPBackendPOST events as JSON to any collector or webhook
Voightbitfrost.backends.voight.VoightBackendhosted dashboards (opt-in)
Teebitfrost.backends.tee.TeeBackendfan out to several at once

Auto-instrument helpers

import bitfrost

bitfrost.instrument_openai()
bitfrost.instrument_anthropic()
bitfrost.instrument_litellm()
bitfrost.instrument_smolagents()
bitfrost.instrument_auto()    # every supported lib that's installed
Each accepts backend, agent, session_id, and privacy.

CLI

bitfrost watch  capture.db        # live tail
bitfrost replay capture.jsonl     # re-render a captured run
bitfrost query  capture.db "SELECT model, COUNT(*) FROM events GROUP BY model"
bitfrost tui    capture.db        # full-screen terminal dashboard
bitfrost serve  capture.db        # local web dashboard

Privacy

Three levels, applied in-process before any event is sent:
  • minimal — metadata only, no prompt/response content
  • standard (default) — content kept, PII scrubbed (12 patterns + Luhn)
  • full — everything verbatim (local debugging only)
bitfrost.instrument_openai(privacy="minimal")

Standalone by design

Bitfrost’s core has no dependency on any hosted service. The terminal output, SQLite log, JSONL files, CLI, TUI, and web dashboard all work with zero network access. Voight is one backend among several — recommended for managed dashboards and per-user cost attribution, never required. See the README and the cookbook for more.