Runtime control plane for AI agents. Vendor-neutral SDK for signed audit logs, policy enforcement, and continuous compliance.
Project description
Praxis
Praxis — the runtime control plane for AI agents. Wrap any agent in 3 lines, get signed audit logs and policy enforcement.
Install
pip install praxel
uv add praxel
Note — install name vs. import name. Install the package as
praxel, but import it aspraxis:from praxis import PraxisThe distribution is published to PyPI as
praxel(the namepraxisis taken by an unrelated project), while the Python module remainspraxisso existing imports keep working.
Quickstart
from praxis import Praxis, Policy, PraxisDeniedException
def agent(prompt: str, *, tool_name: str, tool_input: dict):
return f"Executed {tool_name} with {tool_input}"
policies = [
Policy(
policy_id="limit-1000",
name="Dollar Limit",
kind="dollar_limit",
config={"field_path": "amount", "max_amount": 1000.0},
enabled=True,
)
]
wrapped = Praxis.wrap(agent, workspace="demo-workspace", policies=policies)
print(wrapped("Pay vendor", tool_name="transfer_money", tool_input={"amount": 500.0}))
What It Does
- Signed audit logs for every tool call (tamper-evident event trail).
- Runtime policy enforcement (allow, deny, require approval).
- Continuous compliance evidence for investigations, audits, and controls.
Supported Providers
- Anthropic
- OpenAI
- Custom agents
Docs
Before / After
Before: basic Claude agent, no governance
from anthropic import Anthropic
client = Anthropic(api_key="...")
def transfer_money(amount: float, to_account: str) -> str:
return f"Transferred ${amount:.2f} to {to_account}"
# Tool call executes directly.
result = transfer_money(5000, "acct-risky-001")
After: wrapped with Praxis
from praxis import Praxis, Policy
policies = [
Policy(
policy_id="limit-1000",
name="Dollar Limit",
kind="dollar_limit",
config={"field_path": "amount", "max_amount": 1000.0},
enabled=True,
)
]
wrapped_agent = Praxis.wrap(agent, workspace="prod-workspace", policies=policies)
- Signed audit trail for every tool action.
- Dollar limit enforced at runtime.
- Dashboard-ready event stream for review and investigations.
License
MIT. See LICENSE.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file praxel-0.1.0.tar.gz.
File metadata
- Download URL: praxel-0.1.0.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fe38a6e7fc15f1b744b28ab1b3344072c23e1c829f161c3e6cdf729efdef834
|
|
| MD5 |
a5f0b471acacebec97576564227cfcef
|
|
| BLAKE2b-256 |
28bf114b321ccd21cdc95fc5a109bc1eeba545f764d6189c85f81fa0bc47b5bc
|
File details
Details for the file praxel-0.1.0-py3-none-any.whl.
File metadata
- Download URL: praxel-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de57b1391712c910d37313db09fb956f87bee5a4c21013e91d2c22b2078d7cce
|
|
| MD5 |
1c519f11199c07db82ecbc2b91536aea
|
|
| BLAKE2b-256 |
4f1697ff3394cb58261bacf04559353a9639ae4db793b5fdee1a141bc72439c0
|