πŸ“ Sign Up | πŸ” Log In

← Root | ↑ Up

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ“„ browser-use/monitoring/openlit β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

╔══════════════════════════════════════════════════════════════════════════════════════════════╗
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘

OpenLIT Integration

Overview

Browser Use has native integration with OpenLIT - an open-source OpenTelemetry-native platform that provides complete, granular traces for every task your browser-use agent performsβ€”from high-level agent invocations down to individual browser actions. Read more about OpenLIT in the OpenLIT docs.

Setup

Install OpenLIT alongside Browser Use:

pip install openlit browser-use

Usage

OpenLIT provides automatic, comprehensive instrumentation with zero code changes beyond initialization:

from browser_use import Agent, Browser, ChatOpenAI
import asyncio
import openlit

# Initialize OpenLIT - that's it!
openlit.init()

async def main():
	browser = Browser()
	llm = ChatOpenAI(
		model="gpt-4o",
	)
	agent = Agent(
		task="Find the number trending post on Hacker news",
		llm=llm,
		browser=browser,
	)
	history = await agent.run()
	return history

if __name__ == "__main__":
	history = asyncio.run(main())

Viewing Traces

OpenLIT provides a powerful dashboard where you can:

Monitor Execution Flows

See the complete execution tree with timing information for every span. Click on any invoke_model span to see the exact prompt sent to the LLM and the complete response with agent reasoning.

Track Costs and Token Usage

  • Cost breakdown by agent, task, and model
  • Token usage per LLM call with full input/output visibility
  • Compare costs across different LLM providers
  • Identify expensive prompts and optimize them

Debug Failures with Agent Thoughts

When an automation fails, you can:

  • See exactly which step failed
  • Read the agent's thinking at the failure point
  • Check the browser state and available elements
  • Analyze whether the failure was due to bad reasoning or bad information
  • Fix the root cause with full context

Performance Optimization

  • Identify slow steps (LLM calls vs browser actions vs HTTP requests)
  • Compare execution times across runs
  • Optimize max_steps and max_actions_per_step
  • Track HTTP request latency for page navigations

Configuration

Custom OpenTelemetry Endpoint Configuration

import openlit

# Configure custom OTLP endpoints
openlit.init(
	otlp_endpoint="http://localhost:4318",
	application_name="my-browser-automation",
	environment="production"
)

Environment Variables

You can also configure OpenLIT via environment variables:

export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318"
export OTEL_SERVICE_NAME="browser-automation"
export OTEL_ENVIRONMENT="production"

Self-Hosted OpenLIT

If you prefer to keep your data on-premises:

# Using Docker
docker run -d \
  -p 4318:4318 \
  -p 3000:3000 \
  openlit/openlit:latest

# Access dashboard at http://localhost:3000

Integration with Existing Tools

OpenLIT uses OpenTelemetry under the hood, so it integrates seamlessly with:

  • Jaeger - Distributed tracing visualization
  • Prometheus - Metrics collection and alerting
  • Grafana - Custom dashboards and analytics
  • Datadog - APM and log management
  • New Relic - Full-stack observability
  • Elastic APM - Application performance monitoring

Simply configure OpenLIT to export to your existing OTLP-compatible endpoint.

β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

← Root | ↑ Up