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

Uploaded Python 3

File details

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

File metadata

  • Download URL: modaltrace-0.2.9.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.9.tar.gz
Algorithm Hash digest
SHA256 1238cace3bafe80ea125710684ae7651c35cf68f0328d79a7faee3fcf34cde2b
MD5 9ea1691c7996825ccf0fc1465a77cc4b
BLAKE2b-256 5bcf36240a121bc089d82eb252d813473268e90bd310ac558e1a193831c43240

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modaltrace-0.2.9-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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 b4ca97ec26d8d5840d41a5ce6a66e3311da3246d7225e36349901ba6695d8711
MD5 4376b9a31a61ef9ff89af6bdaa968d6d
BLAKE2b-256 e3da661177069c58d26d4e682050a499c2be1d78cf2f54984d48a130ac4d2131

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