See every AI action. Before you govern them.
Observe is the system of record. Every agent, every tool call, every LLM turn. Full causal history so when something looks wrong you can see what led the model there — not just what it did.
The AI activity layer
Five entities. One data layer. Zero hand-wiring.
Inventory
Applications, agents, MCP servers, datasets. Agents auto-register when they first hit the gate. Apps, MCP servers, and datasets are declarative.
Live activity feed
SSE-driven stream of every intercepted call. Filter by decision, tool, agent, session, or run. Expand a row to see the full policy trace.
Causal trace
Every run is a span tree — prompts, LLM turns, prior tool results, detector flags — so you can answer 'why did the agent try that?' not just 'what did it try?'
Session replay
Tag a run with session_id to group an entire conversation. Replay a failing session to reproduce the misbehavior.
Cross-product insights
Top agents by block count, top uncovered tools, top detector flags — queries that only work when Observe, Guardrails, and Evaluation share a data layer.
OpenTelemetry-shaped
AgentSpans match OTLP semantics. Import existing OTLP traces via /api/v1/traces, export to your SIEM if you need to.
From one line of Python to a live dashboard
The SDK sends events. The dispatcher writes them to Observe. The UI shows them in real time.
from bookbag import BookbagClient
client = BookbagClient(api_key=os.environ["BOOKBAG_API_KEY"])
# start_run creates an Agent row the first time + opens the run
run = client.agent.start_run(
agent_id="refund-bot",
metadata={"application_id": 7, "session_id": "conv_8f3a2c"},
)
# every tool_call and output under this run_uid feeds the Activity feed
client.agent.tool_call(run_uid=run["run_uid"], tool="lookup_customer",
arguments={"email": "jane@example.com"})
client.agent.output(run_uid=run["run_uid"], text="I've pulled your order history...")
client.agent.end_run(run_uid=run["run_uid"], outcome="success")query_databaseallowcompletedsend_emailblockcompletedissue_refundholdpendingissue_refundallowcompletedupdate_crmallowcompletedfetch_piiblockcompletedBuilt to flow into every other product
The moment you see something bad in Observe, you're one click from the rule that would have stopped it.
From any uncovered row, click 'Create policy' to author a Guardrail rule seeded from the call.
Runs flow into QA taxonomy review automatically when the routing key has the Evaluation engine enabled.
Every trace is an evidence artifact. Governance maps runs to EU AI Act / NIST / ISO controls on demand.
Observe FAQs
Frequently Asked Questions
Point the SDK at Bookbag. See the first trace in under two minutes.
Join the teams shipping safer AI with real-time evaluation, audit trails, and continuous improvement.