CLI reference¶
The manifest command is installed with the cli extra.
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.
Commands¶
manifest create¶
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.
manifest sign¶
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.
manifest keygen¶
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
Refuses to overwrite an existing private.hex -- delete it first if you really want to
replace it.
Example:
manifest keygen -d ./keys/
Options:
-d, --output-dir TEXT Directory to write key files
--help Show this message and exit.
manifest attest¶
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.
manifest verify¶
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:[email protected]=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.
manifest revoke¶
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 [email protected]
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.
manifest from-plugin¶
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.
Source¶
cli ¶
Agent Manifest CLI — issue #15.
Commands
manifest create Build a draft manifest from a config file manifest sign Sign a draft manifest with Ed25519 (or hybrid) manifest attest Extend manifest hash into hardware + append attestation block manifest verify Call the verification endpoint and print the result manifest revoke Publish a revocation record
All commands write JSON to stdout and accept --output/-o to write to a file.
create ¶
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
sign ¶
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
keygen ¶
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
Refuses to overwrite an existing private.hex -- delete it first if you really want to replace it.
Example: manifest keygen -d ./keys/
attest ¶
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
verify ¶
verify(manifest_file: str, enforce_hitl: bool, enforce_attestation: bool, crl_path: Optional[str], crl_trusted_key: Optional[str], public_key: Optional[str], approver_key: tuple[str, ...], require_transparency: bool, verified_transparency_entry_id: tuple[str, ...], verified_transparency_receipt_hash: tuple[str, ...], transparency_evidence_manifest_id: Optional[str], signature_only: bool, output: Optional[str]) -> None
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:[email protected]=alice.hex
revoke ¶
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 [email protected]
from_plugin ¶
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
manifest_alias ¶
Deprecated: every command is available at the top level.
Releases up to 0.5.0 nested the commands under a redundant manifest group, so the real invocation was manifest manifest verify while every document said manifest verify. The documented form is now the real one. This alias keeps the old spelling working for existing scripts.