OpenTelemetry exporter for AIP integrity checkpoints and AAP verification results
Project description
aip-otel-exporter
OpenTelemetry exporter for AIP integrity checkpoints and AAP verification results.
Python companion to @mnemom/aip-otel-exporter.
Installation
pip install aip-otel-exporter[otel] # with OpenTelemetry SDK
pip install aip-otel-exporter[auto] # with auto-instrumentation support
pip install aip-otel-exporter[all] # all optional dependencies
Quick Start
Manual API
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import SimpleSpanProcessor, ConsoleSpanExporter
from aip_otel_exporter import AIPOTelRecorder
# Set up OTel
provider = TracerProvider()
provider.add_span_processor(SimpleSpanProcessor(ConsoleSpanExporter()))
# Create recorder
recorder = AIPOTelRecorder(tracer_provider=provider)
# After an AIP integrity check:
recorder.record_integrity_check(signal)
# After an AAP verification:
recorder.record_verification(result)
# After an AAP coherence check:
recorder.record_coherence(result)
# After AAP drift detection:
recorder.record_drift(alerts, traces_analyzed=50)
Auto-instrumentation
from aip_otel_exporter import AIPInstrumentor
# Automatically wraps AIP/AAP functions to record spans
AIPInstrumentor().instrument()
# Now AIP/AAP calls are automatically traced:
# from aip import AIPClient
# signal = client.check(thinking_block, card)
# ^^^ span is recorded automatically
Direct Functions
For fine-grained control, use the recording functions directly:
from opentelemetry import trace
from aip_otel_exporter.manual import (
record_integrity_check,
record_verification,
record_coherence,
record_drift,
)
tracer = trace.get_tracer("my-app")
record_integrity_check(tracer, signal)
record_verification(tracer, result)
Span Hierarchy
Spans are created as children of the current active span:
your_application_span
├── aip.integrity_check
│ ├── event: aip.concern (one per concern)
│ └── event: aip.drift_alert (when drift active)
├── aap.verify_trace
│ └── event: aap.violation (one per violation)
├── aap.check_coherence
└── aap.detect_drift
└── event: aap.drift_alert (one per alert)
Attributes
aip.integrity_check span — 22 attributes + 2 GenAI SIG aliases
| Attribute | Type | Description |
|---|---|---|
aip.integrity.checkpoint_id |
string | Checkpoint ID |
aip.integrity.verdict |
string | clear / review_needed / boundary_violation |
aip.integrity.proceed |
boolean | Whether to proceed |
aip.integrity.recommended_action |
string | Recommended action |
aip.integrity.concerns_count |
int | Number of concerns |
aip.integrity.agent_id |
string | Agent ID |
aip.integrity.card_id |
string | Alignment Card ID |
aip.integrity.session_id |
string | Session ID |
aip.integrity.thinking_hash |
string | SHA-256 of thinking block |
aip.integrity.analysis_model |
string | Analysis LLM model |
aip.integrity.analysis_duration_ms |
float | Analysis duration |
aip.integrity.thinking_tokens |
int | Original thinking tokens |
aip.integrity.truncated |
boolean | Whether thinking was truncated |
aip.integrity.extraction_confidence |
float | Extraction confidence |
aip.conscience.consultation_depth |
string | surface / standard / deep |
aip.conscience.values_checked_count |
int | Values checked count |
aip.conscience.conflicts_count |
int | Conflicts count |
aip.window.size |
int | Window size |
aip.window.integrity_ratio |
float | Integrity ratio (0.0–1.0) |
aip.window.drift_alert_active |
boolean | Drift alert active |
gen_ai.evaluation.verdict |
string | GenAI SIG forward-compat alias |
gen_ai.evaluation.score |
float | GenAI SIG forward-compat alias |
aap.verify_trace span — 8 attributes
| Attribute | Type |
|---|---|
aap.verification.result |
boolean |
aap.verification.similarity_score |
float |
aap.verification.violations_count |
int |
aap.verification.warnings_count |
int |
aap.verification.trace_id |
string |
aap.verification.card_id |
string |
aap.verification.duration_ms |
float |
aap.verification.checks_performed |
string (comma-separated) |
aap.check_coherence span — 5 attributes
| Attribute | Type |
|---|---|
aap.coherence.compatible |
boolean |
aap.coherence.score |
float |
aap.coherence.proceed |
boolean |
aap.coherence.matched_count |
int |
aap.coherence.conflict_count |
int |
aap.detect_drift span — 2 attributes
| Attribute | Type |
|---|---|
aap.drift.alerts_count |
int |
aap.drift.traces_analyzed |
int |
Metrics
from aip_otel_exporter.metrics import (
create_aip_metrics,
record_integrity_metrics,
record_verification_metrics,
record_coherence_metrics,
record_drift_metrics,
)
metrics = create_aip_metrics(meter_provider)
record_integrity_metrics(metrics, signal)
| Metric | Type | Labels |
|---|---|---|
aip.integrity_checks.total |
Counter | verdict, agent_id |
aip.concerns.total |
Counter | category, severity |
aip.analysis.duration_ms |
Histogram | verdict |
aip.window.integrity_ratio |
Histogram | — |
aip.drift_alerts.total |
Counter | — |
aap.verifications.total |
Counter | verified |
aap.violations.total |
Counter | type, severity |
aap.verification.duration_ms |
Histogram | — |
aap.coherence.score |
Histogram | compatible |
Performance
TypeScript benchmarks (Python exhibits comparable characteristics — duck-typed dict input, single span creation):
| Operation | Mean | p99 | Ops/sec |
|---|---|---|---|
record_integrity_check() |
0.007 ms | 0.023 ms | 142,540 |
record_verification() |
0.003 ms | 0.004 ms | 310,510 |
record_coherence() |
0.003 ms | 0.003 ms | 321,385 |
record_drift() |
0.003 ms | 0.007 ms | 295,807 |
All operations are sub-0.01ms mean. Zero measurable overhead on hot paths.
Requirements
- Python >= 3.9
- OpenTelemetry SDK >= 1.20.0 (for
[otel]extra)
License
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 aip_otel_exporter-0.4.0.tar.gz.
File metadata
- Download URL: aip_otel_exporter-0.4.0.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a47782efef2174a0c6f42f616bc20935a8184f4438b426f8ff05747f630305df
|
|
| MD5 |
1a3dc79f45150bac908561b27cac485d
|
|
| BLAKE2b-256 |
a876d1f049071571abdb184e7aa0284dc0523a3e278e7bcce88a64791b445357
|
Provenance
The following attestation bundles were made for aip_otel_exporter-0.4.0.tar.gz:
Publisher:
ci.yml on mnemom/aip-otel-exporter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aip_otel_exporter-0.4.0.tar.gz -
Subject digest:
a47782efef2174a0c6f42f616bc20935a8184f4438b426f8ff05747f630305df - Sigstore transparency entry: 977853573
- Sigstore integration time:
-
Permalink:
mnemom/aip-otel-exporter@4fd677481acdc7953c310f26bf217e32bdf7e1c2 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/mnemom
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4fd677481acdc7953c310f26bf217e32bdf7e1c2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aip_otel_exporter-0.4.0-py3-none-any.whl.
File metadata
- Download URL: aip_otel_exporter-0.4.0-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
594d5db7aade05abf69171d1a12c97c7a084d010f7802324641d85c983e63fd7
|
|
| MD5 |
5fd8f0a0ffd1a85c775f2def5be27709
|
|
| BLAKE2b-256 |
8acb573d8c950c7eb26a32812f5e7442806e2a3a79d37104a19d358cf9b2bd3a
|
Provenance
The following attestation bundles were made for aip_otel_exporter-0.4.0-py3-none-any.whl:
Publisher:
ci.yml on mnemom/aip-otel-exporter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aip_otel_exporter-0.4.0-py3-none-any.whl -
Subject digest:
594d5db7aade05abf69171d1a12c97c7a084d010f7802324641d85c983e63fd7 - Sigstore transparency entry: 977853632
- Sigstore integration time:
-
Permalink:
mnemom/aip-otel-exporter@4fd677481acdc7953c310f26bf217e32bdf7e1c2 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/mnemom
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4fd677481acdc7953c310f26bf217e32bdf7e1c2 -
Trigger Event:
push
-
Statement type: