Proviras tracing SDK for LangGraph and LangChain agents
Project description
proviras-sdk (Python)
Trace LangGraph and LangChain runs to Proviras.
ProvirasTracer is a langchain_core.tracers.base.BaseTracer you pass as a callback. It creates one Proviras session per graph invocation and streams each LLM, tool, chain, and retriever run to your dashboard as a TraceCall.
Install
pip install proviras-sdk
langchain-core>=0.3.0 is pulled in automatically. Your project already has it if you use LangGraph or LangChain.
Setup
export PROVIRAS_PARENT_ID=<your-proviras-user-id>
export PROVIRAS_PLATFORM=langgraph
| variable | required | description |
|---|---|---|
PROVIRAS_PARENT_ID |
yes | your Proviras user ID |
PROVIRAS_PLATFORM |
yes | runtime platform (e.g. langgraph, langchain) |
PROVIRAS_USER_ID |
no | parent agent ID when this agent is spawned by another |
Usage with LangGraph
from proviras_sdk import ProvirasSdk
from langgraph.graph import StateGraph
sdk = ProvirasSdk()
graph = ... # build your StateGraph
tracer = sdk.trace("Answer user question")
result = graph.invoke(
{"messages": [{"role": "user", "content": "..."}]},
config={"callbacks": [tracer]},
)
# session is finalized automatically when the root run ends
sdk.trace(task_description) returns a ProvirasTracer. It:
- Registers your agent on first run (saves
agentIdto~/.proviras/config.json). - Creates a session:
POST /api/agent/session. - On each completed LangChain run, posts a trace:
POST /api/agent/session/{id}/trace. - When the root run ends, finalizes the session:
PATCH /api/agent/session.
Telemetry failures are swallowed — they never break the graph.
What gets captured
For each LangChain Run that completes (run_type of llm, tool, chain, or retriever):
| field | source |
|---|---|
runType |
run.run_type |
stepId |
run.id |
parentTraceId |
server-issued traceId of the parent run |
timestamp |
run.start_time |
latencyMs |
run.end_time - run.start_time |
model |
run.extra.metadata.ls_model_name |
input / output |
JSON-encoded run.inputs / run.outputs, truncated at 8 KB |
tokens |
run.outputs.llm_output.token_usage (LLM runs only) |
error |
run.error |
Posting happens once at root-run completion, in tree preorder, so a child's parentTraceId is always set correctly before the child is posted.
Per-invocation surface
sdk.trace("nightly summary", surface="code")
surface is one of "cowork" | "chat" | "code" | "api" and defaults to "api".
Async LangGraph
LangChain dispatches sync callback handlers on a worker thread when called from async contexts, so ProvirasTracer works with graph.ainvoke() and graph.astream() without changes. Each HTTP call blocks one worker thread for the duration of the request.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file proviras_sdk-2.1.7.tar.gz.
File metadata
- Download URL: proviras_sdk-2.1.7.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b91993422636b85b7ee1c3a121b7e2b86f693425cac3cd5290cd9b4b59192b2c
|
|
| MD5 |
78182c0444db049b7182adb99ed77fa1
|
|
| BLAKE2b-256 |
7ca360c8cc65ae1d06aba3555a23664d30c593d183e60d78fd564e105c70ff13
|
File details
Details for the file proviras_sdk-2.1.7-py3-none-any.whl.
File metadata
- Download URL: proviras_sdk-2.1.7-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebf8a714f9f0bfdd35754e09cc4cc053319cb9e46cd54fcc6dba10c1a36e1eb7
|
|
| MD5 |
826a127080bdf07b6b799681366dbdca
|
|
| BLAKE2b-256 |
ec175b70ba7c8ab007858aea687032366af037f6738cfeeef7b176648ca258c8
|