Deterministic safety certification kernel for AI agents, finance, and beyond
Project description
qae-safety
Deterministic safety certification kernel for AI agents, finance, and beyond.
Built with Rust for performance, exposed to Python via PyO3.
Installation
pip install qae-safety
Quick Start
from qae_safety import SafetyCertifier, AgenticAdapter, SimpleAction, StateDelta
# Create an adapter with budget and rate constraints
adapter = AgenticAdapter(budget_limit=100.0, rate_limit=50.0)
# Create a certifier
certifier = SafetyCertifier(adapter)
# Define an action
action = SimpleAction(
action_id="act-1",
agent_id="my-agent",
state_deltas=[
StateDelta("budget_utilization", from_value=0.0, to_value=50.0),
],
)
# Certify the action
cert = certifier.certify(action)
print(cert.decision) # e.g. "Certified"
print(cert.zone) # e.g. "Safe"
print(cert.margins) # e.g. {"budget": 0.8, "rate": 0.95}
Convenience Function
For one-off certifications without creating a SafetyCertifier:
from qae_safety import AgenticAdapter, certify_action
adapter = AgenticAdapter(budget_limit=100.0, rate_limit=50.0)
cert = certify_action(
adapter,
action_id="action-1",
agent_id="my-agent",
deltas={"budget_utilization": 0.5},
)
print(cert.decision)
Custom Domain Adapters
Extend the kernel to any domain by subclassing DomainAdapter and ConstraintChannel:
from qae_safety import DomainAdapter, ConstraintChannel, SafetyCertifier, SimpleAction
class TemperatureChannel(ConstraintChannel):
def name(self) -> str:
return "temperature"
def evaluate(self, state: list[float]) -> float:
# Return margin in [0, 1]; 1 = safe, 0 = at boundary
temp = state[0]
return max(0.0, 1.0 - temp / 100.0)
def dimension_names(self) -> list[str]:
return ["temperature"]
class RoboticsAdapter(DomainAdapter):
def domain_name(self) -> str:
return "robotics"
def constraint_channels(self) -> list:
return [TemperatureChannel()]
def map_action_to_state(self, action) -> list[float]:
for delta in action.state_deltas:
if delta.dimension == "temperature":
return [delta.to_value]
return [0.0]
def detect_regime_change(self, current, proposed) -> bool:
return False
adapter = RoboticsAdapter()
certifier = SafetyCertifier(adapter)
License
BSL-1.1 (Business Source License 1.1). Converts to Apache 2.0 on 2032-01-01.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
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 qae_safety-0.1.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: qae_safety-0.1.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 368.7 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
880dc07da8e80fc669ece1cc28235768db3df42e596d83ed601fd5240a1c6e1e
|
|
| MD5 |
f1a6ffedcfe7493a6451a7712b02824a
|
|
| BLAKE2b-256 |
3ea4910b50da477418670649a7f00069efb3a7d91724ff13efeec742c95b6734
|
File details
Details for the file qae_safety-0.1.2-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: qae_safety-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 313.8 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
caa9930b7cd6aa3fed0a61ba930d9c738d739e9845bc70da452ff8c2dbd425d8
|
|
| MD5 |
f33de877b549f7922b66702792f578f3
|
|
| BLAKE2b-256 |
582966ef1ae805b313c6f20cfd83c7e05d7115dd577bee48b93b9abd8245a215
|
File details
Details for the file qae_safety-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: qae_safety-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 369.1 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f39eafa611ce7c094c19eebd793bc00563ab473bd798de2a03c0450669a11254
|
|
| MD5 |
dfd77b8e8be8fba3f9ad7e305f526c11
|
|
| BLAKE2b-256 |
5c8184566f220b97ebaef5889720853bf3a6722d64ffd68055b589c19d361820
|