otell
otell is a local OpenTelemetry query tool designed for LLM agents.
Install
curl -fsSL https://otell.dev/install.sh | sh
Start otell
otell run
Send your logs/traces/metrics to otell
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
Teach your model how to use otell
Add the following to your AGENTS.md:
# Development Logging and Observability The development setup is forwarding logs/traces/metrics to a local OpenTelemetry collector called `otell` that is listening on 4317/4318. To see the logs/traces/metrics, you can use the `otell` binary. Run `otell intro` to learn how to use the binary to search for logs/traces/metrics. ``` otell intro otell search otell traces otell trace otell span ```
Advanced usage
Tee a copy of your logs/traces/metrics to a human-friendly collector (e.g. Datadog, Dash0, HyperDX, etc.):
export OTELL_FORWARD_OTLP_ENDPOINT=http://remote-collector.example export OTELL_FORWARD_OTLP_PROTOCOL=http/protobuf export OTELL_FORWARD_OTLP_COMPRESSION=gzip export OTELL_FORWARD_OTLP_HEADERS=x-tenant=dev,authorization=Bearer abc123 export OTELL_FORWARD_OTLP_TIMEOUT=10s
Configure otell via environment variables or config file:
# Linux: ~/.config/otell/config.toml # macOS: ~/.config/otell/config.toml # Windows: %APPDATA%\otell\config.toml otlp_grpc_addr = "127.0.0.1:4317" otlp_http_addr = "127.0.0.1:4318" db_path = "/Users/me/.local/share/otell/otell.duckdb" uds_path = "/tmp/otell.sock" query_tcp_addr = "127.0.0.1:1777" query_http_addr = "127.0.0.1:1778" retention_ttl = "24h" retention_max_bytes = 2147483648 write_batch_size = 2048 write_flush_ms = 200 forward_otlp_endpoint = "http://remote-collector.example" forward_otlp_protocol = "grpc" # or "http/protobuf" forward_otlp_compression = "none" # or "gzip" forward_otlp_headers = "x-tenant=dev,authorization=Bearer abc123" forward_otlp_timeout = "10s"