Current collected state Current
Observed since 20 Oct, 21:38 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agent-cid
Content-addressed artifact manifest for AI agents (Python port of @p-vbordei/agent-cid)
Python port of
@p-vbordei/agent-cid. Content-addressed artifact manifest for AI agents — CIDv1 + Ed25519 + DID + RFC 8785 JCS. Byte-deterministic-compatible with the TypeScript reference: passes the same C1–C5 conformance vectors.
pip install agent-cid
import asyncio
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
from agent_cid import build, verify, pubkey_to_did_key, BuildOpts, SignerInput
async def main():
priv = Ed25519PrivateKey.generate()
pub = priv.public_key().public_bytes(
serialization.Encoding.Raw, serialization.PublicFormat.Raw,
)
did = pubkey_to_did_key(pub)
manifest = await build(
b"hello world",
BuildOpts(
producer_did=did,
schema_uri="https://example.org/schema",
media_type="text/plain",
signers=[SignerInput(did=did, sign_fn=lambda b: priv.sign(b))],
),
)
r = await verify(manifest, b"hello world")
print(r.ok) # True
asyncio.run(main())
pip install -e ".[dev]"
pytest -v
Vectors in vectors/ are copied verbatim from the TS conformance suite.
Apache-2.0
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
base58Environment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | base58>=2.1 | runtime |
cryptographyEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | cryptography>=42.0 | runtime |
httpxEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.27 | runtime |
jcsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | jcs>=0.2.1 | runtime |
mypyEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | mypy>=1.10; extra == "dev" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.23; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.0; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | ruff>=0.5; extra == "dev" | runtime |
bdist_wheel · 13.45 KB · Python py3
sdist · 55.38 KB · Python source
Observed since 20 Oct, 21:38 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:a64d6e4e4b054f6a6335993555816aef352bb817fc2ed7cbd50239c410ab965a