Skip to content

aobs — observability for AI agents

aobs records what an AI agent did — model calls, tool calls, sub-agents, errors, latency, tokens and cost — as nested traces, whatever framework or model provider the agent uses. It then explains the runs, checks them against requirements you write down, and guards the tools that have real side effects.

Status: pre-release (0.1.0.dev0), not yet published to PyPI: install from a clone of the repository. Not production-hardened: the collector has no rate limiting, retention job or TLS of its own yet. See the roadmap for what is done and what is planned.

What it does

Tracing. The Python SDK (aobs, standard library only) turns a run of your agent into one trace: aobs.run(...) for the run, @aobs.tool for tools, and a wrapper for OpenAI-compatible Chat Completions clients (sync, async and streaming). Traces go to a local JSONL file or to the collector (aobs-server serve), which authenticates with API keys, applies the project's privacy policy before storage and stores runs in PostgreSQL. Python SDK · Ingestion API · Event model

Diagnosis. aobs-server analyze explains a run with deterministic rules (errors, repeated failures, wasted calls, bottlenecks), each with evidence and a suggestion; compare and compare-groups find regressions between runs, with exact statistical tests for repeated runs. They read trace files or the collector's stored traces, and a read-only dashboard shows the same results in a browser. Analyzing stored traces

Reliability gate in CI. aobs-server gate checks recorded runs against a TOML policy (outcome, duration, calls, retries, tokens, cost, required and forbidden tools, pass rate, baseline limits) and answers PASS or FAIL with the spans that show why. It exits with code 3 on FAIL and writes JUnit XML and Markdown reports for CI systems. Reliability gate

Action safety. aobs.safety puts a guard in front of tools that refund, pay, email or delete: a policy checks the request against trusted evidence before anything happens, approval above a threshold, duplicate prevention, a durable SQLite record before the call, no blind retries when the outcome is unknown, and the same provider idempotency key on every attempt. It is not exactly-once; its guarantees and limits are stated in the guide. Action safety

Where to start

  • Quick start: instrument your own agent, then analyze and gate its runs (no server or database needed).
  • End-to-end workflow: run the example agent with a scripted model (no API key), send its runs to the collector, then list, analyze, compare, gate and view them.
  • Architecture and decisions: how the pieces fit and why.

The source code and issue tracker are on GitHub. Licensed under Apache 2.0.