Agobs
Local-first diagnostics & observability for AI agents. One line to integrate, a single SQLite file, a built-in dashboard. AgentLens answers the question other tools don't:
Why did my agent behave this way?
Not a prompt tracker. Not a token dashboard. A diagnostics platform for agent behavior — tool usage, memory access, workflow paths, decisions, failures, retries, latency, and cost.
pip install agobs # core: store + dashboard + manual API + auto-patch
pip install "agobs[langchain]" # framework adapters as extras (langgraph, crewai, …)
pip install "agobs[all]" # every adapter
Package name on PyPI is
agobs; the import name isagentlens.
from agentlens import monitor
monitor.start() # auto-patches installed LLM SDKs — that's it
Full docs: see
Guide.md— in-depth reference for humans and AI coding agents (when-to-use-what tables, every API signature, per-framework snippets, troubleshooting, and an agent cheat sheet).
agentlens ui # dashboard at http://127.0.0.1:7180
No server to deploy. No cloud. No external services. Data lives in a hidden
./.agentlens/agentlens.db (SQLite, WAL).
Three ways to instrument (mix freely)
1. Zero-config auto-patch
monitor.start() detects and patches whatever is installed — OpenAI,
Anthropic, Google Gemini, Groq, LiteLLM — so every LLM call becomes an llm
span with tokens and cost, with no code changes.
2. Manual (framework-agnostic, always available)
import agentlens
agentlens.init(project="research-bot")
with agentlens.trace_session("chat"):
with agentlens.trace_agent("planner", role="lead"):
agentlens.log_decision(options=["search", "answer"], chosen="search", reason="needs fresh info")
agentlens.log_memory("read", "user_prefs", hit=True)
agentlens.log_tool("web_search", args={"q": "ai news"}, result=[...], retry_count=1)
agentlens.log_llm(model="gpt-4o", input_tokens=1200, output_tokens=400)
A tool/LLM logged with an error= (or a trace_* block that raises) is
automatically recorded as a failure.
3. Framework adapters
| Framework | Import | Maturity |
|---|---|---|
| LangChain | agentlens.adapters.langchain.AgentLensCallbackHandler |
full |
| LangGraph | agentlens.adapters.langgraph.AgentLensCallbackHandler |
full (LangChain callbacks) |
| LlamaIndex | agentlens.adapters.llamaindex.AgentLensLlamaHandler |
full |
| CrewAI | agentlens.adapters.crewai (step_callback, instrument_tools) |
best-effort |
| AutoGen | agentlens.adapters.autogen.instrument_agent |
best-effort |
| PydanticAI | agentlens.adapters.pydanticai.instrument_agent |
best-effort |
| OpenAI Agents SDK | agentlens.adapters.openai_agents.install |
best-effort |
| Strands Agents | agentlens.adapters.strands.callback_handler |
best-effort |
| Anthropic Agent SDK | agentlens.adapters.anthropic_agents.traced_async_tool |
tool-level |
| MCP | agentlens.adapters.mcp.instrument_server / traced_tool |
tool-level |
| FastMCP | agentlens.adapters.fastmcp.instrument_server |
tool-level |
Plus a universal agentlens.adapters.wrap_tool(fn) / @traced_tool() that works
with any framework or none.
The dashboard
- Overview — runs, success/failure rate, cost, p50/p95 latency.
- Runs → Run detail — the workflow execution graph (span tree: session → workflow → agent → tool/memory/llm/decision), click any node to inspect.
- Agent Explorer — runs, failures, latency, and attributed cost per agent.
- Tool Explorer — most used / slowest / most failed tools, retries.
- Memory Explorer — reads/writes/updates/deletes and read hit-rate.
- Failure Explorer — exceptions, messages, retries, jump to the failing run.
- Cost Explorer — token usage, cost by day, by model, most expensive agents.
Try it now (no keys needed)
pip install -e .
python examples/demo_agent.py
agentlens ui
Design
Local-first, zero-config, framework-agnostic, async-safe. Observability code
never crashes your app (emit failures are swallowed). One Span model covers
every event; kind-specific data lives in attributes. Cost is computed from an
editable price book (agentlens/server/pricing.py).
CLI: agentlens ui [--port 7180] [--host] [--backend-store-uri PATH],
agentlens providers, agentlens version. Override the port with
AGENTLENS_PORT.
Single process writes straight to local SQLite. For multiple
processes/workers sharing one dashboard, run agentlens ui once and point each
worker at it: agentlens.init(project=..., tracking_uri="http://127.0.0.1:7180").
See Guide.md for the complete reference.
Metadata
Release files for agobs 1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| agobs-1.1.tar.gz | 56.1 kB | Without provenance | Details for agobs-1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| agobs-1.1-py3-none-any.whl | Python 3 | none | any | Details for agobs-1.1-py3-none-any.whl |
Total release size: 120.8 kB
Release files / agobs-1.1.tar.gz
| Download URL | agobs-1.1.tar.gz |
|---|---|
| Size | 56.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
81f5e9f87802236febdcbb1b5ee3114664aff429a35909f27827513a246ad791
|
|
BLAKE2b-256 checksum How to use checksums |
90b1661058e18c50ce594128d3446e3225a85d976f5de2818421d4258bbd82a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.14
|
Release files / agobs-1.1-py3-none-any.whl
| Download URL | agobs-1.1-py3-none-any.whl |
|---|---|
| Size | 64.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0634b5ab684aa4c09516633b6159add44cfa856b34c3b4be8b2c8021de4cf0a8
|
|
BLAKE2b-256 checksum How to use checksums |
2066f4715694d04c83a1aac9dfd6519e9859734d531c28a5de0641ef559a9b98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.14
|
Security for agobs 1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.