Pre-execution enforcement at the commit boundary
Project description
sentinelx-sdk
Whether it's an AI agent, a bank transfer, or a power grid — execution is permanent.
sentinelx-sdk enforces at the commit boundary. Before the action executes. Server-side. Unbypassable. Cryptographic receipt on every decision.
Install
pip install sentinelx-sdk
Quick Start
from sentinelx import SentinelX, AdmissibilityError
sx = SentinelX(api_key="YOUR_API_KEY")
try:
receipt = sx.enforce("ai.agent.action.execute", {
"agent_id": "agent-001",
"action_type": "file.write",
"human_in_loop_required": True,
"human_in_loop": False,
"action_within_scope": True,
"action_logged": True,
})
print("ADMISSIBLE | Receipt:", receipt.receipt_hash)
except AdmissibilityError as e:
print("INADMISSIBLE:", e.summary)
print("Constraint:", e.constraint)
print("Violations:", len(e.violations))
print("Receipt hash:", e.receipt_hash)
# Action never executed. Receipt sealed.
SCADA Example
receipt = sx.enforce("scada.setpoint.change", {
"device_id": "rtu-456",
"parameter": "voltage_setpoint",
"operator_authorized": True,
"change_ticket_linked": True,
"change_logged": True,
"two_person_auth": True,
"rollback_procedure_defined": True,
"action_logged": True,
})
print("ADMISSIBLE | Receipt:", receipt.receipt_hash)
Observe Mode — Never Throws
# Always returns receipt. Never raises on INADMISSIBLE.
# Useful for logging pipelines and observe mode.
receipt = sx.evaluate("wire.transfer.execute", context)
print(receipt.verdict) # "ADMISSIBLE" or "INADMISSIBLE"
How It Works
SentinelX sits at the commit boundary between your system and execution. Before any irreversible action fires, the enforcement engine evaluates it against invariant constraints and returns a deterministic verdict with a provenance receipt.
- ADMISSIBLE → receipt returned, action may proceed
- INADMISSIBLE →
AdmissibilityErrorraised, nothing executes, receipt sealed
The enforcement decision is made server-side. It cannot be bypassed client-side.
AdmissibilityError
except AdmissibilityError as e:
e.verdict # "INADMISSIBLE"
e.constraint # "AI_HUMAN_IN_LOOP_ENFORCED"
e.violation_code # "INV-046"
e.violations # list of matched invariants
e.summary # "Action blocked: human oversight required before execution"
e.receipt_hash # sha256 sealed receipt
e.trace_id # unique per evaluation
e.receipt # full Receipt object
Domain Coverage
| Domain | Example Actions |
|---|---|
| AI/ML Agents | ai.agent.action.execute, ml.model.deploy.production |
| Financial | wire.transfer.execute, algo.trade.execute |
| OT/SCADA | scada.setpoint.change, breaker.open.execute |
| Grid/Energy | load.transfer.execute, der.curtailment.execute.batch |
| Cyber/RMM | rmm.script.execute, rmm.privilege.escalate |
| Healthcare | medication.order.execute, patient.record.modify |
| Mobility | driver.payout.execute, surge.pricing.apply |
Get an API Key
curl -X POST https://enforce.sentinelx.ai/generate-key
Or visit sentinelx.ai.
Links
License
Apache-2.0
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 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 sentinelx_sdk-0.1.0.tar.gz.
File metadata
- Download URL: sentinelx_sdk-0.1.0.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb7d6707424f2824c6f1e30b85efe60831831b5f3319e786f579ed9f08844699
|
|
| MD5 |
7c2f5cd654b7cbff0eae11749c9d0859
|
|
| BLAKE2b-256 |
9bdce78db51de66a097b165fe9e45bfe8c689da057983e70c732637c282a46d3
|
File details
Details for the file sentinelx_sdk-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sentinelx_sdk-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e86a5304f94ea5b3abf9f1c761ae004e45eef8526b8d54f8a7f35823ce061e62
|
|
| MD5 |
3813f0d37b100505697eb67f321af049
|
|
| BLAKE2b-256 |
12fb2e43801fbe44f1c1d9fbe5ac5834e0367365a089b804afdec355cf0fe672
|