Skip to main content

JACS - JSON AI Communication Standard: Cryptographic signing and verification for AI agents.

Project description

JACS Python Library

Cryptographic identity, signing, and verification for AI agents from Python.

pip install jacs

Prebuilt native bindings are distributed via maturin. A normal install does not require compiling Rust.

Full documentation | Quick Start

Quick start

import jacs.simple as jacs

info = jacs.quickstart(name="my-agent", domain="my-agent.example.com")
signed = jacs.sign_message({"action": "approve", "amount": 100})
result = jacs.verify(signed.raw)
print(f"Valid: {result.valid}, Signer: {result.signer_id}")

quickstart() creates a persistent agent with keys on disk. If jacs.config.json exists, it loads it; otherwise it creates a new agent.

Core operations

Operation Description
quickstart(name, domain) Create or load a persistent agent
load() Load an existing agent from config
sign_message() Sign JSON-serializable data
sign_file() Sign a file with optional embedding
verify() Verify a signed document
verify_standalone() Verify without loading an agent
export_agent() Export agent JSON for sharing
audit() Run a security audit

Text and image provenance

Python exposes the same inline text and image signing surface as the CLI:

import jacs.simple as jacs
from jacs import MissingSignatureError

jacs.load("./jacs.config.json")

# Markdown/text: append and verify an inline signature block.
jacs.sign_text("README.md")
text = jacs.verify_text("README.md")
print(text.status)  # 'signed' | 'missing_signature' | 'malformed'

try:
    jacs.verify_text("README.md", strict=True)
except MissingSignatureError:
    print("not signed")

jacs.verify_text("README.md", key_dir="./trusted-keys/")

# Images: embed and verify a signature in PNG, JPEG, or WebP metadata.
jacs.sign_image("photo.png", out="signed.png")
image = jacs.verify_image("signed.png")
print(image.status)  # 'valid'

payload = jacs.extract_media_signature("signed.png")

The same methods are available on the instance-based JacsClient for multi-agent processes. These signatures prove that an agent signed specific canonical bytes at its claimed time; they do not prove first creation or legal ownership.

Verify without an agent

result = jacs.verify_standalone(signed_json, key_directory="./keys")

Cross-language interop is tested on every commit. Documents signed in Rust or Node.js verify in Python, and Python-signed documents verify in the other bindings.

Framework adapters

pip install jacs[langchain]    # LangChain / LangGraph
pip install jacs[fastapi]      # FastAPI / Starlette
pip install jacs[crewai]       # CrewAI
pip install jacs[anthropic]    # Anthropic / Claude SDK
pip install jacs[a2a]          # A2A protocol
pip install jacs[all]          # Everything

Instance-based API

For multiple agents in one process:

from jacs.client import JacsClient

client = JacsClient.quickstart(name="my-agent", domain="example.com")
signed = client.sign_message({"action": "approve"})

See DEVELOPMENT.md for the full API reference, advanced usage, framework adapter examples, and testing utilities.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jacs-0.10.1.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

jacs-0.10.1-cp310-abi3-musllinux_1_2_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

jacs-0.10.1-cp310-abi3-manylinux_2_38_x86_64.whl (9.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.38+ x86-64

jacs-0.10.1-cp310-abi3-manylinux_2_38_aarch64.whl (9.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.38+ ARM64

jacs-0.10.1-cp310-abi3-macosx_11_0_arm64.whl (8.7 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

jacs-0.10.1-cp310-abi3-macosx_10_12_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file jacs-0.10.1.tar.gz.

File metadata

  • Download URL: jacs-0.10.1.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jacs-0.10.1.tar.gz
Algorithm Hash digest
SHA256 a67dac691afdb1bf9c81fcffcd5451969d369f4245031bb7a2e70c6a3972ec65
MD5 7ee9da09914a6fa5a6fca07b5ad51964
BLAKE2b-256 334a0e6d332105d699215e16fe98e051f41c41c6eddeee600119e23e71196670

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.1.tar.gz:

Publisher: release-pypi.yml on HumanAssisted/JACS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jacs-0.10.1-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for jacs-0.10.1-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 19690a75eaccc1389185d881a64d58a5a02722e06e85bc6802bf90ddf3527391
MD5 808d1b6e90ca00ad40efa8a1cc31f760
BLAKE2b-256 ac29a596eadc9c21f0e4adf9593f1df4fc028767de2f33c669bfefc3910d93a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.1-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: release-pypi.yml on HumanAssisted/JACS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jacs-0.10.1-cp310-abi3-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for jacs-0.10.1-cp310-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 e46e8428f6bae32e5ade89749f0276d84afd3a6c8b0181c6a3afab06f68a582b
MD5 8d607e10163225661905fc7c3c548393
BLAKE2b-256 5dc487c2f7092f8a312b4d58129aeb733ae172ffae48ef7f87812274dc51d889

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.1-cp310-abi3-manylinux_2_38_x86_64.whl:

Publisher: release-pypi.yml on HumanAssisted/JACS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jacs-0.10.1-cp310-abi3-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for jacs-0.10.1-cp310-abi3-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 98d533cc102e193f064b1009417aa88cebe073f2fa5e596de301e75cd01c800c
MD5 a13d2bc97304edce4e5088bc8da62b3e
BLAKE2b-256 22992f453891b96529835ae94e684a68be5b58621d83fec8d28420af56ed083c

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.1-cp310-abi3-manylinux_2_38_aarch64.whl:

Publisher: release-pypi.yml on HumanAssisted/JACS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jacs-0.10.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jacs-0.10.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 49a9b8d52abf20a307064cb5c5d66288cdddbd7d51fcca0f03a07afb7c89ca7b
MD5 e512e808f622dc0c5cc295a0d2975046
BLAKE2b-256 652b29e60b21ce82687a479ad098ec7ac5a53b54eb9b5c81e680fa4a78ab5967

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.1-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release-pypi.yml on HumanAssisted/JACS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jacs-0.10.1-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for jacs-0.10.1-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0f8a501f93d58ec765fe8e9febd8bae60b24fb5458985709d3094d31cd09cc0b
MD5 9de869ed0d0eb304978e716d857426b7
BLAKE2b-256 f744b1b96e525dfbb24c5bf406429ccdbe35c0f3f47d07a4d0bb84400913e32b

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.1-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: release-pypi.yml on HumanAssisted/JACS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page