Skip to main content

Parmana

Every action stays within what your business allowed.

PyPI Python License

The official Python SDK for Parmana, the trust layer for every action.

Parmana checks every action, whether a person or a machine takes it, against the limits you set, then keeps proof of what happened, so you can verify it rather than trust it. An action routed through Parmana runs only when the policy bound to it, approved through policy governance, approves it, and a trusted person has signed an approval for that action (every action needs one, reads included; parmana.crypto.sign_approval), and each execution produces a signed Execution Trust Record that anyone with the public key can verify.

Why Parmana

Modern AI systems can:

  • Plan
  • Reason
  • Call tools
  • Invoke APIs
  • Execute business workflows

However, most AI systems cannot answer critical governance questions:

  • Who authorized this execution?
  • Which policy approved it?
  • Was the execution independently verified?
  • Has the record changed since it was written?
  • Is there cryptographic evidence of what occurred?

For actions routed through it, Parmana records the answers in signed evidence. An agent that calls a system with its own credentials, outside Parmana, is outside that record.

Installation

pip install parmana

Requirements

  • Python 3.10 or later
  • A running Parmana API server (for example http://localhost:3000) and an API key for it

Quick Start

from parmana import ParmanaClient

client = ParmanaClient(
    endpoint="http://localhost:3000",
    api_key="<your API key>",
)

print(client.version)  # the SDK version

Runtime Health

status = client.health()

print(status)

Execute a Business Transaction

from parmana import PolicyReference, create_business_transaction

transaction = create_business_transaction(
    principal_id="python-sdk",
    purpose="Quickstart demo",
    action="test:fixture-execute",
    target="vendor://payments",
    parameters={"amount": 1000, "currency": "USD"},
    policy=PolicyReference(
        name="vendor-payment", version="2.0.0", schema_version="1.0.0"
    ),
    signals={
        "vendorVerified": True,
        "invoiceVerified": True,
        "paymentApproved": True,
        "sufficientFunds": True,
        "paymentAmount": 1000,
        "riskScore": 5,
        "vendorId": "vendor://payments",
    },
)

trust_record = client.execute(transaction)

print(trust_record.trust_record_id)

test:fixture-execute is a test only capability that works on a server started with NODE_ENV=test; see examples/quickstart/run.py for the full, tested example. A refused request raises an error instead of returning a record.

Verify an Execution

verification = client.verify(transaction.business_transaction_id)

print(verification.status)

Recheck a stored record

result = client.replay.replay(transaction.business_transaction_id)

print(result.verified)

Through the API, "replay" rechecks the stored Trust Record's hash and signature, the same kind of check as verify(). It does not execute anything again. See https://docs.parmanasystems.com/replay/overview.

Execution Lifecycle

Business Transaction
        |
        v
Policy decision (refused requests get a signed Refusal Record)
        |
        v
Signed authorization
        |
        v
Execution through the gateway
        |
        v
Execution Trust Record (signed)
        |
        v
Verification and Receipt

Python SDK

Method Description
health() Runtime health check
execute() Execute a Business Transaction
verify() Verify an execution
replay.replay() Recheck a stored Trust Record (hash and signature)
receipt.generate() Generate an execution receipt
latest_receipt() Read the latest receipt (1.3.0)
transaction() Retrieve a Business Transaction
trust_record() Retrieve an Execution Trust Record
validate_policy() Check a policy name and version can be loaded
refusal_record() Retrieve a Refusal Record
execution_intent() Retrieve an Execution Intent and its status
caller() Who the API key belongs to (1.3.0)
public_key() A signing public key, for offline checks (1.3.0)
propose_policy_change() Propose a policy change (1.3.0)
policy_changes() List policy changes for review (1.3.0)
approve_policy_change() Approve with a signed step up authorization (1.3.0)
reject_policy_change() Reject with a signed step up authorization (1.3.0)

parmana.crypto (install parmana[verify]) verifies Trust Records and Execution Intents with only the public key, and signs step up authorizations (sign_policy_change_step_up(), 1.3.0).

Each of these is also available under its own namespace (e.g. client.execution.execute(), client.verification.verify(), client.replay.replay()) for finer-grained access to that API's other operations, such as client.verification.get_latest() or client.transactions.list().

Documentation

License

Apache License 2.0. See LICENSE and NOTICE. This SDK is a client: it needs a Parmana server, which is licensed separately. Licensing inquiries: founder@parmanasystems.com


Parmana

Execution Trust Infrastructure for AI systems

Metadata

Release files for parmana 1.6.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for parmana 1.6.2
File Size Uploaded Provenance Actions
parmana-1.6.2.tar.gz 95.9 kB Without provenance Details for parmana-1.6.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for parmana 1.6.2
File Interpreter ABI Platform Actions
parmana-1.6.2-py3-none-any.whl Python 3 none any Details for parmana-1.6.2-py3-none-any.whl

Total release size: 179.4 kB

Release files / parmana-1.6.2.tar.gz

Download URL parmana-1.6.2.tar.gz
Size 95.9 kB
Tags Source
SHA-256 checksum
How to use checksums
32d6ea3eeb6f6f1d518d20f03d5f81f39ca0631005bfca0426668c97abdbf468
BLAKE2b-256 checksum
How to use checksums
c58879bd3ad6f30ecf0e45a4c366ad8eb063b22f3ce34a81e74fe50f61ab6de1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / parmana-1.6.2-py3-none-any.whl

Download URL parmana-1.6.2-py3-none-any.whl
Size 83.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
85202687349836009c5b0cc06e80dcb37c3c5d3140c82e4c5cabdde2d41d6189
BLAKE2b-256 checksum
How to use checksums
1b9862ff9eee05c48ab92eb2c4d32be746a83efe075d49322764de5ccf05c088
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Security for parmana 1.6.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page