Skip to main content
Hash storage is where the SHA-256 hashes of your audit payloads are written. Only hashes and metadata are stored externally — raw data stays in your infrastructure. You can use one or both options.

Decentralized (Arweave)

Hashes are written to a public, append-only ledger. Not controlled by any single vendor.
from agentsystems_notary import ArweaveHashStorage, LocalKeySignerConfig

arweave_storage = ArweaveHashStorage(
    namespace="tenant_a1b2c3d4",  # anonymous tenant identifier
    signer=LocalKeySignerConfig(
        private_key_path="/path/to/arweave-key.pem",
    ),
    # bundler_url defaults to ArDrive Turbo
)

Parameters

ParameterRequiredDescription
namespaceYesAnonymous tenant identifier (written to public ledger — do not use company names)
signerYesSigning configuration (see Signers)
bundler_urlNoArweave bundler endpoint (defaults to ArDrive Turbo)

Verification

Verify with the open-source CLI — no account required:
npm install -g agentsystems-verify
agentsystems-verify --logs logs.zip
See Independent Verification for full documentation.

Custodied (AgentSystems)

Hashes are written to AgentSystems’ write-once compliance storage. Provides a vendor relationship for enterprise compliance and procurement.
from agentsystems_notary import CustodiedHashStorage

custodied_storage = CustodiedHashStorage(
    api_key="sk_asn_prod_...",
    slug="customer-123",
)

Parameters

ParameterRequiredDescription
api_keyYesAgentSystems API key (sk_asn_test_* or sk_asn_prod_*)
slugYesTenant slug (human-readable identifier)
api_urlNoAPI endpoint (defaults to production)

Get an API Key

  1. Sign up at notary.agentsystems.ai
  2. From the Dashboard, click Add under API Keys
  3. Name your key and select environment
  4. Copy and save the key — it’s only shown once

Verification

Verify via the Verify UI or see Verification Guide.

Using Both

You can write hashes to both Arweave and custodied storage:
notary = LangChainNotary(
    raw_payload_storage=raw_payload_storage,
    hash_storage=[
        ArweaveHashStorage(...),
        CustodiedHashStorage(...),
    ],
)
This provides independent verification via Arweave plus a vendor relationship via AgentSystems.