Full Agent Observability

Context Observability

Monitor every agent session, trace every decision, and track every token

Built-in dashboards, agent task tracking, and session analytics. Understand what your agents are doing — and why.

What You Can Observe

Every dimension of your agent's behavior — tasks, traces, and usage.

Agent Tasks

Automatically extract and track tasks from agent sessions. See what your agents committed to do, what they completed, and what they missed.

Extracted tasks
{ "task": "Fix auth timeout bug",
"status": "completed",
"session_id": "sess_abc123",
"confidence": 0.95 }
 
{ "task": "Update rate limit config",
"status": "in_progress",
"session_id": "sess_abc123" }

Traces

OpenTelemetry-compatible distributed tracing across your agent pipeline. Follow requests from API call through LLM invocation to tool execution.

Trace spans
api.request ─── 245ms
session.get ─── 12ms
llm.invoke ─── 180ms
tool.execute ─── 45ms
session.store ─── 8ms

Session Analytics

Track token usage, session duration, and message volume across projects. Identify patterns and optimize your agent workflows.

Session metrics
Total sessions: 1,284
Avg tokens/session: 12,450
Avg duration: 3.2 min
Success rate: 94.7%

How It Compares

Acontext observability is purpose-built for AI agent sessions — not retrofitted from generic APM.

Acontext
LangSmithCustom Build
Agent task extraction
Session-level analytics
Manual
Token usage tracking
Manual
OpenTelemetry traces
Built-in dashboard
Zero-config setup
Self-hostable

How It Works

Zero-config observability — just use Acontext sessions, and insights appear automatically.

1
Agent Runs
Your agent processes tasks through Acontext sessions.
2
Data Collected
Messages, tool calls, and metadata are captured automatically.
3
Tasks Extracted
AI pipeline identifies tasks, outcomes, and patterns.
4
Insights Surfaced
Dashboard shows analytics, traces, and task status.
observe.py
from acontext import AcontextClient

client = AcontextClient()

# Sessions are automatically tracked
session = client.sessions.create(user="alice")

# Store messages — observability is automatic
client.sessions.store_message(
    session.id,
    blob={"role": "user", "content": "Deploy v2.1"}
)

# Tasks are extracted automatically
# View them in the dashboard or via API
tasks = client.sessions.get_tasks(session.id)
for task in tasks.items:
    print(task.data.description, task.status)
analytics.py
# Get token usage for a session
token_counts = client.sessions.get_token_counts(
    session.id
)
print(f"Tokens: {token_counts}")

# Get extracted tasks for a session
tasks = client.sessions.get_tasks(
    session.id
)
for task in tasks.items:
    print(f"{task.data.description}: {task.status}")

# Check message observing status
status = client.sessions.messages_observing_status(
    session.id
)
print(f"Observed: {status}")