Cryptographic identity, data provenance, and trust for AI agents.
JACS gives every AI agent a verifiable identity, signs everything it produces, and lets any other agent or system verify who said what — without a central server.
cargo install jacs-cli | brew install jacs
For the HAI.AI platform (agent email, benchmarks, leaderboard), see haiai.
| Capability | What it means |
|---|---|
| Agent Identity | Generate a cryptographic keypair that uniquely identifies your agent. Post-quantum ready (ML-DSA-87/FIPS-204) by default. |
| Data Provenance | Sign any JSON document or file. Every signature is tamper-evident — anyone can verify the content hasn't been modified and who produced it. |
| Agent Trust | Verify other agents' identities, manage a local trust store, and establish trust policies (open, verified, strict) for cross-agent interactions. |
cargo install jacs-cli
export JACS_PRIVATE_KEY_PASSWORD='your-password'
jacs quickstart --name my-agent --domain example.com
jacs document create -f mydata.json
jacs verify signed-document.jsonOr via Homebrew:
brew tap HumanAssisted/homebrew-jacs
brew install jacsJACS includes a built-in MCP server for AI tool integration (Claude Desktop, Cursor, Claude Code, etc.):
jacs mcp{
"mcpServers": {
"jacs": {
"command": "jacs",
"args": ["mcp"]
}
}
}The MCP server uses stdio transport only — no HTTP endpoints. This is a deliberate security choice: the server holds the agent's private key, so it runs as a subprocess of your MCP client. The key never leaves the local process and no ports are opened.
Core profile (default) — 7 tool families: state, document, trust, audit, memory, search, key.
Full profile (jacs mcp --profile full) — adds agreements, messaging, A2A, and attestation tools.
| Operation | What it does |
|---|---|
| Create | Generate an agent identity with a cryptographic keypair |
| Sign | Attach a tamper-evident signature to any JSON payload or file |
| Verify | Prove a signed document is authentic and unmodified |
| Export | Share your agent's public key or signed documents with others |
Local provenance — An agent creates, signs, verifies, and exports documents locally. No server required.
Trusted local memory — Store agent memories, plans, configs as signed documents with searchable metadata and visibility controls (public/private/restricted).
Platform workflows — Use the same JACS identity with haiai to register with HAI.AI, send signed email, and run benchmarks.
Multi-agent trust — Agreements with quorum signing, A2A interoperability, attestation chains, and DNS-verified identity discovery.
- Single developer, single service. Standard logging is fine.
- Internal-only prototypes. No trust boundaries, no value in signing.
- Simple checksums. If you only need to detect accidental corruption, use SHA-256.
JACS adds value when data crosses trust boundaries — between organizations, between services with different operators, or into regulated audit trails.
- Post-quantum ready — ML-DSA-87 (FIPS-204) default, with Ed25519 and RSA-PSS.
- Cross-language — Sign in Rust, verify in Python or Node.js. Tested on every commit.
- Pluggable storage — Filesystem, SQLite, PostgreSQL, DuckDB, SurrealDB, Redb.
- Document visibility —
public,private, orrestrictedaccess control. - Trust policies —
open,verified(default), orstrictmodes. - Multi-agent agreements — Quorum signing, timeouts, algorithm requirements (feature-gated).
- A2A interoperability — Every JACS agent is an A2A agent with zero config (feature-gated).
The MCP server and CLI are the recommended integration paths. Native bindings exist for direct library use:
| Language | Install | Status |
|---|---|---|
| Python | pip install jacs |
Experimental |
| Node.js | npm install @hai.ai/jacs |
Experimental |
| Go | go get github.com/HumanAssisted/JACS/jacsgo |
Experimental |
See DEVELOPMENT.md for library APIs, framework adapters, and build instructions.
- Private keys are encrypted with password-based key derivation.
- MCP server is stdio-only — no network exposure.
- 260+ automated tests covering cryptographic operations, password validation, agent lifecycle, DNS verification, and attack scenarios.
- Post-quantum default — ML-DSA-87 (FIPS-204) composite signatures.
Report vulnerabilities to security@hai.ai. Do not open public issues for security concerns.
v0.9.7 | Apache-2.0 OR MIT | Third-Party Notices