Developer surfaces
Gateway, MCP, OTel en n8n
De kern-SDKs van Attesto dekken directe applicatie-integratie. Gateway, MCP, OpenTelemetry en n8n dekken de systemen rondom applicaties: modelproxying, agent tools, observability-traces en workflowautomatisering. Elk oppervlak moet echte Proofstream-evidence schrijven, source timestamps respecteren en secrets buiten payloads, receipts, bundles, logs en browsercode houden.
Scope
Deze pagina is voor developers en technische operators die Attesto integreren in AI-gateways, agent hosts, telemetry pipelines en automatiseringstools. De pagina documenteert geen interne staff-operaties en vervangt de SDK-, API-, connector- of Local Vault-handleidingen niet. Gebruik hem om het juiste oppervlak te kiezen en te begrijpen welke evidence elk oppervlak maakt.
Wanneer gebruik je welk oppervlak
| Oppervlak | Gebruik wanneer | Produceert | Primaire eigenaar |
|---|---|---|---|
| Inference Gateway | Je OpenAI-compatible model calls wilt vastleggen zonder elke applicatie aan te passen. | Request/response commitments, policy metadata, model-routing evidence en receipts. | Platform- of AI-engineeringteam. |
| MCP server | Agent hosts deterministische tools nodig hebben voor events, receipt-verificatie of bundlebouw. | Tool-call evidence, stream events en receipt-verificatieresultaten. | Agent-platform of developer tooling-team. |
| OpenTelemetry bridge | Je al spans uitstuurt en geselecteerde traces naar Attesto-evidence wilt omzetten. | Span commitments, trace/span source references en service-metadata receipts. | Observability- of platformteam. |
| n8n node | Workflowautomatisering verifieerbare step receipts en signed webhook-verificatie nodig heeft. | Workflow-step events, source references, receipt IDs en verificatie-uitkomsten. | Automation- of operationsteam. |
Inference Gateway
De Attesto Inference Gateway is een server-side proxy voor OpenAI-compatible model calls. Applicaties sturen requests naar de gateway; de gateway stuurt door naar de geconfigureerde upstream provider en schrijft Attesto-evidence voordat de provider response wordt teruggegeven. Gebruik dit wanneer teams niet in elke applicatie SDK-calls kunnen toevoegen, of wanneer centraal beleid en modelrouting nodig zijn.
export ATTESTO_API_KEY="$ATTESTO_SYSTEM_KEY"
export OPENAI_BASE_URL=http://127.0.0.1:8765/v1
attesto-gateway --listen 127.0.0.1:8765 \
--admin-listen 127.0.0.1:8766 \
--attesto-base-url https://verify.attesto.eu \
--upstream https://api.openai.com/v1 \
--stream-id "$ATTESTO_STREAM_ID" \
--capture commitments
curl -sS "$OPENAI_BASE_URL/chat/completions" \
-H "Authorization: Bearer ${PROVIDER_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Summarize this policy"}]}'
- Capture mode: commit request- en responsemetadata, niet raw secrets of provider credentials.
- Toegestane modes:
commitmentsennonezijn de enige capture modes; raw prompt/response capture bestaat bewust niet. - OpenAI-compatible paden:
/v1/chat/completions,/v1/completions,/v1/embeddingsen/v1/responsesmakenattesto.model_decision-events. Andere paden worden onaangepast geproxied en vastgelegd als generiekehttp_callcommitment events. - Streaming: SSE-responses gaan byte-for-byte door met directe flushing; de gateway bouwt de stream pas na afloop opnieuw op om commitments te berekenen.
- Source time: behoud de caller timestamp wanneer die wordt aangeleverd; leg anders gateway receive time met timezone vast.
- Idempotency: gebruik een request id of source reference zodat retries geen conflicterende geschiedenis maken.
- Delivery: events gebruiken een begrensde queue en achtergrondbatches. Attesto-storingen of queue-overflow gaan naar een gefsyncte NDJSON dead-letter spool, automatisch opnieuw afgespeeld of met
attesto-gateway replay-spool.--spool-max-bytesis het enige droppunt en wordt luid geteld en gelogd. - Header redaction:
Authorization,Proxy-Authorization,Cookie,Set-Cookie,api-key,x-api-keyen headers die matchen optoken|secret|keyverschijnen nooit in events, logs, spool entries of foutmeldingen. - Fail behavior: de gateway is standaard fail-open met waarschuwingen en fsynced spool; voeg
--stricttoe wanneer beleid vereist dat receipt creation slaagt voordat upstream werk doorgaat. - Routing en TLS: laat upstream TLS-verificatie aan en gebruik expliciete
--route-entries voor multi-upstream deployments. - Operations: monitor
/healthzen/metricsop--admin-listen, en gebruikattesto-gateway replay-spoolna storingen.
MCP server
De Attesto MCP server biedt een smalle set deterministische Attesto
tools aan MCP-compatible agent hosts. De huidige tool surface is
log_action, get_receipt,
verify_receipt, get_stream_head en
verify_completeness. De server logt acties, haalt
receipts op, verifieert receipts offline, inspecteert stream heads en
bewijst dat een sequence range gap-free is zonder de agent brede
backend credentials te geven. De MCP server hoort server-side in de
agent-runtimeomgeving te draaien. Hij bevat geen AI-model, geen
AI-vendor imports en geen verborgen beslislogica; het is een
deterministische tool-wrapper rond de Attesto SDK.
pip install attesto-mcp
{
"mcpServers": {
"attesto": {
"command": "attesto-mcp",
"args": ["--stdio"],
"env": {
"ATTESTO_BASE_URL": "https://verify.attesto.eu",
"ATTESTO_API_KEY": "${ATTESTO_API_KEY}",
"ATTESTO_STREAM_ID": "${ATTESTO_STREAM_ID}"
}
}
}
}
attesto-mcp --stdio
- Bewaar MCP credentials in de secret store van de agent-runtime.
- Geef geen tenant API keys, provider API keys of raw customer secrets door via MCP tool arguments.
- Lokale verificatie:
verify_receiptenverify_completenessdraaien lokaal; de trust anchor is de gepinde witness public key, niet een Attesto backend response. - Leak guard: payloads worden geweigerd wanneer ze de waarde bevatten van een environment variable die eindigt op
_KEY,_TOKEN,_SECRETof_PASSWORD. - Houd tool outputs deterministisch en receipt-georiënteerd zodat agent logs later verifieerbaar blijven.
- De package default base URL is bewust overrideable; zet
ATTESTO_BASE_URL=https://verify.attesto.euexpliciet voor de publieke Attesto-service. - Beperk beschikbare tools per agent role; niet elke agent heeft bundle export of stream creation nodig.
OpenTelemetry bridge
De OpenTelemetry bridge zet geselecteerde spans om in Attesto events. Dit is nuttig wanneer de trace pipeline al de bron van waarheid is: model-gateway spans, policy-evaluatie spans, connector-sync spans of incidentafhandelingsspans. De bridge moet agressief filteren; stuur niet standaard elke span door.
pip install attesto opentelemetry-sdk
import os
from attesto import AttestoClient
from attesto.otel import AttestoSpanProcessor
from opentelemetry.sdk.trace import TracerProvider
provider = TracerProvider()
provider.add_span_processor(
AttestoSpanProcessor(
client=AttestoClient(api_key=os.environ["ATTESTO_API_KEY"]),
stream_id=os.environ["ATTESTO_STREAM_ID"],
)
)
- Event type: elke beëindigde span wordt één
attesto.otel_spancommitment event. - Source reference: spans gebruiken deterministische
otel:{trace_id}:{span_id}source references, zodat dezelfde span opnieuw sturen idempotent is. - Payload discipline: redacteer attributes die secrets of persoonsgegevens kunnen bevatten voordat de processor ze ziet; Python gebruikt
attribute_allowlisten TypeScript gebruiktattributeAllowlist. - Commitment-only attributes: alleen allowlisted attributes worden vastgelegd, als
attributes_commitmentplusattribute_keys; niet-allowlisted waarden worden niet naar Attesto geschreven. Schakel attribute commitments helemaal uit metcommit_attributes=FalseofcommitAttributes: false. - Host safety: processor failures breken de host app standaard niet; gebruik
strict=Trueofstrict: truewanneer evidence-capture failure de request moet laten falen, en gebruikon_error/onErrorvoor observability. - Sampling: stem OTel sampling af op evidencebeleid; spans die zijn weggesampled kunnen later geen evidence worden.
- Verification: receipt IDs moeten waar mogelijk teruggeschreven worden naar logs of trace attributes.
n8n node
De Attesto n8n node is bedoeld voor workflowautomatisering die verifieerbare step evidence nodig heeft. Gebruik hem voor approvals, connector-handoffs, incidenttriage, policy checks en klantgerichte automatisering waarbij een auditor later moet kunnen zien wat er gebeurde en wanneer.
npm install n8n-nodes-attesto
- Bewaar Attesto credentials in n8n credentials, niet in workflow JSON.
- Gebruik de action node voor Log Event, Log Typed Compliance Event, Get Receipt en Verify Receipt (Offline).
- Offline receipt verification: Verify Receipt berekent de canonical hash en Ed25519 signature lokaal opnieuw tegen de witness key die in de n8n credential is gepind; Attesto servers worden niet geraadpleegd.
- Webhook trigger: gebruik de trigger node alleen voor signature-verified Attesto webhooks. Hij verifieert HMAC over
timestamp.bodymet constant-time comparison en 300 s clock-skew tolerance; stale of forged deliveries krijgen 401 en starten geen workflow. - Zet source object id en source timestamp expliciet voor externe systemen.
- Publiceer geen workflows met embedded tenant keys, provider tokens of raw regulated payloads.
Evidence model
Alle vier oppervlakken horen evidence uit te sturen via dezelfde Proofstream-semantiek als de SDKs. Een gateway request, MCP tool call, OTel span of n8n workflow step is niet speciaal: het is een source event met een source reference, timestamp, normalized commitment, receipt en optionele inclusion in latere windows, checkpoints, witnesses en anchors.
| Veld | Vereist gedrag |
|---|---|
| source_system_id | Identificeer de gateway, agent host, telemetry service of n8n instance. |
| source_ref | Stabiele idempotency key zoals request id, tool call id, trace/span id of workflow execution id. |
| source_time | Originele source timestamp met timezone of offset. |
| payload_commitment | Commit normalized payload metadata zonder provider secrets op te slaan. |
| receipt | Return of store receipt id zodat het event later verifieerd kan worden. |
Security boundaries
- Draai Gateway en MCP alleen server-side; plaats nooit Attesto API keys in browser bundles.
- Houd upstream provider secrets in de secret store van de runtime die eigenaar is.
- Gebruik bij voorkeur Local Vault wanneer connector- of edge-credentials klantzijdig moeten blijven.
- Mask prompts, responses, trace attributes en workflow variables wanneer ze persoonsgegevens of secrets bevatten.
- Gebruik tenant-scoped API keys en revoke ze wanneer een gateway, agent host, telemetry collector of workflow buiten gebruik gaat.
Operations
Behandel deze oppervlakken als productie-integraties. Ze hebben health checks, retry policy, rate-limit handling, idempotency, source-time-validatie en observeerbare failure states nodig. Een oppervlak kan uit een package registry geïnstalleerd zijn, maar is pas production-ready voor een tenant wanneer het een echte Attesto API key, een echte stream en een succesvolle receipt/verify canary heeft.
| Check | Verwacht resultaat |
|---|---|
| Install smoke | Package installeert vanuit de officiële registry zonder source maps of source leaks. |
| Receipt canary | Eén echt event wordt gelogd en de receipt verifieert. |
| Retry canary | Herhaalde source_ref geeft replay/idempotent gedrag, geen dubbele geschiedenis. |
| Secret scan | Geen tenant key, provider key, prompt secret, trace secret of workflow credential verschijnt in logs of bundles. |
Failure modes
| Failure | Betekenis | Respons |
|---|---|---|
| Attesto unavailable | Het oppervlak kan geen receipt verkrijgen. | Fail closed wanneer beleid evidence vereist; markeer anders de run als missing evidence. |
| Provider unavailable | De upstream model/tool/workflow service faalde. | Log veilige failure metadata wanneer beleid dat toestaat; verzin geen success event. |
| Invalid source time | De source timestamp ontbreekt of is malformed. | Reject of normalize volgens tenant policy en leg receive time apart vast. |
| Secret detected | Een payload of attribute lijkt secret material te bevatten. | Blokkeer emission, redacteer bij de bron en roteer wanneer leakage bevestigd is. |
Rollout checklist
- Kies één oppervlak en één production stream; activeer niet alles tegelijk.
- Bewaar credentials alleen in server-side secret stores of n8n credentials.
- Draai één echt event → receipt → verify canary voordat je gebruikers uitnodigt.
- Documenteer source timestamps, source references en retention policy.
- Voeg dashboards of alerts toe voor receipt failures, retry conflicts en secret-scan rejections.
- Werk tenant docs en changelog bij wanneer je een nieuw oppervlak activeert.
