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

Uploaded Python 3

File details

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

File metadata

  • Download URL: modaltrace-0.2.14.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.14.tar.gz
Algorithm Hash digest
SHA256 e5f9d2f76a3ea60accd8c7b93e0198acaaacf9c5a1b1001bf358d3e6e7bf510d
MD5 2017bbce413f84d8fbe8e4a28f8a1c07
BLAKE2b-256 234d3896dfe8205e265fb971a82feaca95b0cc5871fd66610ca4621876a92d26

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modaltrace-0.2.14-py3-none-any.whl
  • Upload date:
  • Size: 47.8 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.14-py3-none-any.whl
Algorithm Hash digest
SHA256 f7306b36e0d5893643ba4756e7dde03664d88ec2751af75b74ab5aac5343519e
MD5 2d617bc90f160dfda1f8ac4f17764cb6
BLAKE2b-256 3c86244f6ce2d4e75608ce986b3f5a0f3ce97d11ad29300c56d31a378371893d

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