The manifest command is installed with the cli extra.
pip install "agent-manifest[cli]"Every command is invoked directly: manifest verify signed.json. Releases up to
0.5.0 nested them under a second manifest group; that spelling still works and
prints a deprecation warning.
Create a draft manifest from a JSON config file.
Usage: manifest create [OPTIONS] CONFIG
Create a draft manifest from a JSON config file.
CONFIG must be a JSON file with at minimum: agent_id, issuer, issued_at, expires_at,
and an artifacts block.
Example:
manifest create config.json -o draft.json
Options:
-o, --output TEXT Write output to file (default: stdout)
--help Show this message and exit.
Sign a draft manifest with Ed25519.
Usage: manifest sign [OPTIONS] MANIFEST_FILE
Sign a draft manifest with Ed25519.
KEY must be a file containing the 64-hex-character (32-byte) Ed25519 private key seed.
Example:
manifest sign draft.json --key private.hex -o signed.json
Options:
-k, --key TEXT Path to raw 32-byte Ed25519 private key (hex file) [required]
-o, --output TEXT Write output to file (default: stdout)
--help Show this message and exit.
Generate a new Ed25519 key pair for manifest signing.
Usage: manifest keygen [OPTIONS]
Generate a new Ed25519 key pair for manifest signing.
Writes:
private.hex - 64-hex private key seed (keep secret, mode 0600)
public.hex - 64-hex public key bytes
Example:
manifest keygen -d ./keys/
Options:
-d, --output-dir TEXT Directory to write key files
--help Show this message and exit.
Extend the manifest hash into hardware and append the attestation block.
Usage: manifest attest [OPTIONS] MANIFEST_FILE
Extend the manifest hash into hardware and append the attestation block.
For TPM: requires tpm2-tools (apt-get install tpm2-tools). For swtpm in CI: set
TPM2TOOLS_TCTI=swtpm: before running.
Example:
manifest attest signed.json --provider tpm --level 1 -o attested.json
Options:
-p, --provider [auto|azure-cvm|tpm|sev-snp|tdx|opaque|software]
Attestation provider (default: auto)
--level INTEGER Minimum conformance level (0-3)
-o, --output TEXT Write output to file (default: stdout)
--help Show this message and exit.
Verify a manifest against the local verification engine.
Usage: manifest verify [OPTIONS] MANIFEST_FILE
Verify a manifest against the local verification engine.
Prints the VerificationResult as JSON. Exits with code 0 on VALID, 1 on any other
result.
Use --crl-path to load a revocation list and check for revoked manifests. Pass --crl-
trusted-key with it to authenticate each record present in the CRL against the
revoking authority's public key (spec Section 3.7 / REVOC-003): a record with a
missing, malformed, or invalid signature causes verification to fail closed with an
error, rather than being silently treated as "not revoked".
--crl-trusted-key does NOT prove the CRL file is complete. Per-record signatures
authenticate the records that are present but cannot detect that a line — or the
entire file — was deleted. A party who can write or intercept the CRL file can still
suppress a real revocation by removing its record entirely; only a signed, versioned
CRL snapshot (not yet implemented) can close that gap. Without --crl-trusted-key at
all, every line in the CRL file is additionally trusted unauthenticated: a party who
can write or intercept that file can also fabricate a revocation for a legitimate
manifest.
HITL approvals attach outside the manifest signature, so supply the
approver keys you trust with --approver-key. Without them an approval is
UNVERIFIABLE and the manifest can never verify.
Example:
manifest verify attested.json --crl-path revocations.jsonl
manifest verify signed.json --public-key pub.hex --enforce-hitl
--approver-key mailto:alice@example.com=alice.hex
Options:
--enforce-hitl Fail unless a required HITL approval is present and
unexpired
--enforce-attestation Fail unless the attestation report matches the
manifest hash
--crl-path TEXT Path to a FileCRL JSON-Lines file for revocation
checks
--crl-trusted-key TEXT Path to the CRL-signing authority's raw Ed25519 public
key hex file. Required to cryptographically verify
--crl-path records (REVOC-003); without it every
record in the file is trusted unauthenticated. See the
command description above for the completeness caveat.
--public-key TEXT Path to a trusted raw Ed25519 public key hex file
--approver-key APPROVER_ID=PATH
Trusted HITL approver key as approver_id=path to a raw
Ed25519 public key hex file (repeatable)
--require-transparency Fail unless transparency evidence was independently
verified
--verified-transparency-entry-id TEXT
Legacy entry UUID independently verified for this
manifest (repeatable)
--verified-transparency-receipt-hash TEXT
SHA-256 hex of a raw COSE receipt independently
verified for this manifest (repeatable)
--transparency-evidence-manifest-id TEXT
Manifest ID to which the independent transparency
appraisal was bound
--signature-only Authenticate only the manifest signature; explicitly
allow bound runtime artifacts to remain unchecked
-o, --output TEXT Write output to file (default: stdout)
--help Show this message and exit.
Generate a revocation record for a manifest ID.
Usage: manifest revoke [OPTIONS] MANIFEST_ID
Generate a revocation record for a manifest ID.
The record JSON can be submitted to your revocation registry or passed to a
RevocationStore instance in the verification endpoint.
Example:
manifest revoke 018f4a3b-... --reason "key compromise" --revoked-by security@example.com
Options:
-r, --reason TEXT Reason for revocation [required]
--revoked-by TEXT Identity of revoking authority (DID or email) [required]
-o, --output TEXT Write output to file (default: stdout)
--help Show this message and exit.
Read an Agent Plugins 1.0.0 bundle and report what it can bind.
Usage: manifest from-plugin [OPTIONS] BUNDLE_DIR
Read an Agent Plugins 1.0.0 bundle and report what it can bind.
Emits the whole-bundle digest, the skills found, and the MCP servers the bundle
declares. It does not emit a tool manifest: mcp.json declares which servers to start
and never enumerates their tools, so the per-tool schema and description hashes a tool
manifest binds are not in a bundle to be read. Resolving those means starting the
servers and asking them.
Example: manifest from-plugin ./my-plugin
Options:
-o, --output TEXT Write output to file (default: stdout)
--help Show this message and exit.
::: agent_manifest.cli