Attesto

Developer surfaces

Gateway, MCP, OTel e n8n

Gli SDK principali di Attesto coprono l'integrazione diretta nelle applicazioni. Gateway, MCP, OpenTelemetry e n8n coprono i sistemi che stanno intorno alle applicazioni: proxy dei modelli, strumenti per agenti, trace di osservabilità e automazione dei workflow. Ogni superficie deve emettere vera Proofstream evidence, rispettare i source timestamps e tenere i secrets fuori da payloads, receipts, bundles, logs e codice browser.

Scope

Questa pagina è per developer e operatori tecnici che integrano Attesto in AI gateways, agent hosts, telemetry pipelines e strumenti di automazione. Non documenta operazioni interne di staff e non sostituisce i manuali SDK, API, connectors o Local Vault. Usala per scegliere la superficie corretta e capire quale evidence produce ciascuna.

Quando usare ogni superficie

SuperficieUsa quandoProduceOwner primario
Inference GatewayVuoi catturare chiamate modello compatibili OpenAI senza modificare ogni applicazione.Request/response commitments, policy metadata, model routing evidence e receipts.Team piattaforma o AI engineering.
MCP serverGli agent hosts hanno bisogno di tools deterministici per loggare events, verificare receipts o costruire bundles.Tool-call evidence, stream events e risultati di verifica receipts.Team agent platform o developer tooling.
OpenTelemetry bridgeEmetti già spans e vuoi trasformare traces selezionate in Attesto evidence.Span commitments, trace/span source references e service metadata receipts.Team observability o piattaforma.
n8n nodeL'automazione workflow richiede step receipts verificabili e verifica di webhooks firmati.Workflow-step events, source references, receipt IDs e risultati di verifica.Team automation o operations.

Inference Gateway

Attesto Inference Gateway è un proxy server-side per chiamate modello compatibili OpenAI. Le applicazioni inviano requests al gateway; il gateway inoltra al provider upstream configurato e scrive Attesto evidence prima di restituire la risposta del provider. Usalo quando i team non possono aggiungere chiamate SDK in ogni applicazione, oppure quando servono policy centrale e model routing.

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"}]}'

MCP server

Attesto MCP server espone un set ristretto di tools Attesto deterministici agli agent hosts compatibili MCP. La tool surface attuale è log_action, get_receipt, verify_receipt, get_stream_head e verify_completeness. Il server logga actions, recupera receipts, verifica receipts offline, ispeziona stream heads e dimostra che un sequence range è gap-free senza dare all'agente credenziali backend ampie. Il MCP server dovrebbe girare server-side nell'ambiente runtime dell'agente. Non contiene un modello AI, import di AI vendor o logica decisionale nascosta; è un wrapper deterministico di tools sopra l'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

OpenTelemetry bridge

OpenTelemetry bridge trasforma spans selezionati in Attesto events. È utile quando la source of truth è già una trace pipeline: spans di model gateway, policy evaluation, connector sync o incident handling. Il bridge deve filtrare in modo rigoroso; non inviare ogni span di default.

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"],
    )
)

n8n node

Attesto n8n node è per automazione workflow che richiede step evidence verificabile. Usalo per approval workflows, connector handoffs, incident triage, policy checks e automazione customer-facing dove un auditor deve poter vedere più tardi cosa è successo e quando.

npm install n8n-nodes-attesto

Evidence model

Tutte e quattro le superfici dovrebbero emettere evidence tramite la stessa semantica Proofstream degli SDKs. Un gateway request, MCP tool call, OTel span o n8n workflow step non è speciale: è un source event con source reference, timestamp, normalized commitment, receipt e inclusione opzionale successiva in windows, checkpoints, witnesses e anchors.

CampoComportamento richiesto
source_system_idIdentificare gateway, agent host, telemetry service o istanza n8n.
source_refIdempotency key stabile come request id, tool call id, trace/span id o workflow execution id.
source_timeSource timestamp originale con timezone o offset.
payload_commitmentCommittare normalized payload metadata senza salvare provider secrets.
receiptRestituire o salvare receipt id affinché l'event possa essere verificato più tardi.

Security boundaries

Operations

Tratta queste superfici come integrazioni di produzione. Servono health checks, retry policy, rate-limit handling, idempotency, validazione source-time e failure states osservabili. Una superficie può essere installata da un package registry, ma non è production-ready per un tenant finché non ha una vera Attesto API key, uno stream reale e una successful receipt/verify canary.

CheckRisultato atteso
Install smokeIl package si installa dal registry ufficiale senza source maps o source leaks.
Receipt canaryUn evento reale viene loggato e il receipt verifica.
Retry canarysource_ref ripetuto produce comportamento replay/idempotent, non storia duplicata.
Secret scanNessuna tenant key, provider key, prompt secret, trace secret o workflow credential compare in logs o bundles.

Failure modes

FailureSignificatoRisposta
Attesto unavailableLa superficie non può ottenere un receipt.Fail closed quando la policy richiede evidence; altrimenti marca la run come missing evidence.
Provider unavailableIl servizio upstream model/tool/workflow è fallito.Loggare failure metadata sicure se la policy lo permette; non inventare un success event.
Invalid source timeIl source timestamp manca o è malformed.Reject o normalize secondo tenant policy e registra receive time separatamente.
Secret detectedUn payload o attribute sembra contenere secret material.Blocca l'emission, redigi alla fonte e ruota se la leakage è confermata.

Rollout checklist