Skip to main content

Agent Observability SDK

Python SDK for the Agent Observability platform - structured logging, cost tracking, and compliance audit trails for AI agents.


Try It Now (30 seconds)

Step 1: Install

pip install agent-observability

Step 2: Run this command

python -c "from agent_observability import log_event; log_event('decision', {'source': 'readme_test'})"

You'll see:

============================================================
  ✅ Agent Observability - You're Registered!
============================================================

API Key: ao_live_abc123...
Agent ID: your-machine-abc123

💾 Saved to .env - remember to add .env to .gitignore!

📚 Getting Started Guide:
  https://blueskylineassets.github.io/agent-observability/dashboard/getting-started.html

Free Tier: 1,000 logs/month
============================================================

That's it! Your logs are now being collected. Follow the Getting Started guide for next steps.


Get Started in Code

from agent_observability import AgentLogger

logger = AgentLogger()  # Auto-registers on first use!
logger.log("decision", {"model": "gpt-4", "action": "summarize"})

No signup. No API keys to copy. No configuration.

Quick Log Function (Even Faster)

from agent_observability import log_event

log_event("api_call", {"provider": "openai", "cost_usd": 0.002})

Installation

pip install agent-observability

Usage

Basic Logging

from agent_observability import AgentLogger

# Auto-registers if no API key provided
logger = AgentLogger()

# Or use existing API key
logger = AgentLogger(api_key="ao_live_...")

# Log an API call
logger.log("api_call", {
    "provider": "openai",
    "model": "gpt-4",
    "cost_usd": 0.002,
    "latency_ms": 1200,
    "tokens_used": 1500,
})

# Log a decision
logger.log("decision", {
    "decision_reason": "Chose provider A due to cost optimization",
    "alternatives_considered": ["providerB", "providerC"],
})

# Log an error
logger.log("error", {
    "error_message": "Rate limit exceeded",
    "retry_count": 3,
}, severity="error")

Context Manager (Automatic Timing)

with logger.task("generate_image") as task:
    result = call_dalle_api()
    task.log_cost(0.02)
    task.log_metadata({"model": "dall-e-3"})
# Automatically logs timing and handles errors

Batch Logging (Efficient)

with logger.batch() as batch:
    for i in range(1000):
        batch.log("event", {
            "index": i,
            "cost_usd": 0.0001,
        })
# Sends all logs in a single request

Async Mode

# Fire-and-forget logging (non-blocking)
logger = AgentLogger(async_mode=True)
logger.log("api_call", {"latency_ms": 100})  # Returns immediately

Features

  • Zero-Friction Setup: Auto-registers on first log (v1.1.0+)
  • Automatic Retries: Exponential backoff with 3 retries
  • Circuit Breaker: Prevents cascade failures when API is down
  • Local Fallback: Logs to ~/.agent_observability/fallback.jsonl when offline
  • Batch Support: Send up to 1000 logs per request
  • Async Mode: Non-blocking logging for high-throughput agents

Pricing

Plan Logs/Month Price
Free 1,000 $0/month
Starter 10,000 $29/month
Pro 100,000 $99/month

Compare to competitors:

  • LangSmith: ~$39+ per 1K logs
  • Datadog: ~$150+ per 1K logs

View full pricing →

See /pricing for programmatic access.

Framework Integrations

Package Install
LangChain pip install agent-observability-langchain
AutoGPT pip install agent-observability-autogpt
CrewAI pip install agent-observability-crewai
MCP (Claude) npm install -g agent-observability-mcp

API Reference

AgentLogger

AgentLogger(
    api_key: str = None,             # API key (auto-registers if not provided)
    base_url: str = None,            # API base URL
    default_agent_id: str = None,    # Default agent ID for all logs
    timeout: float = 10.0,           # Request timeout
    max_retries: int = 3,            # Max retry attempts
    fallback_path: str = None,       # Local fallback file path
    async_mode: bool = False,        # Enable async logging
)

log()

logger.log(
    event_type: str,                 # Any string (e.g., api_call, decision, test, custom_event)
    metadata: dict = None,           # Event metadata
    agent_id: str = None,            # Agent identifier
    severity: str = "info",          # debug, info, warning, error, critical
    request_body: str = None,        # Request body (truncated to 10KB)
    response_body: str = None,       # Response body (truncated to 10KB)
    tags: list[str] = None,          # Tags for filtering
    context_id: UUID = None,         # For grouping related logs
    timestamp: datetime = None,      # Custom timestamp
)

log_event()

from agent_observability import log_event

# Quick one-liner - auto-registers if needed
log_event(
    event_type: str,                 # Event type
    metadata: dict = None,           # Event metadata
    **kwargs                         # Additional logger.log() arguments
)

License

MIT License - See LICENSE for details.

Metadata

Release files for agent-observability 1.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent-observability 1.5.0
File Size Uploaded
agent_observability-1.5.0.tar.gz 17.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-observability 1.5.0
File Interpreter ABI Platform
agent_observability-1.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 30.8 kB

Release files / agent_observability-1.5.0.tar.gz

Download URL agent_observability-1.5.0.tar.gz
Size 17.0 kB
Tags Source
SHA-256 checksum
How to use checksums
212748cc0b19a9e588005790e931539115c63374f8cfdbab613a2972718fa2d2
BLAKE2b-256 checksum
How to use checksums
5ef8cf50cfd9ca1ed80f9b76a9c889dd4eb2404f671aea6d6c3476e78c304e9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.0rc1

Release files / agent_observability-1.5.0-py3-none-any.whl

Download URL agent_observability-1.5.0-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae8516158bb1a0321c595752b5a8658c538b64510ba6f157f8ca16abfab21101
BLAKE2b-256 checksum
How to use checksums
3158413b6b0bd04e626a00bf082ec743fb830d069cda5d6df8514c7cb4fa3126
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.0rc1

Release history Release notifications | RSS feed

This release

1.5.0 This release

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page