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.11.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.11-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for modaltrace-0.2.11.tar.gz
Algorithm Hash digest
SHA256 1ba8916a7ddd37aa08c362b486c824a6d7f829303d5d7c0c522e11b166de9daa
MD5 e1f2d6069baa1d2410d72634f30a38c9
BLAKE2b-256 1aa4d7fc3c41eb5b57a9c038a246129d289acb556934dff8b68021c62ec99fbf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modaltrace-0.2.11-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.15

File hashes

Hashes for modaltrace-0.2.11-py3-none-any.whl
Algorithm Hash digest
SHA256 49b773d55dba448a9ce3c6faad9ee3e1f97e68540d2c284052062391fb48b49c
MD5 9dee87d2e20d30ab8271e99d004ba4fd
BLAKE2b-256 133579dfb01a14194d2ea6f75ea39c3552d5eecb2bb4675f07897f5d621b67a2

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