TraceCtrl Enterprise SDK — agentic AI security observability for the enterprise platform
Project description
tracectrl-enterprise
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-enterprise[strands]" # or [agno], [langchain], [crewai], [google-adk], [all]
The framework extras pull the matching OpenInference instrumentor. The base package
(pip install tracectrl-enterprise, 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
new_session() # or set_session_id("<your conversation id>")
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 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=...):
| Argument | Env var | Default | Required |
|---|---|---|---|
ingest_key |
TRACECTRL_INGEST_KEY |
— | yes — fails loud if not set |
endpoint |
TRACECTRL_ENDPOINT |
https://app.tracectrl.ai/ingest |
no |
service_name |
TRACECTRL_SERVICE_NAME |
tracectrl-agent |
no |
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
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 tracectrl_enterprise-0.2.3.tar.gz.
File metadata
- Download URL: tracectrl_enterprise-0.2.3.tar.gz
- Upload date:
- Size: 20.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbc9029df4773e19c02d90967295c62958ed3bb1add7f8f3e5c7de0e0a5f296f
|
|
| MD5 |
554cc7a8ad254043a5d272bc45de4121
|
|
| BLAKE2b-256 |
f81c34d0b169174564106b32c8b7415fd42f1e4b9447b88d573ab2ca0f1f387d
|
Provenance
The following attestation bundles were made for tracectrl_enterprise-0.2.3.tar.gz:
Publisher:
publish-sdk.yml on tracectrl/tracectrl-enterprise
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tracectrl_enterprise-0.2.3.tar.gz -
Subject digest:
bbc9029df4773e19c02d90967295c62958ed3bb1add7f8f3e5c7de0e0a5f296f - Sigstore transparency entry: 1869074765
- Sigstore integration time:
-
Permalink:
tracectrl/tracectrl-enterprise@db0d40ed6cb9dece6ed0abbefb6fdb043bdb1010 -
Branch / Tag:
refs/tags/sdk-v0.2.3 - Owner: https://github.com/tracectrl
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-sdk.yml@db0d40ed6cb9dece6ed0abbefb6fdb043bdb1010 -
Trigger Event:
push
-
Statement type:
File details
Details for the file tracectrl_enterprise-0.2.3-py3-none-any.whl.
File metadata
- Download URL: tracectrl_enterprise-0.2.3-py3-none-any.whl
- Upload date:
- Size: 25.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d6e464d8a06a227704081a5ab9e7c0ece7516e23da0022c16fbabf5fd628cb7
|
|
| MD5 |
cffa312d97e3e3a71b01fe308ca0c686
|
|
| BLAKE2b-256 |
2b73ecbf49cc32a4afb84ae824e55808fc8f800edd9ddff2c99752abdf96160f
|
Provenance
The following attestation bundles were made for tracectrl_enterprise-0.2.3-py3-none-any.whl:
Publisher:
publish-sdk.yml on tracectrl/tracectrl-enterprise
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tracectrl_enterprise-0.2.3-py3-none-any.whl -
Subject digest:
0d6e464d8a06a227704081a5ab9e7c0ece7516e23da0022c16fbabf5fd628cb7 - Sigstore transparency entry: 1869074910
- Sigstore integration time:
-
Permalink:
tracectrl/tracectrl-enterprise@db0d40ed6cb9dece6ed0abbefb6fdb043bdb1010 -
Branch / Tag:
refs/tags/sdk-v0.2.3 - Owner: https://github.com/tracectrl
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-sdk.yml@db0d40ed6cb9dece6ed0abbefb6fdb043bdb1010 -
Trigger Event:
push
-
Statement type: