Skip to main content

Agent-agnostic compliance shim for SOX 404 policy enforcement via the ALCV Vault

Project description

Ledgix ALCV — Python SDK

PyPI Python 3.10+ License: MIT

Agent-agnostic compliance shim for SOX 404 policy enforcement. Intercepts AI agent tool calls, validates them against your policies via the ALCV Vault, and ensures only approved actions receive a cryptographically signed A-JWT (Agentic JSON Web Token).

Quick Start

pip install ledgix-python
from ledgix_python import LedgixClient, vault_enforce

client = LedgixClient()  # Reads LEDGIX_VAULT_URL, LEDGIX_VAULT_API_KEY from env

@vault_enforce(client, tool_name="stripe_refund")
def process_refund(amount: float, reason: str, **kwargs):
    token = kwargs["_clearance"].token  # Signed A-JWT
    return stripe.refund(amount=amount, metadata={"vault_token": token})

That's it. Three lines to SOX 404-compliant tool calls.

Configuration

Set environment variables (prefix: LEDGIX_):

Variable Default Description
LEDGIX_VAULT_URL http://localhost:8000 Vault server URL
LEDGIX_VAULT_API_KEY "" API key for Vault auth
LEDGIX_VAULT_TIMEOUT 30.0 Request timeout (seconds)
LEDGIX_VERIFY_JWT true Verify A-JWT signatures
LEDGIX_JWT_ISSUER alcv-vault Expected A-JWT issuer
LEDGIX_JWT_AUDIENCE ledgix-sdk Expected A-JWT audience
LEDGIX_AGENT_ID default-agent Agent identifier

Or pass a VaultConfig directly:

from ledgix_python import LedgixClient, VaultConfig

config = VaultConfig(vault_url="https://vault.mycompany.com", vault_api_key="sk-...")
client = LedgixClient(config=config)

Framework Adapters

LangChain

pip install ledgix-python[langchain]
from ledgix_python.adapters.langchain import LedgixCallbackHandler, LedgixTool

# Option 1: Callback handler (intercepts ALL tool calls)
handler = LedgixCallbackHandler(client)
agent = create_agent(callbacks=[handler])

# Option 2: Wrap individual tools
guarded_tool = LedgixTool.wrap(client, my_tool, policy_id="refund-policy")

LlamaIndex

pip install ledgix-python[llamaindex]
from ledgix_python.adapters.llamaindex import wrap_tool

guarded_tool = wrap_tool(client, my_function_tool, policy_id="refund-policy")

CrewAI

pip install ledgix-python[crewai]
from ledgix_python.adapters.crewai import LedgixCrewAITool

guarded_tool = LedgixCrewAITool.wrap(client, my_tool, policy_id="refund-policy")

Context Manager

from ledgix_python import VaultContext

with VaultContext(client, "stripe_refund", {"amount": 45}) as ctx:
    print(ctx.clearance.token)  # Use the A-JWT

# Async
async with VaultContext(client, "stripe_refund", {"amount": 45}) as ctx:
    print(ctx.clearance.token)

Error Handling

from ledgix_python import ClearanceDeniedError, VaultConnectionError, TokenVerificationError

try:
    result = process_refund(amount=5000, reason="...")
except ClearanceDeniedError as e:
    print(f"Blocked: {e.reason} (request: {e.request_id})")
except VaultConnectionError:
    print("Cannot reach Vault — fail-closed")
except TokenVerificationError:
    print("A-JWT signature invalid")

Development

git clone https://github.com/ledgix-dev/python-sdk.git
cd python-sdk
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v --cov

Demo

python demo.py

License

MIT

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

ledgix_python-0.1.3.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

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

ledgix_python-0.1.3-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file ledgix_python-0.1.3.tar.gz.

File metadata

  • Download URL: ledgix_python-0.1.3.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for ledgix_python-0.1.3.tar.gz
Algorithm Hash digest
SHA256 d81c904c5d90059beeb3cb026f7adf2804958199dd93be3dfeb8946b9bd30f20
MD5 64ec7effdfc3e56f9a5766cac845b697
BLAKE2b-256 f1c00b8dd7afb6882342d60e99510fd884c140a4eda2dab0f413ee058e0520e3

See more details on using hashes here.

File details

Details for the file ledgix_python-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: ledgix_python-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for ledgix_python-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 02affe8b451c7b4132ff9705f9f4102c153fe6a9e25ee47f7498f70cbcba3fdb
MD5 de0dc3ec58473ba7ee90e38c97c22a53
BLAKE2b-256 fafbe5d781570f032fa083f9c15e39185664190b76b31ad83e002abc6b8dc5f5

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