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 telemetryendpoint- OpenTelemetry collector endpointapi_key- Authentication keydebug- Enable debug logginginstruments/block_instruments- Control what gets traced viaObservabilityInstrumentstrace_content- when set toFalsewill stop sending LLM prompt/responses as part of the telemetry dataadditional_tags- custom tags (see below)
Environment overrides (optional):
OBSERVABILITY_APP_NAMEsets the application name (e.g. "my-app")OBSERVABILITY_ENDPOINTsets a custom endpoint for collecting data (e.g. "https://collector.observability.progress.com:443")OBSERVABILITY_API_KEYsets the authentication key to use when sending dataOBSERVABILITY_TRACE_CONTENTwhen set tofalsewill 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.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| progress_observability-1.5.0.tar.gz | 163.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| progress_observability-1.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 215.2 kB
Release files / progress_observability-1.5.0.tar.gz
| Download URL | progress_observability-1.5.0.tar.gz |
|---|---|
| Size | 163.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fc8d533aea83b1fd1a9c83e822a17859c818d017cb6fb540175fc23a0789475e
|
|
BLAKE2b-256 checksum How to use checksums |
cd8f163d8e7f2ad24befca08b938883a244622924d1aa8f5066946374af07945
|
| 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 4, 2026.
Transparency logRelease files / progress_observability-1.5.0-py3-none-any.whl
| Download URL | progress_observability-1.5.0-py3-none-any.whl |
|---|---|
| Size | 51.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fc08daf37fa4dcf43a3a86a7481f16df47a43e02e9353f8c91c227e85213cadc
|
|
BLAKE2b-256 checksum How to use checksums |
e0d1a449d17fefa53f5b051486bda30416735ddd92e84f98688eec08c5d110a8
|
| 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 4, 2026.
Transparency log