The open, self-hostable reference mint (Python) for the VAID standard: mint a root VAID and mint attenuated child VAIDs (scope/capability-contained delegation).
Project description
vaid-mint (Python)
The Python mirror of the Rust vaid-mint crate: the open, self-hostable
reference mint for the VAID (Verifiable Agent Identity) standard.
mint_root— mint a root/operator VAID (BYO-key with proof-of-possession, or generate-and-discard), gated by an explicitAuthorizationGate.mint_child— attenuated delegation: an authenticated parent mints a child whose authority is always a subset of its own (child ⊆ parent).
Trust model — read this before using the mint
This is a reference implementation with two deliberate, unguarded defaults:
mint_roothas no authorization gate by default (PermitAll). Anyone who can call this code can mint a root VAID. Supply a realAuthorizationGatefor anything beyond local experimentation.mint_childis intentionally ungated — attenuation is the authorization. Any holder of a valid parent VAID can mint children from it; a child can only narrow scope/capabilities relative to its parent, never widen (child ⊆ parent). Possession of a parent VAID is itself the authorization boundary for delegation here. Treat parent-VAID custody with the same care as a credential.
Neither of these is a security recommendation for production use — they are the honest defaults of a self-hostable reference mint. See the sections below for where each is enforced in code.
from vaid_mint import ReferenceIssuer, InMemoryAudit, MintService, VaidSeed
issuer = ReferenceIssuer.ephemeral(24)
mint = MintService(issuer, InMemoryAudit())
root = mint.mint_root(VaidSeed(
agent_class="orchestrator", version="1.0.0", tenant_id="acme",
scope_boundary=["data.acme"], capability_set=["read", "write"],
))
assert issuer.verify_vaid(root)
The split
This is the open engine of a HashiCorp-Vault-style split. Durable revocation,
KMS-backed kernel keys, and the audit-of-record are the closed managed authority
and are not here. mint_root is gated by an AuthorizationGate that defaults
to PermitAll — a reference-implementation choice, not a security
recommendation; production deployments should pass a real gate to MintService.
mint_child is intentionally ungated because attenuation is the
authorization: any holder of a valid parent VAID can mint children from it, and
a child can only narrow scope/capabilities relative to that parent, never widen
(child ⊆ parent). So possession of a parent VAID is itself the authorization
boundary for delegation — treat parent-VAID custody with the same care as a
credential.
Cross-language byte-identity
Proof-of-possession reuses the vaid-pop primitive verbatim. The signed VAID
document is proven byte-identical to the Rust mint by the vendored frozen
vector vaid_mint/vectors/mint_v1.json (the same mint_v1.json the Rust
mint_conformance test asserts). Run the packaged firewall:
vaid-mint-conformance # exit 0 = PASS (installed mint == frozen vector)
Per Decision B this is self-consistent within this repo (Rust == Python); it is not byte-conformant against the managed authority's (still-moving) VAID format.
Install (local dev)
vaid-mint depends on vaid-pop. For a local checkout, install both editable:
pip install -e python/vaid-pop
pip install -e python/vaid-mint --no-deps
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 vaid_mint-0.1.1.tar.gz.
File metadata
- Download URL: vaid_mint-0.1.1.tar.gz
- Upload date:
- Size: 15.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb3b996ba5ebddd4641e5211d76e041d95f6e322ed35f1f6316ce60bbf82c438
|
|
| MD5 |
54bf0fe9441f497b8d112d4774e341aa
|
|
| BLAKE2b-256 |
6f9e5f0ebc32c918704e83f2363bb065b69935709836daf4cd5adb94c4572853
|
File details
Details for the file vaid_mint-0.1.1-py3-none-any.whl.
File metadata
- Download URL: vaid_mint-0.1.1-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65d83a28a1c921be47058c5dbf414aa0c365fa7669fc7dc00cc71a300bd98644
|
|
| MD5 |
e408d773973d7a3ac1eb18be67ef432c
|
|
| BLAKE2b-256 |
f8399a51e6763aca74bec5e6b37e9206cf0d552c4d8f3c04be1dbeacc92bb6ea
|