tracectrl-sdk
TraceCtrl Enterprise SDK — instrument your agentic AI application to send traces to a TraceCtrl Enterprise deployment.
Apache 2.0 licensed. Built directly on OpenTelemetry and
OpenInference — self-contained, with no other
TraceCtrl runtime dependency. Adds enterprise-specific defaults (collector endpoint, required
ingest-key auth, fail-loud behaviour) plus configure(), instrument(), and track() for
deterministic, source-declared agent identity.
Install
pip install "tracectrl-sdk[strands]" # or [agno], [langchain], [crewai], [google-adk], [all]
The framework extras pull the matching OpenInference instrumentor. The base package
(pip install tracectrl-sdk, just OpenTelemetry) is enough if you only use
configure() + track() without framework auto-instrumentation.
Quickstart
import os
from tracectrl_enterprise import configure, instrument, track
configure(ingest_key=os.environ["TRACECTRL_INGEST_KEY"]) # auth + endpoint
instrument("strands") # framework auto-instrumentation
from strands import Agent
agent = track(Agent(name="PaymentAgent", system_prompt="...")) # declare identity once
agent("refund order 123") # every invocation is now a clean AGENT span
Three calls:
configure(ingest_key=...)— initialise the OTLP pipeline against your collector (required ingest key; fails loud if missing).instrument(framework)— activate OpenInference auto-instrumentation for your framework ("strands","agno","langchain","crewai","google-adk", a list, or"auto"to pick up whatever's installed), plus the enterprise enrichment processors.track(agent)— wrap an agent object once.trackreads the agent'snameand system prompt automatically and stamps the canonicalopeninference.span.kind=AGENT+tracectrl.agent.{id,name,framework}(androle/system_promptwhen available) at the source — so the platform never has to guess agent identity from span names. Returns the same agent (chainable).
Override any field explicitly when the defaults aren't right (notably for LangChain/CrewAI/Google ADK, whose agents don't self-describe):
agent = track(my_chain, id="invoice-extractor", name="InvoiceExtractor",
framework="langchain", role="document_extraction")
For multi-turn flows, group traces with the session helpers:
from tracectrl_enterprise import new_session, set_user_id
new_session(user_id="alice@example.com") # or set_session_id("<your conversation id>")
set_user_id("bob@example.com") # change who is driving; clear_user_id() to forget
Mark externally-triggered entry points with the ingress decorator so the
platform records how a run was triggered:
from tracectrl_enterprise import ingress
@ingress(trigger_type="email")
def handle_inbound(msg): ...
Tenancy is set by the collector, never the SDK
Spans export over OTLP (gRPC by default, HTTP opt-in) with
Authorization: Bearer <ingest_key>. The collector resolves your ingest key to a tenant and stamps tracectrl.tenant_id
on every span — your app can't (and shouldn't) set tenancy itself; the collector
is the trust boundary.
Configuration
configure(ingest_key=..., endpoint=..., service_name=..., protocol=...):
| Argument | Env var | Default | Required |
|---|---|---|---|
ingest_key |
TRACECTRL_INGEST_KEY |
— | yes — fails loud if not set |
endpoint |
TRACECTRL_ENDPOINT |
https://cloud.tracectrl.ai/ingest |
no |
service_name |
TRACECTRL_SERVICE_NAME |
the script or module name being run, else tracectrl-agent |
no |
protocol |
TRACECTRL_PROTOCOL |
grpc |
no — http for OTLP/HTTP (protobuf) |
grpc dials host:port (443 for https, else 4317) and ignores any URL path.
http posts to <scheme>://host[:port]/v1/traces (port 4318 for a bare host);
any other path is replaced, so https://host/ingest and https://host both
work. Use http when the proxy in front of TraceCtrl terminates TLS without
HTTP/2 ALPN (gRPC then fails with UNAVAILABLE … missing selected ALPN property); nothing else changes — same key, same spans, same tenancy.
Migrating from 0.1.x
0.1.x exposed a tag_agent(id=, name=, framework=) decorator placed on each agent
invocation. It has been removed in favour of track(), which reads identity
off the agent object, captures the system prompt, and composes with the framework
instrumentors. Replace @tag_agent(id="x", name="X", framework="f") on a function
with agent = track(my_agent, ...) on the agent object.
License
Apache 2.0. The TraceCtrl Enterprise server-side platform (engine, collector, UI) is BUSL-licensed; the SDK is permissively licensed so it can be embedded in your proprietary code without restriction.
Reporting issues
https://github.com/Cloudsine-weborion/tracectrl-enterprise/issues
Metadata
Release files for tracectrl-sdk 0.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| tracectrl_sdk-0.3.3.tar.gz | 24.5 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tracectrl_sdk-0.3.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 54.0 kB
Release files / tracectrl_sdk-0.3.3.tar.gz
| Download URL | tracectrl_sdk-0.3.3.tar.gz |
|---|---|
| Size | 24.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e4c0001d41186ca770f6297bb026da1da611a8cd874f4ba04b66bdf541d00804
|
|
BLAKE2b-256 checksum How to use checksums |
b13a04a32202a2cde1b8e0ae4075df465aa03ed2416822ffc0ec7ce07aebe8ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 20, 2026.
Transparency logRelease files / tracectrl_sdk-0.3.3-py3-none-any.whl
| Download URL | tracectrl_sdk-0.3.3-py3-none-any.whl |
|---|---|
| Size | 29.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
58d77350f986a5e56e4fb52a7313f04216ea031d541cf799daac8ae500414457
|
|
BLAKE2b-256 checksum How to use checksums |
59a3e6d4194f6fad3af4b45c1484e7185eea819c1dcd8c54eac8414791c85000
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 20, 2026.
Transparency logSecurity for tracectrl-sdk 0.3.3
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for tracectrl_sdk-0.3.3.tar.gz
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 Oct 20, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.