Releases: VibeTensor/attestix
v0.4.0
v0.4.0 — the embeddable, multi-tenant, portable release
First stable 0.4.0. pip install attestix now resolves to 0.4.0 (was 0.3.0).
Promotes 0.4.0rc5 unchanged after a clean 10/10 cross-family Linux source-blind validation — the convergence of a 5-RC cycle (Windows + Linux) that caught and fixed 5 P0 install crashes, 4 doc/contract breaks, and 1 idempotency-replay defect before any of it reached the canonical install name.
pip install attestix # 0.4.0
# optional extras:
pip install 'attestix[api]' # FastAPI REST surface
pip install 'attestix[langchain]' # LangChain callbackWhat's new since 0.3.0
Embeddable
- Pluggable
Storage+Signerprotocols — swap the in-memory defaults for Postgres + HSM/KMS without forking. - Canonical
attestix.*namespace (back-compat shims retained);[api]/[langchain]/[crewai]/[openai-agents]install extras; LangChain / OpenAI Agents / CrewAI integrations shipped in the wheel.
Multi-tenant
tenant_idon every resource; structured, hash-chained, idempotency-aware audit events that don't leak across tenants.- REST idempotency replays the original cached body verbatim (
Idempotency-Replayedheader), exactly-1-resource dedup, 24h TTL.
Portable (zero lock-in)
- Bundle EXPORT + IMPORT (
attestix export/attestix import) — byte-stable JCS wire-format published at https://attestix.io/spec/bundle/v1. Cloud-workspace ⇆ self-host round-trip. - Cross-engine offline JS verifier (
npm install @vibetensor/attestix; unscopedattestixmigration underway) verifies Python-issued credentials in any JS runtime.
Verifiable + compliant
verify_chainreturns a structuredVerifyChainResult(broken_event_id,failure_reason).generate_declaration_of_conformityraises on all missing prerequisites; declarations surfacecredential_id.- Browser verification portal at https://attestix.io/verify (no install, nothing uploaded).
Docs + trust
- 10 per-ICP quickstarts,
/uk+/indiapages, OWASP Agentic Top 10 (2026) + ISO 42001 + NIST AI RMF + SOC 2 + FRIA mappings (honest per-control coverage),/pricing, the bundle spec. - Supply chain: Docker base images SHA-pinned, CI deps hash-pinned.
Validated
585 tests on Ubuntu + Windows × Python 3.11–3.13. Clean 10/10 cross-family persona validation on Linux, source-blind against the PyPI wheel. Signing keys 0600.
Known, scheduled for v0.4.1
get_audit_trailsurfaces only the legacy Article-12 chain (theidentity.createevent is emitted + counted byget_provenance; the read-API contract change is deferred).create_delegationrefuses capability-escalation via an error-dict rather than a raise (secure — escalation is blocked).
Built by VibeTensor Private Limited (India-incorporated; Warangal, Telangana). Evidence tooling, not a guarantor of compliance — providers remain liable under EU AI Act Articles 16–22.
v0.4.0-rc.5
v0.4.0-rc.5 — idempotency replay returns the cached body (convergence on rc.4)
The Linux 10-persona validation confirmed all 4 rc.3 blockers stayed closed and all 5 rc.2 P0s held, surfacing one P1 DX/contract defect. rc.5 fixes it.
Install: pip install --pre attestix==0.4.0rc5
Fixed (P1)
REST idempotency replay now returns the original cached response body verbatim — Stripe-style. Before, a retried POST /v1/identities with the same Idempotency-Key returned a receipt envelope ({"idempotent_replay":true,"stored_response":{"resource_id":null,...}}), so a CI client reading resp.json()["agent_id"] on a retry got None. Now the retry is indistinguishable from the first success (agent_id survives, 201 replays as 201). Replay metadata moved to an Idempotency-Replayed: true header so the body shape never changes. The dedup guarantee (exactly 1 resource), the same-key/different-payload 409, and the 24h TTL are all preserved.
Deferred to v0.4.1 (documented, non-security, non-corruption)
get_audit_trailsurfaces only the legacy Article-12 provenance chain, so a brand-new REST-created identity with no logged actions reads as 0 rows (theidentity.createevent IS emitted to the structured collection;get_provenancecounts it). Surfacingaudit.json::eventsthroughget_audit_trailchanges that read API's contract — a v0.4.1 change, not a late-RC wiring fix.create_delegationrefuses capability-escalation via an error-dict rather than a raise (secure — escalation IS blocked; both REST + MCP layers depend on the dict shape, so converting is a v0.4.1 consistency pass).
Tests
585 passed, 3 skipped. New tests/integration/test_idempotency_rest_replay.py asserts verbatim-body replay, the header, N-replays-1-resource, and 409-on-different-payload.
Final release candidate. A clean Linux 10-persona re-validation is the gate before promoting to stable 0.4.0.
v0.4.0-rc.4
v0.4.0-rc.4 — fixes 4 blockers from the Linux 10-persona validation
rc.3 fixed the rc.2 install crashes; running the quickstarts further on Linux (WSL Ubuntu, source-blind) exposed 4 doc/contract breaks that the crashes had masked. rc.4 closes them.
Install: pip install --pre attestix==0.4.0rc4
Fixed
generate_declaration_of_conformityraises on ALL prerequisites — rc.3 raised only on missing Annex V content fields; it still returned{"error":...}silently when there was no compliance profile or no completed conformity assessment. Now raisesMissingCompliancePrerequisiteError(subclass ofInvalidComplianceProfileError, so REST→422 + MCP structured-error handlers map it automatically) with a message naming the exact missing prerequisite.- grc-consultant quickstart KeyError — the declaration now surfaces
credential_id(theEUAIActComplianceCredentialVC id it was discarding; added post-signing so the signed Annex V declaration is byte-unchanged). Also corrected the doc'screate_verifiable_presentationkwargs to the realagent_id/credential_ids/audience_did. - REST path 404s — quickstart docs said
POST /identities; the real routes mount under/v1. Correctedenterprise-architect+mlops-engineerquickstarts to/v1/identities,/v1/provenance/audit-trail/{agent_id}, etc. - Stale pins — bumped
attestix==0.4.0rc2→rc4across the quickstart docs.
Tests
580 passed, 3 skipped (Ubuntu + Windows × py3.11-3.13). next build green, 81 pages.
Still a release candidate. A clean Linux 10-persona re-validation is the gate before stable 0.4.0.
v0.4.0-rc.3
v0.4.0-rc.3 — ship-with-fixes prerelease
Honest follow-up to rc.2. The isolated 10-persona RC validation (each persona's quickstart run against the published wheel, source-blind) caught 5 P0 release blockers — three crashed the documented quickstart on a fresh pip install --pre, two silently produced broken output on a compliance-critical path. rc.3 fixes all 5 + the top 4 P1s.
Install: pip install --pre attestix==0.4.0rc3
P0 fixes
attestix.integrations.*now in the wheel — rc.2 shipped no integrations directory, sofrom attestix.integrations.langchain import AttestixCallbackraisedModuleNotFoundError. rc.3 ships LangChain / OpenAI Agents / CrewAI adapters (lazy framework imports). Guarded bytests/release/test_wheel_includes_integrations.pyso it can never regress.[api]extra (fastapi + uvicorn) —uvicorn attestix.api.main:appcrashed on a missing fastapi. Nowpip install --pre 'attestix[api]', with a targeted ImportError hint when the extra is absent.is_configureddocs fixed — web3 quickstart calledchain.is_configured()(a property) →TypeError. Docs corrected to property access.generate_declaration_of_conformityraises on missing fields — was returning{"error": ...}silently withdeclaration_id: None. Now raisesInvalidComplianceProfileError(missing_fields=[...]).- Audit count fixed —
record_*methods now emit audit events; the audit chain is no longer empty after the documented GRC workflow.get_provenanceaggregates legacy + new chains.
P1 fixes
[langchain]/[crewai]/[openai-agents] extras documented · agent['did'] populated top-level · .signing_key.json chmod 600 (best-effort) · author email → info@vibetensor.com.
Tests
531 → 579+. New tests/release/ + tests/perf/ regression guards.
Still a release candidate. A Linux re-run of the 10-persona validation against rc.3 is the gate before promoting to stable 0.4.0.
v0.4.0-rc.2
Packaging-correctness + honesty pass on rc.1.
- Proper
attestix.*namespace — the wheel no longer drops flat top-level packages (services/,auth/, ...) into site-packages. Canonical imports:from attestix.services... import .... Pre-rc.2 paths kept as DeprecationWarning shims, scheduled for removal in v0.5.0. - Honesty pass — "production-ready" replaced with honest "release candidate / single-maintainer" framing across README + website. Test numbers (481 + 91 conformance) are real and kept.
- 481 passing tests, zero regressions vs rc.1. Wheel-install smoke verified.
Install (pre-release): pip install --pre attestix==0.4.0rc2
v0.4.0-rc.1
First v0.4.0 release candidate — the extensibility layer that lets the engine be wrapped (e.g. by a hosted control plane) without forking, while self-host behavior is unchanged.
- Pluggable storage (
Repository) + signer (Signer); defaults reproduce v0.3.0 byte-for-byte - Optional tenant context (
tenant_id, defaults to "default"; legacy records read as "default") - Structured hash-chained audit events across all 9 services (side-channel; outputs/format unchanged)
- Idempotency keys via an opt-in middleware (strict no-op without an
Idempotency-Keyheader)
Additive and backward-compatible; no breaking public API. Test suite 358 → 481 passing; RFC conformance benchmarks unaffected. Closes #66–#70.
Install (pre-release): pip install --pre attestix==0.4.0rc1
v0.3.0 - real framework integrations, security hardening, CI/CD
Minor version bump (0.2.5 -> 0.3.0) bundling seven previously merged but unreleased pull requests.
Security
- CRITICAL: delegation chain auth bypass fix (PR #45). Parent tokens and capability attenuation are now strictly verified on every delegation verify. Any long-lived delegation tokens issued prior to this release should be reviewed and re-issued.
- SSRF hardening on agent discovery, DID resolution, credential fetch (PR #47).
- Timing-safe comparisons for signature and token equality checks (PR #47).
- Seven REST API router exception paths no longer leak internals to clients (PR #47).
Added
- Real LangChain integration using
BaseCallbackHandler(PR #42). - Real OpenAI Agents SDK integration via
MCPServerStdio(PR #48). - Real CrewAI integration via
MCPServerAdapter(PR #51).
Fixed
- Article 43 Annex III conformity assessment differentiates categories that require a notified body versus permitted self-assessment (PR #46).
- EAS schema UID derivation now matches the exact on-chain EAS encoding (PR #50).
- Attested event decoding prefers web3.py ABI decoding with a hardened topic-signature fallback (PR #50).
Infrastructure
- GitHub Actions CI/CD: pytest matrix (py 3.10, 3.11, 3.12, 3.13), ruff, mypy, bandit, pip-audit, plus a PyPI publish workflow on release creation (PR #49).
- Default pytest
addoptsinclude-p no:logfireto work around an opentelemetry-sdk / logfire ABI mismatch pulled in transitively by CrewAI.
Release verification
python -m pytest tests/- 358 passed, 1 skippedtwine check dist/*- wheel and sdist PASSED- PyPI: https://pypi.org/project/attestix/0.3.0/
- MCP Registry:
io.github.VibeTensor/attestix
Install: pip install --upgrade attestix
v0.2.5 - CLI, REST API, Report Export, Dashboard
See v0.2.4...v0.2.5 for full changelog. Includes CLI tool, REST API, HTML/PDF report export, dashboard polish, bug fixes, and documentation updates.
v0.2.4 - Demo Suite, Security Hardening, and attestix.io
What's New
Demo Suite
- 3 end-to-end demo scenarios: FinTech Advisory (high-risk), Supply Chain AI (limited-risk), HR Screening (prohibited + redesign)
- Quick-start script covering all 9 modules in 0.1 seconds
- Presentation materials: 30-min verbal script, competitor comparison, FAQ, one-pager
- Each scenario includes runnable Python script, MCP prompt guide, and step-by-step walkthrough
Security
- SECURITY.md vulnerability disclosure policy with response timelines
- CODEOWNERS for automatic PR review assignment
- FUNDING.yml with GitHub Sponsors and Polar.sh
- CodeQL security alert fixes (clear-text credential logging, sanitization bypass)
Website and Documentation
- Domain migration from attestix.vibetensor.com to attestix.io
- Documentation migrated from MkDocs to Fumadocs (attestix.io/docs)
- 4 interactive website demos: compliance checker, fine calculator, identity explorer, reputation dashboard
- Next.js upgraded from 15.3.5 to 15.5.12 (8 security patches)
- Dark mode improvements across all documentation pages
CI/CD
- Trusted Publishing via OIDC for PyPI (no more API tokens)
- Performance benchmarks added to conformance test suite
Testing
- 284 tests passing (193 functional + 91 conformance benchmarks)
- 6 conformance test suites: RFC 8032, W3C VC, W3C DID, UCAN, MCP, Performance
Install
pip install attestix==0.2.4Run the Quick Demo
git clone https://github.com/VibeTensor/attestix.git
cd attestix && pip install -e .
python demo/quick-start/five_min_demo.pyFull Changelog
v0.2.3 - Namespace Package + Import Fixes
What's New
Added
- Namespace package support:
attestixnamespace package for cleaner importsfrom attestix.services.identity_service import IdentityServicefrom attestix.auth.crypto import generate_ed25519_keypair- Flat imports still work for backward compatibility
Fixed
- Replaced wildcard imports with explicit named imports and
__all__declarations - Consistent relative imports across all namespace
__init__.pyfiles - Sorted
__all__lists per RUF022 (ASCII case-sensitive ordering) - Removed redundant
# noqacomments from namespace modules
Changed
- Package structure now includes both flat modules and
attestix.*namespace - Synced all version references (pyproject.toml, server.json, website) to 0.2.3
- Added missing 0.2.2 changelog entry
Full Changelog: v0.2.2...v0.2.3
PyPI: https://pypi.org/project/attestix/0.2.3/
pip install attestix==0.2.3