Metadata-Version: 2.4
Name: hyperlake-telemetry
Version: 0.1.0
Summary: Standards-first telemetry and artifact SDK for Hyperlake
Author-email: Hyperlake <vc@hyperlake.cloud>
License-Expression: LicenseRef-Proprietary
Project-URL: Homepage, https://hyperlake.cloud
Project-URL: Documentation, https://hyperlake.cloud/docs
Keywords: opentelemetry,otlp,openinference,agents,temporal,langflow
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: System :: Monitoring
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: certifi>=2024.2.2
Provides-Extra: temporal
Requires-Dist: temporalio[opentelemetry]>=1.20; extra == "temporal"
Provides-Extra: langflow
Requires-Dist: langflow>=1.6; extra == "langflow"
Provides-Extra: otel
Requires-Dist: opentelemetry-api>=1.30; extra == "otel"
Requires-Dist: opentelemetry-sdk>=1.30; extra == "otel"
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.30; extra == "otel"
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: twine>=6; extra == "dev"

# Hyperlake Telemetry SDK for Python

`hyperlake-telemetry` sends standards-compatible OTLP/HTTP JSON and can attach
events or immutable artifacts to the same pipeline. It does not replace the
OpenTelemetry SDK: applications with existing instrumentation should continue
using their normal exporter and use this package only for run context, stable
event identity, evaluations, and artifact attachment.

```bash
pip install hyperlake-telemetry
```

```python
from hyperlake_telemetry import Client, Privacy

client = Client(
    base_url="https://us.hyperlake.cloud",
    tenant_id="tenant-public-id",
    pipeline_id="pipeline-public-id",
    protocol_token="write-only-protocol-token",
    tenant_jwt="short-lived-jwks-jwt",
    privacy=Privacy(capture_content=False),
)

with client.run("invoice-agent", goal_id="goal-42") as run:
    with run.span("lookup-account", kind="RETRIEVER"):
        pass
    run.evaluate("groundedness", score=0.97, label="pass")

client.flush()
```

The authenticated credential determines the authoritative tenant and pipeline.
The IDs supplied by the application are routing hints and must match the token.
Prompt, response, tool argument, and tool result content is suppressed by
default. Set `capture_content=True` only after applying an approved data policy.

See the repository integration guides for Temporal, Langflow, OpenInference,
Collector, and Alloy examples.

