Skip to content

Technical Details

Architecture

TinyOlly Architecture

Data Storage

  • Format: Full OpenTelemetry (OTEL) format for traces, logs, and metrics
  • SQLite: All telemetry stored in an embedded SQLite database (compressed with ZSTD + msgpack)
  • WAL Mode: Write-Ahead Logging for concurrent reads during writes
  • Space-Based Retention: Data is retained until the database reaches its size limit (default 256 MB), then oldest records are evicted automatically. No fixed TTL — data stays as long as there's room
  • Correlation: Native trace-metric-log correlation via trace/span IDs
  • Cardinality Protection: Prevents metric explosion
  • Ephemeral by Design: Designed for local development — data persists across restarts but is evicted when storage fills up

OTLP Compatibility

TinyOlly is fully OpenTelemetry-native:
- Ingestion: Accepts OTLP/gRPC (primary) and OTLP/HTTP
- Storage: Stores traces, logs, and metrics in full OTEL format with resources, scopes, and attributes
- Correlation: Native support for trace/span ID correlation across all telemetry types
- REST API: Exposes OTEL-formatted JSON for programmatic access - Control Plane: OpenTelemetry Collector OpAmp for dynamic configuration


UI Features

  • Trace Waterfall: Distributed trace visualization with automatic filtering of noisy ASGI sub-spans (http send/receive)
  • Trace Map: Per-trace service dependency graph rendered above the waterfall using Cytoscape.js. Detects inferred external clients from orphan parent span IDs (e.g., test clients that propagate trace context but don't export spans)
  • Deep Linking: Shareable URLs that open directly to a specific trace detail view (?tab=traces&traceId=...), span search (?tab=spans&spanId=...), or filtered tab (?tab=logs&search=...). "Copy Link" buttons in trace and span detail views generate these URLs
  • Click-to-Copy IDs: Trace and span IDs are copyable with a single click throughout the UI
  • Correlated Logs: Trace detail view shows correlated logs inline — click any log row to navigate to the Logs tab filtered by trace ID
  • Cross-Tab Navigation: Click trace/span IDs in logs to jump to the corresponding trace or span view
  • Service Catalog: RED metrics with action buttons to navigate to Traces, Spans, Logs, or Metrics filtered by service name
  • Smart Auto-Refresh: 5-second polling pauses automatically when a search filter is active, preventing result disruption
  • Scrollable Lists: Trace, span, and log lists support scrolling with sticky headers for large datasets