Skip to main content

OpenTelemetry observability library for real-time AI applications

Project description

ModalTrace

ModalTrace

License: Apache 2.0 PyPI version PyPI downloads Python 3.10+ CI Status

OpenTelemetry observability for real-time AI video applications

DocsAPI ReferenceExamplesComparisonIssuesContributing


ModalTrace is an OpenTelemetry library for real-time AI video pipelines. It captures traces, metrics, and logs across GPU operations, neural network inference, video rendering, and transport — with frame-level granularity and A/V sync tracking not available in general-purpose APM tools.

ModalTrace Dashboard


Why ModalTrace?

Feature ModalTrace Langfuse Datadog W&B
Video AI metrics
GPU monitoring
Frame-level metrics
A/V sync tracking
Pricing Free OSS $29+/mo $31+/host/mo Paid

See the full comparison →


Features

  • Automatic span generation per pipeline stage with trace/metrics/log correlation
  • Sub-millisecond frame rate, GPU memory, inference latency, and A/V drift metrics via ring buffer aggregation
  • Standardized modaltrace.* attribute keys across all telemetry
  • Auto-instrumentation for PyTorch forward/backward passes and GPU (utilization, memory, temperature, power)
  • Adaptive sampling: anomaly-triggered capture for high-latency frames
  • PII scrubbing with regex patterns and custom callbacks
  • OTLP export over HTTP or gRPC to any compatible backend

Quick Start

Install

pip install modaltrace

Optional extras:

pip install modaltrace[pytorch,gpu,webrtc,dashboard]
# or
pip install modaltrace[all]

Initialize

from modaltrace import ModalTraceSDK

sdk = ModalTraceSDK()
sdk.start()

# your pipeline code here

sdk.shutdown()

Configuration via environment variables or ModalTraceConfig:

MODALTRACE_SERVICE_NAME=my-video-pipeline
MODALTRACE_OTLP_ENDPOINT=http://localhost:4318
MODALTRACE_PYTORCH_INSTRUMENTATION=true
MODALTRACE_GPU_MONITORING=true

View telemetry

Built-in dashboard (local development):

from modaltrace.dashboard import DashboardServer

server = DashboardServer()
server.start()  # http://localhost:8000

External backend (Jaeger, Datadog, Honeycomb, etc.):

from modaltrace import get_tracer

tracer = get_tracer(__name__)

with tracer.start_as_current_span("process_frame") as span:
    span.set_attribute("modaltrace.pipeline.frame.sequence_number", frame_id)
    # your code here

Configuration

All settings accept environment variables (MODALTRACE_ prefix) or Python kwargs to ModalTraceConfig.

Setting Env Variable Default Description
Service Identity
service_name MODALTRACE_SERVICE_NAME modaltrace-pipeline Service identifier in telemetry
service_version MODALTRACE_SERVICE_VERSION 0.0.0 Semantic version
deployment_environment MODALTRACE_DEPLOYMENT_ENVIRONMENT development Environment (dev/staging/prod)
OTLP Export
otlp_endpoint MODALTRACE_OTLP_ENDPOINT http://localhost:4318 Collector endpoint
otlp_protocol MODALTRACE_OTLP_PROTOCOL http http or grpc
otlp_timeout_ms MODALTRACE_OTLP_TIMEOUT_MS 10000 Export timeout (ms)
Feature Flags
pytorch_instrumentation MODALTRACE_PYTORCH_INSTRUMENTATION true Auto-instrument PyTorch ops
gpu_monitoring MODALTRACE_GPU_MONITORING true Track GPU metrics
webrtc_monitoring MODALTRACE_WEBRTC_MONITORING false Monitor WebRTC transports
eventloop_monitoring MODALTRACE_EVENTLOOP_MONITORING true Track event loop blocks
Sampler
pytorch_sample_rate MODALTRACE_PYTORCH_SAMPLE_RATE 0.01 Fraction of PyTorch ops sampled
anomaly_threshold_ms MODALTRACE_ANOMALY_THRESHOLD_MS 50.0 Latency threshold for anomaly capture
Metrics
metrics_flush_interval_ms MODALTRACE_METRICS_FLUSH_INTERVAL_MS 1000 Aggregation window (ms)
ring_buffer_size MODALTRACE_RING_BUFFER_SIZE 512 Must be power of 2
A/V Sync
av_drift_warning_ms MODALTRACE_AV_DRIFT_WARNING_MS 40.0 Warn if drift exceeds this (ms)
av_chunk_ttl_s MODALTRACE_AV_CHUNK_TTL_S 5.0 Chunk retention period (s)
PII Scrubbing
scrubbing_enabled MODALTRACE_SCRUBBING_ENABLED true Enable PII removal
scrubbing_patterns MODALTRACE_SCRUBBING_PATTERNS [] Regex patterns to scrub

Architecture

modaltrace/
├── config.py                 # Pydantic configuration model
├── _registry.py             # Global SDK registry
├── conventions/
│   └── attributes.py        # Semantic convention constants
├── tracing/
│   ├── pipeline.py          # Main trace pipeline
│   ├── sampler.py           # Adaptive sampling logic
│   ├── pending.py           # Pending spans management
│   └── propagation.py       # Context propagation
├── metrics/
│   ├── instruments.py       # Metric instrument definitions
│   ├── aggregator.py        # Ring buffer aggregation
│   └── av_sync.py           # A/V sync metrics
├── instrumentation/
│   ├── pytorch.py           # PyTorch auto-instrumentation
│   ├── gpu.py               # GPU monitoring
│   ├── eventloop.py         # Event loop tracking
│   └── transport.py         # Network transport metrics
├── logging/
│   ├── api.py               # Structured logging API
│   └── scrubber.py          # PII scrubbing pipeline
└── exporters/
    └── setup.py             # OTLP exporter initialization

Contributing

Open an issue to discuss changes, then submit a PR with tests. See CONTRIBUTING.md for setup and workflow details.

License

Apache License 2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modaltrace-0.2.8.tar.gz (2.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modaltrace-0.2.8-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

Details for the file modaltrace-0.2.8.tar.gz.

File metadata

  • Download URL: modaltrace-0.2.8.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for modaltrace-0.2.8.tar.gz
Algorithm Hash digest
SHA256 2630a2d0d0964e4d3f545b4dd1e42ff3e273a867781703b8b2f725df0a3c71fb
MD5 5b8c0d62bc3c07c69ce6c46e29217b0f
BLAKE2b-256 c549a56b18bf5e2f0594a389b63bc6765008de65f3f983977f7ecd98ea2210fd

See more details on using hashes here.

File details

Details for the file modaltrace-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: modaltrace-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 47.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for modaltrace-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 d7df44826c138c53a62bb5f597dd0a0689b101ee6073f8498e3d2c0ad895b779
MD5 123c578ec04e93f99efbfa0291f9b63d
BLAKE2b-256 bb34553f7bec331f6d163aced574aa90d7f1a446cb72700afb34ee5e784a0ac1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page