BookbagBookbag
Observe

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.

agent.py
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")
session · conv_8f3a2c
streaming
14:32:01
query_databaseallowcompleted
query: "all customer records"
no policy configured
14:32:03
send_emailblockcompleted
to: "reports@external.example"
domain policy · external recipient
14:33:18
issue_refundholdpending
amount: $500.00 · order: FF-4210
awaiting human approval
14:35:44
issue_refundallowcompleted
amount: $49.99 · order: FF-1042
refund policy · amount ≤ $60
14:38:12
update_crmallowcompleted
contact: "acme-corp"
no policy configured
14:42:07
fetch_piiblockcompleted
ssn + dob requested
pii detector · high severity

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.