Skip to main content

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.

license python

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
  • INADMISSIBLEAdmissibilityError raised, 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sentinelx_sdk-0.1.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

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

sentinelx_sdk-0.1.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

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

Hashes for sentinelx_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bb7d6707424f2824c6f1e30b85efe60831831b5f3319e786f579ed9f08844699
MD5 7c2f5cd654b7cbff0eae11749c9d0859
BLAKE2b-256 9bdce78db51de66a097b165fe9e45bfe8c689da057983e70c732637c282a46d3

See more details on using hashes here.

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

Hashes for sentinelx_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e86a5304f94ea5b3abf9f1c761ae004e45eef8526b8d54f8a7f35823ce061e62
MD5 3813f0d37b100505697eb67f321af049
BLAKE2b-256 12fb2e43801fbe44f1c1d9fbe5ac5834e0367365a089b804afdec355cf0fe672

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