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.2.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.2-cp310-abi3-musllinux_1_2_x86_64.whl (8.5 MB view details)

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

jacs-0.10.2-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.2-cp310-abi3-manylinux_2_38_aarch64.whl (9.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.38+ ARM64

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

Uploaded CPython 3.10+macOS 11.0+ ARM64

jacs-0.10.2-cp310-abi3-macosx_10_12_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: jacs-0.10.2.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.2.tar.gz
Algorithm Hash digest
SHA256 402778bb0ebeb29bc78f0767c282b3549cf7f6ec6fe505111087274821a87691
MD5 7ac6002d94957bf305d189830b440f05
BLAKE2b-256 07893a86e8612ccede559e2f7971341dffc7a0927897d61e21a8ee6f49ddef41

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.2.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.2-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for jacs-0.10.2-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b388dfc460afc2771eac981937fe7f0bf68a14c9ad91210ed3a05bfe6becc1a2
MD5 53cf1ae4cdff5b3e23b2c6d1144cb920
BLAKE2b-256 2d24af6c85e68eafd815be366c0ef0825e79cb88241bfe0ad43a9292cda88c33

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.2-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.2-cp310-abi3-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for jacs-0.10.2-cp310-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 b3f55ef5a123d3116f92df1eab5ce46b3d58ae131bcc7c3bfd971666ae8d294f
MD5 0091b03ae4dc69f1baf4dfb8a276fba5
BLAKE2b-256 e813ede88c992dd2fcaf4df693eedc53bd2bc6635b95446fb13bb8c653846f65

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.2-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.2-cp310-abi3-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for jacs-0.10.2-cp310-abi3-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 fd64963a125c57c015dc732e3899bd0cad8d70924ea07082b79ccffcb97f6fdf
MD5 b6d67351f2fc1fe12209879d23d33cf0
BLAKE2b-256 c28199b10088f7bf4d00999f36f2b84c879d4136b68e4977348e0c07aa73d5db

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.2-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.2-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jacs-0.10.2-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 34208e9aa446fe7a00cf26b16185b9869e03b76b1d9e8f38ad73bf03c5f78b84
MD5 118d125b4104116a295bd8094d37fa32
BLAKE2b-256 1140764a0fc8236c94165a04f7f774bab21e4551c08bf3879e751fc81e0e5726

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.2-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.2-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for jacs-0.10.2-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 491e129507ca64dd891b8ad99ecb410d558eb46806cfe90f46e8431babd1620a
MD5 ba2d527a8d4dcf0d22e91e2e9deb8139
BLAKE2b-256 7228158097c6ba5527b7ba8e76bb4a9251057690ebd94dc6bf5ff247357e25c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for jacs-0.10.2-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