Attestix
Signed identity and evidence for AI agents
Record cryptographically verifiable evidence to support AI governance workflows.
Open-source identity, credentials, compliance automation, and trust scoring.
MCP and REST interfaces,
Automated functional tests and Attestix interoperability benchmarks.
Real integrations with LangChain, OpenAI Agents SDK, and CrewAI.
Status: pre-1.0 toolkit; this README describes current main source. Single-maintainer project, community contributions welcome. No independent third-party security audit has been performed yet; deploy with the same diligence you would apply to any pre-1.0 open-source crypto stack.
Source and verification status
The readiness changes are merged to main. This is source status, not a new registry-release announcement. Install from a reviewed source revision when you need changes that are not yet in your registry package.
- Credential verification binds the stated issuer to the supported proof controller. Ambiguous NFC-normalized keys fail before signing or verification.
- Presentation verification requires the caller's expected challenge and domain. A signature alone does not provide replay protection.
- REST use requires an API key by default. The default REST server is single-tenant and rejects non-default tenant headers; a shared API key does not provide cross-tenant authorization.
- JSON updates use the shared storage lock. Protect the local signing key and data directory; test backup restoration, isolation and your selected signer/backend before production.
workflow_completedescribes recorded documentation completion.legal_conformityis not assessed; the deprecatedcompliantfield is a workflow alias. Generated declarations are drafts for provider review.- Local purge cannot erase external replicas, remote logs, previously shared credentials or third-party backups. Plan historical data and credential migration separately.
Install
# Registry package (check release notes against the main branch):
pip install attestix
Stable 0.4.0 ships only the canonical
attestix.*namespace. The older flat layout (from services... import,from auth... import, ...) keeps working via thin deprecation shims that emit aDeprecationWarningon first import and are scheduled for removal in v0.5.0. Update imports tofrom attestix.services... importat your earliest convenience.
CLI
attestix status # System overview
attestix init --name MyBot # Create agent identity
attestix compliance <agent-id> # Check recorded documentation gaps
attestix verify <agent-id> # Verify identity cryptographically
attestix audit <agent-id> # View hash-chained audit trail
attestix credential --list # List W3C Verifiable Credentials
REST API
pip install 'attestix[api]'
# Configure ATTESTIX_API_KEY in your environment before starting the API.
uvicorn attestix.api.main:app --reload # Swagger docs at http://localhost:8000/docs
Web Dashboard
pip install streamlit
streamlit run demo/webapp/app.py # Opens at http://localhost:8501
Quick Demo
python examples/quickstart.py # Local synthetic workflow
Verify in any language
Attestix credentials use a published canonical-JSON and Ed25519 verification profile. Language-specific verifier repositories share conformance fixtures, but their trust-input and delegation-chain checks differ. Read each verifier README and pin a reviewed version. Cryptographic validity is separate from issuer trust, authorization, revocation and replay policy.
| Language | Install | Status |
|---|---|---|
| Python | pip install attestix |
Python source and registry package |
| JS / TS | npm install @vibetensor/attestix |
Verifier source (attestix-js) |
| Go | go get github.com/VibeTensor/attestix-go |
Verifier source (attestix-go) |
| Rust | cargo add attestix |
Verifier source (attestix-rs) |
| Java | See repository build instructions | Verifier source (attestix-java) |
| R | See repository installation instructions | Verifier source (attestix-r) |
Every verifier targets the Attestix canonical-JSON profile, which differs from strict RFC 8785,
and Ed25519 signatures (RFC 8032) against
the shared spec/verify/v1
vectors. Verify in the browser at https://attestix.io/verify, or read the
bundle wire-format at https://attestix.io/spec/bundle/v1.
Why Attestix
The EU AI Act has a staged application timeline. The European Commission currently lists 2 December 2027 for specified high-risk use cases and 2 August 2028 for high-risk systems embedded in regulated products. Applicability depends on the system and the operator's role. See the European Commission's current AI Act guidance.
Attestix helps organize evidence; a signature or generated declaration does not establish legal conformity or replace the applicable assessment process.
Attestix provides agent identity, signed credentials, delegation, and offline verification for developers who need portable evidence in their applications. Broader governance platforms also offer APIs, SDKs, agent governance, and compliance workflows; evaluate their current capabilities against your requirements.
Agent identity is fragmenting across walled gardens (Microsoft Entra, AWS AgentCore, ERC-8004). Attestix combines agent identity, AI governance evidence and verifiable credentials in one toolkit.
Attestix fills this gap.
Modules
| Module | What it does |
|---|---|
| Identity | Unified Agent Identity Tokens (UAITs) bridging MCP OAuth, A2A, DIDs, and API keys. local data erasure tooling |
| Agent Cards | Parse, generate, and discover A2A-compatible agent cards |
| DID | Create and resolve W3C Decentralized Identifiers (did:key, did:web) |
| Delegation | UCAN-style capability delegation with EdDSA-signed JWT tokens |
| Reputation | Recency-weighted trust scoring (0.0 - 1.0) with category breakdown |
| Compliance | EU AI Act risk profiles, conformity assessments (Article 43), Annex V declarations |
| Credentials | W3C Verifiable Credentials with Ed25519Signature2020 proofs, presentations |
| Provenance | Training data provenance (Article 10), model lineage (Article 11), hash-chained audit trail (Article 12) |
| Blockchain | Anchor artifact hashes to Base L2 via Ethereum Attestation Service, Merkle batching |
Quick Start
As an MCP Server (Claude Code)
Add to your Claude Code config (~/.claude.json):
{
"mcpServers": {
"attestix": {
"type": "stdio",
"command": "python",
"args": ["-m", "attestix.main"]
}
}
}
Then ask Claude:
"Create an identity for my data analysis agent with capabilities: data_analysis, reporting"
As a Python Library
from attestix.services.identity_service import IdentityService
from attestix.services.compliance_service import ComplianceService
from attestix.services.credential_service import CredentialService
identity_svc = IdentityService()
compliance_svc = ComplianceService()
credential_svc = CredentialService()
# 1. Create an agent identity
agent = identity_svc.create_identity(
display_name="MyAgent",
source_protocol="manual",
capabilities=["data_analysis", "reporting"],
description="Analyzes quarterly financial data",
issuer_name="VibeTensor",
expiry_days=365,
)
agent_id = agent["agent_id"] # attestix:f9bdb7a94ccb40f1
agent_did = agent["issuer"]["did"] # did:key:z6Mk...
# 2. Create a compliance profile
profile = compliance_svc.create_compliance_profile(
agent_id=agent_id,
risk_category="limited",
provider_name="VibeTensor",
intended_purpose="Analyzes quarterly financial data",
)
# 3. Issue a verifiable credential
credential = credential_svc.issue_credential(
subject_id=agent_id,
credential_type="AgentIdentityCredential",
issuer_name="VibeTensor",
claims={"capabilities": ["data_analysis", "reporting"]},
expiry_days=365,
)
print(credential["proof"]["type"]) # Ed25519Signature2020
For a complete end-to-end walkthrough covering all 9 modules, run the quickstart:
python examples/quickstart.py
From Source
git clone https://github.com/VibeTensor/attestix.git
cd attestix
pip install -r requirements.txt
python -m attestix.main
AI governance evidence workflow
Record a high-risk AI agent documentation workflow for provider review:
1. create_agent_identity --> UAIT with DID (Ed25519 signed)
2. record_training_data --> Article 10 data governance
3. record_model_lineage --> Article 11 technical documentation
4. create_compliance_profile --> Risk categorization + obligations
5. record_conformity_assessment --> Operator-recorded assessment details
6. generate_declaration_of_conformity --> Annex V declaration + W3C VC
7. create_verifiable_presentation --> Signed VP for a verifier with a fresh challenge
The current Attestix workflow blocks self-assessment for a profile marked high-risk. This application policy is not a universal determination of the legally applicable assessment route:
record_conformity_assessment(assessment_type="self", ...)
--> ERROR: "High-risk AI systems require third_party conformity assessment"
Full walkthrough: EU AI Act Compliance Guide
How It Works
Credentials and presentations carry signatures; audit chains carry integrity hashes. Not every record or external artifact is independently signed:
| Artifact | Standard | Signed |
|---|---|---|
| Agent Identity (UAIT) | Custom + DID | Ed25519 |
| Verifiable Credential | W3C VC Data Model 1.1 | Ed25519Signature2020 |
| Verifiable Presentation | W3C VP | Ed25519Signature2020 |
| Delegation Token | UCAN-style JWT | EdDSA |
| Draft evidence credential | Attestix documentation profile | Ed25519 |
| Audit Trail | Hash-chained log | SHA-256 chain |
| Blockchain Anchor | EAS on Base L2 | On-chain |
Local operation. Core identity and credential operations can use local JSON storage. Remote DID resolution, hosted signers and blockchain integrations require their configured services.
Architecture
attestix/ # Canonical Python package (v0.4.0)
main.py # MCP server entry point (MCP tools)
cli.py # `attestix` console script
config.py # Environment-based configuration
errors.py # Error handling with JSON logging
api/ # FastAPI REST surface
main.py # uvicorn entry: `attestix.api.main:app`
routers/ # REST routers
auth/
crypto.py # Ed25519 key management
ssrf.py # SSRF protection for outbound HTTP
services/
identity_service.py # UAIT lifecycle, local data erasure
agent_card_service.py # A2A agent card operations
did_service.py # DID creation and resolution
delegation_service.py # UCAN delegation tokens
reputation_service.py # Trust scoring
compliance_service.py # Operator-recorded profiles and assessment evidence
credential_service.py # W3C VCs and VPs
provenance_service.py # Training data, lineage, audit trail
blockchain_service.py # Base L2 anchoring via EAS
storage/ # Repository seam (file / memory / pg)
signing/ # Signer seam (in-process / kms)
audit/ # Tamper-evident event chain
tenancy/ # Tenant context
idempotency/ # Stripe-style idempotency keys + middleware
blockchain/
merkle.py # Merkle tree for batch anchoring
tools/ # MCP tool definitions (one file per module)
The pre-v0.4.0 flat layout (services/, auth/, storage/, ...) is
preserved as deprecation shims at the same paths. They re-export from the
canonical attestix.* namespace and emit a DeprecationWarning on first
import. The shims are scheduled for removal in v0.5.0.
MCP tools
Identity
| Tool | Description |
|---|---|
create_agent_identity |
Create a UAIT from any identity source |
resolve_identity |
Auto-detect token type and register |
verify_identity |
Check existence, revocation, expiry, signature |
translate_identity |
Convert to A2A, DID Document, OAuth, or summary |
list_identities |
List UAITs with protocol/revocation filters |
get_identity |
Get full UAIT details |
revoke_identity |
Mark a UAIT as revoked |
purge_agent_data |
Remove locally managed records and parseable local backups; external copies need separate handling |
Agent Cards
| Tool | Description |
|---|---|
parse_agent_card |
Parse an A2A Agent Card JSON |
generate_agent_card |
Generate agent.json for hosting |
discover_agent |
Fetch /.well-known/agent.json from a URL |
DID
| Tool | Description |
|---|---|
create_did_key |
Generate ephemeral did:key with Ed25519 keypair |
create_did_web |
Generate did:web DID Document for self-hosting |
resolve_did |
Resolve any DID to its DID Document |
Delegation
| Tool | Description |
|---|---|
create_delegation |
UCAN-style capability delegation token |
verify_delegation |
Verify JWT signature, expiry, structure |
list_delegations |
List delegations by agent and role |
revoke_delegation |
Revoke a delegation token |
Reputation
| Tool | Description |
|---|---|
record_interaction |
Record outcome and update trust score |
get_reputation |
Get score with category breakdown |
query_reputation |
Search agents by reputation criteria |
Compliance
| Tool | Description |
|---|---|
create_compliance_profile |
Create EU AI Act profile with risk categorization |
get_compliance_profile |
Retrieve full compliance profile |
update_compliance_profile |
Update an existing compliance profile |
get_compliance_status |
Gap analysis: completed vs missing requirements |
record_conformity_assessment |
Record self or third-party assessment (Article 43) |
generate_declaration_of_conformity |
Generate Annex V declaration + auto-issue VC |
list_compliance_profiles |
Filter by risk category and compliance status |
Credentials
| Tool | Description |
|---|---|
issue_credential |
Issue W3C VC with Ed25519Signature2020 proof |
verify_credential |
Check signature, expiry, revocation |
verify_credential_external |
Verify any VC JSON from an external source |
revoke_credential |
Revoke a Verifiable Credential |
get_credential |
Get full VC details |
list_credentials |
Filter by agent, type, validity |
create_verifiable_presentation |
Bundle VCs into a signed VP for a verifier |
verify_presentation |
Verify a VP with embedded credentials |
Provenance
| Tool | Description |
|---|---|
record_training_data |
Record training data source (Article 10) |
record_model_lineage |
Record model chain and metrics (Article 11) |
log_action |
Log agent action with hash-chained audit trail (Article 12) |
get_provenance |
Get full provenance record |
get_audit_trail |
Query audit log with filters |
Blockchain
| Tool | Description |
|---|---|
anchor_identity |
Anchor identity hash to Base L2 via EAS |
anchor_credential |
Anchor credential hash to Base L2 via EAS |
anchor_audit_batch |
Merkle batch anchor of audit log entries |
verify_anchor |
Verify an on-chain anchor against local data |
get_anchor_status |
Get anchoring status for an artifact |
estimate_anchor_cost |
Estimate gas cost for anchoring |
Standards Conformance
Public tests and conformance fixtures cover selected signature, canonicalization, credential, delegation and interface behavior. They do not establish universal W3C interoperability, legal conformity, certification or operating acceptance. Consult the test cases and the selected verifier's documented boundaries. Run them yourself:
docker build -f Dockerfile.test -t attestix-bench . && docker run --rm attestix-bench
| Standard | What is tested | Tests |
|---|---|---|
| RFC 8032 (Ed25519) | 4 IETF canonical vectors: key derivation, signature generation (exact match), verification, tamper rejection | 18 |
| W3C VC Data Model 1.1 | Credential structure, Ed25519Signature2020 proof, mutable field exclusion, VP structure, replay protection | 25 |
| W3C DID Core 1.0 | did:key and did:web document structure, roundtrip resolution, Ed25519VerificationKey2020 |
18 |
| UCAN v0.9.0 | JWT header (alg/typ/ucv), all payload fields, capability attenuation, expiry enforcement, revocation | 18 |
| MCP Protocol | MCP tools registered, 9 modules, async convention, snake_case naming | 5 |
| Performance | Ed25519 key gen, JSON canonicalization, sign/verify, identity creation, credential ops | 7 |
Performance
Benchmark results depend on interpreter, hardware, storage and workload. Run the repository benchmarks on your target environment; no static latency figure here is an operating guarantee.
Security
- Ed25519 signatures on all UAITs, VCs, assessments, declarations, and audit entries
- Hash-chained audit trail with SHA-256 for tamper-evident logging
- SSRF protection blocks private IPs, metadata endpoints, and DNS rebinding
- Encrypted key storage with AES-256-GCM when
ATTESTIX_KEY_PASSWORDis set - Private keys never exposed in tool responses
- No external API calls required for core operations
Research Paper
Attestix is described in a research paper covering system architecture, cryptographic pipeline, EU AI Act compliance automation, and evaluation with 531 automated tests (440 functional + 91 RFC / W3C conformance benchmarks).
Attestix: A Unified Attestation Infrastructure for Autonomous AI Agents Pavan Kumar Dubasi, VibeTensor Private Limited, 2026.
Citing Attestix
If you use Attestix in your research, please cite:
@article{dubasi2026attestix,
title = {Attestix: A Unified Attestation Infrastructure for Autonomous AI Agents},
author = {Dubasi, Pavan Kumar},
year = {2026},
url = {https://github.com/VibeTensor/attestix},
note = {Open-source. Apache License 2.0}
}
Documentation
Full documentation at attestix.io/docs
| Guide | Description |
|---|---|
| Getting Started | Installation and first identity in 5 minutes |
| EU AI Act Compliance | Step-by-step compliance workflow |
| Risk Classification | How to determine your AI system's risk category |
| Architecture | System design and data flows |
| API Reference | MCP tools with parameter tables |
| Integration Guide | LangChain, OpenAI Agents SDK, CrewAI, MCP client |
| Configuration | Environment variables, storage, Docker |
| Research Paper | Paper, citation formats, evaluation highlights |
| Reputation Scoring | Recency-weighted trust scoring and categories |
| Examples | End-to-end code examples for common workflows |
Disclaimer
Attestix generates machine-readable, cryptographically signed compliance documentation. It is a documentation and evidence tooling system. It does not replace legal counsel, notified body assessments, or official regulatory submissions. Always consult qualified legal professionals for compliance decisions.
Sponsors
Attestix is free and open-source. If you or your organization benefit from it, please consider sponsoring to support continued development, security audits, and infrastructure.
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
Apache License 2.0. See LICENSE.
Built by VibeTensor
Metadata
Release files for attestix 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| attestix-0.4.2.tar.gz | 191.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| attestix-0.4.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 425.0 kB
Release files / attestix-0.4.2.tar.gz
| Download URL | attestix-0.4.2.tar.gz |
|---|---|
| Size | 191.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7b63787bacd1fbbf8889f838d02c26c4ca359e6d3432150dde0c5861ba552634
|
|
BLAKE2b-256 checksum How to use checksums |
317aaab74b78c3602b0b90c0938c5ee19ad8eceb7e889197956a632fc9e0aee8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Release files / attestix-0.4.2-py3-none-any.whl
| Download URL | attestix-0.4.2-py3-none-any.whl |
|---|---|
| Size | 233.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
47a44c85bd56b3d4bc695e8e13b687a7fb1dea288bfe9e7ad8eabc06e5dd2654
|
|
BLAKE2b-256 checksum How to use checksums |
0acd0c164dbbc062ef4a622c3d96554f6a67d8b8f4b05487d96d7486c2dc6d12
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|