Progress Observability instrumentation for Python agents
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file progress_observability-1.4.1.tar.gz.
File metadata
- Download URL: progress_observability-1.4.1.tar.gz
- Upload date:
- Size: 183.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47f0f85f4fdd4b32fa85ecff0541890620d9893b96c80945571e42422e205616
|
|
| MD5 |
a52543f76ac0df31c45b6901c20e3485
|
|
| BLAKE2b-256 |
8ac39f27de3310680e90a6e286f69414f5204e67afe89c6db9250eb98fa1fc51
|
File details
Details for the file progress_observability-1.4.1-py3-none-any.whl.
File metadata
- Download URL: progress_observability-1.4.1-py3-none-any.whl
- Upload date:
- Size: 46.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9f749aab4b5f573a848d52c325efeb4b463b58c5208c1db641b749ac38f391f
|
|
| MD5 |
5db25d3604478ce86d67064eed73702c
|
|
| BLAKE2b-256 |
45fe4fce3b29a993a8845ea26da1a331a02f4827f17d22ad1101d2b33fd71c4e
|