Skip to main content

Progress Observability Instrumentation (Python)

Zero-intrusion telemetry for AI agents and LLM apps. Built on Traceloop SDK and OpenTelemetry with a simple one-line init and optional decorators.

Installation

pip install progress-observability

Or from wheel file:

pip install progress_observability-x.y.z-py3-none-any.whl

Quick Start

from progress.observability import Observability, ObservabilityInstruments

# Initialize once at process start
Observability.instrument(
    app_name="my-app",
    api_key="<your-api-key>",
    # endpoint="https://collector.observability.progress.com:443"  # Optional: has default
)

Configuration

Common options (for Observability.instrument):

  • app_name - Application name for telemetry
  • endpoint - OpenTelemetry collector endpoint
  • api_key - Authentication key
  • debug - Enable debug logging
  • instruments / block_instruments - Control what gets traced via ObservabilityInstruments
  • trace_content - when set to False will stop sending LLM prompt/responses as part of the telemetry data
  • additional_tags - custom tags (see below)

Environment overrides (optional):

  • OBSERVABILITY_APP_NAME sets the application name (e.g. "my-app")
  • OBSERVABILITY_ENDPOINT sets a custom endpoint for collecting data (e.g. "https://collector.observability.progress.com:443")
  • OBSERVABILITY_API_KEY sets the authentication key to use when sending data
  • OBSERVABILITY_TRACE_CONTENT when set to false will stop sending LLM prompt/responses as part of the telemetry data

Auth headers are added automatically for HTTP(S) endpoints when api_key is provided.

Custom Tags

Tags are user-defined strings (max 200 characters each) attached to observations for filtering and grouping.

Global tags — applied to every span:

Observability.instrument(
    app_name="my-app",
    api_key="<your-api-key>",
    additional_tags=["production", "release:2.4.1"],
)

Scoped tags — applied to spans within a specific block via propagate_attributes:

from progress.observability import propagate_attributes

with propagate_attributes(tags=["tenant:acme", "experiment-v2"]):
    # All spans created here inherit these tags
    my_agent_function()

Nesting is supported — tags accumulate from outer to inner scopes.

Decorator tags — applied to a single decorated function:

from progress.observability import task

@task(tags=["cohort-a"])
def my_task():
    ...

Package Structure

src/progress/observability/
├── __init__.py                 # Package entry point
├── sdk.py                      # Main Observability SDK
├── decorators.py               # @task, @workflow, @agent, @tool decorators
├── constants.py                # Environment variables and constants
├── enums.py                    # ObservabilityInstruments enum
├── exceptions.py               # Custom exception types
├── genai_message_processor.py  # LLM span content normalization
├── helpers.py                  # Helper functions
├── model_fix_processor.py      # LLM span attribute repair
├── tags.py                     # Tag propagation span processor

Metadata

Release files for progress-observability 1.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for progress-observability 1.5.1
File Size Uploaded
progress_observability-1.5.1.tar.gz 164.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for progress-observability 1.5.1
File Interpreter ABI Platform
progress_observability-1.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 216.2 kB

Release files / progress_observability-1.5.1.tar.gz

Download URL progress_observability-1.5.1.tar.gz
Size 164.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9ed9f123cb97c325717415369e1c77e2c1e99aab1f2b6c17dc09991d03a6da11
BLAKE2b-256 checksum
How to use checksums
db97d808fda2dac74f0fdf8a5396e47da6a48233865ce76e75e0e1abeec3fe8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / progress_observability-1.5.1-py3-none-any.whl

Download URL progress_observability-1.5.1-py3-none-any.whl
Size 51.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
720747a5cb58e142f6668a996591e0d885f2fbda64e0c15a1b7f540a6a039686
BLAKE2b-256 checksum
How to use checksums
63a496ccc06341ef7dfe268fb26286b579c68b5a7b59524e39664fc7ca5d1fd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release history Release notifications | RSS feed

1.5.3

2 release files

This release

1.5.1 This release

2 release files

1.5.0

2 release files

1.4.6

2 release files

1.4.3

2 release files

1.4.1

2 release files

1.2.0

2 release files

1.1.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page