Skip to main content

OCC cryptographic proof signing for LangChain

Project description

occ-langchain

OCC cryptographic proof signing for LangChain and LangGraph.

Every tool call produces an Ed25519-signed proof entry in proof.jsonl, creating a tamper-evident audit log of agent actions.

Install

pip install occ-langchain

Quick Start

Callback Handler (recommended)

from langchain.agents import AgentExecutor
from occ_langchain import OccCallbackHandler

handler = OccCallbackHandler()
executor = AgentExecutor(
    agent=your_agent,
    tools=tools,
    callbacks=[handler],
)
result = executor.invoke({"input": "Search for OCC proofs"})
# proof.jsonl now contains signed proof entries

Wrap Individual Tools

from langchain_community.tools import DuckDuckGoSearchRun
from occ_langchain import OccTool

search = DuckDuckGoSearchRun()
safe_search = OccTool(inner=search)

Wrap All Tools

from occ_langchain import wrap_tools

safe_tools = wrap_tools([search_tool, calc_tool])
executor = AgentExecutor(agent=agent, tools=safe_tools)

Custom Signer

from occ_langchain import OCCSigner, OccCallbackHandler

signer = OCCSigner(state_dir="/tmp/.occ", proof_file="audit.jsonl")
handler = OccCallbackHandler(signer=signer)

Proof Format

Each line in proof.jsonl is a JSON object:

{
  "version": "occ/proof/1",
  "timestamp": "2026-03-20T12:00:00.000Z",
  "signer": "<base64url-ed25519-public-key>",
  "payload": {
    "type": "tool-call",
    "tool": "search",
    "inputHash": "<sha256-hex>",
    "outputHash": "<sha256-hex>"
  },
  "signature": "<base64url-ed25519-signature>",
  "prev": "<sha256-hex-of-previous-proof>"
}

Proofs are chained: each proof's prev field contains the SHA-256 hash of the previous proof's canonical JSON.

Configuration

  • State directory: Keypair stored in .occ/signer-state.json (defaults to CWD)
  • Proof file: Defaults to proof.jsonl in CWD
  • Both configurable via OCCSigner(state_dir=..., proof_file=...)

License

Apache-2.0

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

occ_langchain-0.2.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

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

occ_langchain-0.2.0-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file occ_langchain-0.2.0.tar.gz.

File metadata

  • Download URL: occ_langchain-0.2.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for occ_langchain-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5caddf3d45e03692bb233a7e1a1314862419ee7af809dc1b882e8473d11a44bd
MD5 ac7a053ec58dee2c7c997f49e0bde555
BLAKE2b-256 e519354357b4add4cd09f588332837d2fe05cf629fb05b73ec6be7950b6e660f

See more details on using hashes here.

File details

Details for the file occ_langchain-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: occ_langchain-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for occ_langchain-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f23568ee8ba487af3e81af316b2edfb9a615c870b7620a74e7696bce4d982d65
MD5 a3ff623b333994d646694a569d636a7a
BLAKE2b-256 650a90b283f416e4bbcf047785835720ad212875f4251ad82e2581128bb871a9

See more details on using hashes here.

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