VisibleAgent Python SDK
Plain-English observability for AI agents. VisibleAgent turns your agent's work into a story a human can read — every run, every step, every tool call, live-streamed to a dashboard with full replay — while capturing metadata only by default: never prompts, never customer content, unless you explicitly opt in.
Install
pip install visibleagent # core SDK
pip install "visibleagent[langgraph]" # + LangGraph auto-instrumentation
LangGraph: one line, zero node changes
from visibleagent import VisibleAgent
from visibleagent.integrations.langgraph import VisibleAgentTracer
va = VisibleAgent(api_key="...", base_url="https://your-visibleagent-host")
tracer = VisibleAgentTracer(
client=va,
source="MyApp", # "which app did this?" label
display_names={ # optional: human names per node
"classify": "Classifying the message",
"respond": "Drafting a reply",
},
descriptions={ # optional: what each step does
"classify": "Reads the message and works out what it's about",
},
narrate=my_narrator, # optional: plain-English outcomes
)
graph.invoke(state, config={"callbacks": [tracer]})
The tracer auto-derives the whole span tree from LangGraph's callbacks —
nodes, model calls ("Thinking — …"), and tool calls — including model names,
token usage, and latencies. It works with bare llm.invoke() calls inside
your nodes (no config threading needed), never raises into your app, and is
completely inert when unconfigured.
narrate(node_name, output_state) lets you turn structured state into
human sentences — "Understood the message as a new order (94% confident)"
— without ever exposing raw content.
Manual instrumentation
with va.start_run(name="Refund request #4521", attrs={"source": "MyApp"}) as run:
with run.agent("support_agent", display="Support Agent") as agent:
with agent.step("classify", display="Understanding the request"):
...
with agent.tool("orders.lookup", display="Checking the order") as tool:
order = lookup(order_id)
tool.note(f"Found order {order_id}")
va.flush()
Spans emit .started / .completed / .failed automatically based on
whether the block raises. Delivery is batched on a background thread and
fail-open: a missing or unreachable VisibleAgent backend never affects
your application.
Content safety
Metadata capture is the default and the contract: span attributes carry
model ids, token counts, durations, statuses, and the labels you author —
never prompt or completion text, never tool argument values. A separate
explicit capture_content="full" mode exists for teams who want their own
content in their own dashboard.
License
Apache-2.0
Metadata
Release files for visibleagent 0.1.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 | |
|---|---|---|---|
| visibleagent-0.1.0.tar.gz | 35.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| visibleagent-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 56.4 kB
Release files / visibleagent-0.1.0.tar.gz
| Download URL | visibleagent-0.1.0.tar.gz |
|---|---|
| Size | 35.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
18d0957ddb053e8c29adc614dd15a27dd7acecde2daa42f8a9aa3837340c2e75
|
|
BLAKE2b-256 checksum How to use checksums |
815776997374cada5fbd927350fe593028af7ce7bc144feb24998f9f05073d22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|
Release files / visibleagent-0.1.0-py3-none-any.whl
| Download URL | visibleagent-0.1.0-py3-none-any.whl |
|---|---|
| Size | 21.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b6747001b0e5ada378cdc4fe0e34bf4454966e320795c8ba0ed41e2ed672af4a
|
|
BLAKE2b-256 checksum How to use checksums |
eb69272d48d0c071d7a911d682c6dd2b9bc1a9e6d3246e7f75422b96e2148695
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|