agentverif CLI
Scan, sign, verify, and revoke AI agent packages from the command line.
Getting started
Install the CLI with pip. Python 3.9+ required.
pip install agentverif-sign
Verify the installation:
agentverif-sign --version
# agentverif-sign 0.1.0
Set your API key before signing. Get one at agentverif.com/account. Free tier does not require a key for local-only operations.
agentverif sign
Sign an agent package. This runs the full OWASP LLM Top 10 scan, then registers a cryptographic hash and issues a License ID.
agentverif-sign sign ./agent.zip [OPTIONS]
What happens step by step
- The CLI reads the agent package from the path you provide.
- A
sha256hash of the archive is computed locally. - The hash is sent to the agentverif API along with your API key and tier.
- The OWASP LLM Top 10 scan runs server-side. If the score is below 70, signing is refused.
- On success, a
SIGNATURE.jsonis injected into your archive, containing the License ID, hash, timestamp, and tier. - The signed archive is written to
./agent.signed.zip(or the path specified with--output).
# Basic sign
agentverif-sign sign ./agent.zip
# Specify output path
agentverif-sign sign ./agent.zip --output ./dist/agent.signed.zip
# Output JSON (for CI/CD)
agentverif-sign sign ./agent.zip --json
# Example JSON output
# {
# "license_id": "AV-84F2-91AB",
# "tier": "indie",
# "score": 87,
# "hash": "sha256:e3b0c44...",
# "signed_at": "2026-04-11T12:00:00Z"
# }
Packages scoring below 70 on the OWASP LLM Top 10 scan are refused. No exceptions. The scan result and score are included in SIGNATURE.json.
agentverif verify
Verify a signed agent archive. Checks the SIGNATURE.json, recomputes the hash, and optionally checks the registry for revocation status.
agentverif-sign verify ./agent.zip [OPTIONS]
# Standard verify (local hash check only)
agentverif-sign verify ./agent.zip
# VERIFIED
# License: AV-84F2-91AB
# Tier: indie
# Score: 87/100
# Verify: https://verify.agentverif.com/AV-84F2-91AB
# Also check registry (revocation, online record)
agentverif-sign verify ./agent.zip --registry
# Machine-readable output
agentverif-sign verify ./agent.zip --json
Exit codes
0— verified successfully1— hash mismatch (tampered or corrupted)2— noSIGNATURE.jsonfound3— license revoked4— registry unreachable (used with--registry)
agentverif badge
Retrieve the badge string for a given License ID. Badge format depends on the tier the agent was signed under.
agentverif-sign badge AV-XXXX-XXXX
Badge formats by tier
Embed the badge in your agent's README using the embed code shown in the README badge section below.
agentverif revoke
Revoke a previously issued license. Only available on Pro and Enterprise tiers. Revocation is permanent and immediate — all future registry checks will return REVOKED.
agentverif-sign revoke AV-XXXX-XXXX [OPTIONS]
# Revoke with reason (recommended)
agentverif-sign revoke AV-84F2-91AB --reason "compromised key"
# Confirmed. License AV-84F2-91AB is now REVOKED.
# All verify --registry calls will return status: revoked.
Revocation cannot be undone. If you need to re-certify the same agent, sign it again to obtain a new License ID.
Environment variables
All CLI options can be set via environment variables. CLI flags take precedence.
| Variable | Description | Default |
|---|---|---|
| AGENTVERIF_API_KEY | Your agentverif API key. Required for Pro and Enterprise operations. | — |
| AGENTVERIF_SIGN_URL | Override the signing API endpoint. Useful for private deployments or CI environments. | https://api.agentverif.com |
| AGENTVERIF_TIER | Default tier to use when signing (indie, pro, enterprise). |
indie |
| AGENTVERIF_JSON | Set to 1 to default all commands to JSON output mode. |
0 |
CI/CD example (.env or GitHub Actions)
# .env
AGENTVERIF_API_KEY=av_live_xxxxxxxxxxxx
AGENTVERIF_TIER=pro
# GitHub Actions step
- name: Sign agent
run: agentverif-sign sign ./dist/agent.zip --json
env:
AGENTVERIF_API_KEY: ${{ secrets.AGENTVERIF_API_KEY }}
README badge
Add a verification badge to your agent’s README. Replace AV-XXXX-XXXX with your License ID.
Markdown
[](https://verify.agentverif.com/AV-XXXX-XXXX)
Plain text (for README or agent manifest)
✅ agentverif VERIFIED | AV-XXXX-XXXX
Verify: https://verify.agentverif.com/AV-XXXX-XXXX
JSON-LD (for agent metadata files)
{
"agentverif": {
"license_id": "AV-XXXX-XXXX",
"tier": "pro",
"verify_url": "https://verify.agentverif.com/AV-XXXX-XXXX"
}
}
FAQ
What gets scanned?
The entire agent archive — source code, dependencies, configuration files, and any embedded prompts — is analysed against the OWASP LLM Top 10. This includes checks for prompt injection risks, insecure output handling, excessive agency, and more.
What score is required to pass?
A minimum score of 70 out of 100 is required. Packages scoring below 70 are refused — no exceptions, no overrides. The score and per-category breakdown are included in SIGNATURE.json so you can see exactly where to improve.
How long does a license last?
Licenses do not expire automatically. They remain valid indefinitely unless you revoke them. If you update your agent and re-sign it, a new License ID is issued — the old one remains valid for the original version unless explicitly revoked.
Can I verify without an internet connection?
Yes. Running agentverif-sign verify ./agent.zip without the --registry flag performs a fully local hash check using only the SIGNATURE.json embedded in the archive. No network request is made.
What is SIGNATURE.json?
A file injected into your signed archive containing the License ID, sha256 hash, OWASP score, tier, signing timestamp, and a URL to the public registry entry (Pro/Enterprise). It is human-readable JSON and machine-parseable for CI/CD.
What is Ed25519 signing (Enterprise)?
Enterprise tier adds a cryptographic Ed25519 signature to SIGNATURE.json. This allows buyers to verify authenticity without trusting the agentverif registry — purely using public-key cryptography. The public key is published at agentverif.com/.well-known/agentverif-public.pem.
Is the scan result stored?
The scan score and a summary of findings are stored server-side and linked to your License ID on Pro and Enterprise tiers. On the free Indie tier, only the hash and License ID are registered — scan details are returned to you at signing time only.