Local first / Open source / MIT
LLM observability that
never leaves your machine.
OpenSmith is to LangSmith what Ollama is to OpenAI. No cloud. No accounts. No Docker. Just Python.
3.2K+ downloads · Python 3.8+
from opensmith import trace @trace def my_pipeline(prompt): response = llm.call(prompt) return response # Dashboard auto-opens at localhost:7823
downloads / month
latest version
GitHub stars
forks
Get running
How it works
Install
pip install opensmithAdd the decorator
@traceon any function — that's it.Open the dashboard
opensmith ui→localhost:7823
Core capabilities
Everything you need, nothing you don't.
Zero setup
SQLite by default at ~/.opensmith/traces.db. No config file needed to get started. Add Postgres in one env var when you're ready.
pip install opensmithLive dashboard
Full observability at localhost:7823. Search traces, filter by status or tags, inspect token usage and cost — all local, all yours.
opensmith uiOne decorator
Drop @trace on any function. Sync, async, context manager — all supported. Autopatches OpenAI, Anthropic, and LiteLLM with zero code changes.
@traceAutomatic instrumentation
Works with the tools you already use.
One line enables automatic tracing across your entire LLM stack.
from opensmith import autopatch autopatch("openai") # patches OpenAI client autopatch("anthropic") # patches Anthropic client autopatch("litellm") # patches LiteLLM autopatch("chromadb") # patches ChromaDB autopatch("qdrant") # patches Qdrant autopatch("pinecone") # patches Pinecone
Scale when ready
Optional integrations
Postgres backend
$ pip install "opensmith[postgres]"# Set env var:OPENSMITH_DB_URL=postgresql://...
Production-grade storage when SQLite isn't enough.
OpenTelemetry export
$ pip install "opensmith[otel]"# Set env var:OPENSMITH_OTEL_ENDPOINT=http://localhost:4318
Export traces to Jaeger, Grafana Tempo, or any OTel backend.
Command line
Full CLI included
$ opensmith ui # start dashboard$ opensmith traces # list recent traces$ opensmith stats # token + cost summary$ opensmith export # export to JSON or CSV$ opensmith clear # clear local traces$ opensmith init # create opensmith.json config