jacs-cli
CLI and MCP server for JACS — cryptographic identity, signing, and verification for AI agents.
Or via Homebrew:
This installs the jacs binary with CLI and MCP server built in.
Quick start
What's new in 0.10.0 — provenance commands
Why this matters: shared markdown reviewed by multiple agents and signed images for AI-era provenance now have first-class CLI support — the signature lives inside the artifact, no sidecar JSON required.
jacs sign-text / jacs verify-text (inline text signatures)
# Sign a markdown file — content preserved byte-for-byte, YAML-bodied JACS
# signature block appended at the end.
# A second agent counter-signs (multi-signer is unordered)
# Verify per-signer (permissive — missing-sig is exit 2, not an error)
# - agent-abc123 (ed25519) valid
# - agent-def456 (pq2025) valid
# Strict mode — missing signature exits 1 instead of 2
# stderr: "no JACS signature found"
# Override trust store with a directory of <signer_id>.public.pem files
Exit codes — permissive verify: 0 valid, 1 invalid signature, 2 missing signature. Strict verify collapses 2 into 1.
jacs sign-image / jacs verify-image / jacs extract-media-signature
# Embed signature in PNG iTXt / JPEG APP11 / WebP XMP
# Refuse to overwrite an existing signature (default is overwrite)
# Verify (permissive)
# Strict verify — missing signature exits 1
# Extract the embedded payload (decoded JSON by default)
# Wire form (base64url)
A JACS inline signature proves "agent X signed these canonical bytes at their claimed time." It does not prove first creation or legal ownership.
MCP server
The MCP server uses stdio transport only — no HTTP endpoints. This is deliberate: the server holds the agent's private key, so it runs as a subprocess of your MCP client. No ports are opened.
Configure in your MCP client (Claude Desktop, Cursor, Claude Code, etc.):
For headless/server environments:
Links
v0.10.0 | Apache 2.0 with Common Clause