Real-time security layer for AI agents — intercept, evaluate, audit with post-quantum proof
Project description
QuantumCatena Sentinel SDK
Real-time security layer for AI agents.
Intercept, evaluate, and audit every action before execution —
with post-quantum cryptographic proof (Dilithium-3 NIST FIPS 204).
Install
pip install quantumcatena-sentinel
Quickstart — 3 lines
from sentinel import SentinelClient, BlockedBySentinel
sentinel = SentinelClient(api_key="sk-...", agent_id="my-agent")
@sentinel.protect(action_type="send_data", data_class="pii")
def send_email(recipient: str, subject: str, body: str) -> str:
return smtp.send(recipient, subject, body) # only runs if Sentinel allows it
try:
send_email("unknown@external.com", "Client export", "PII data...")
except BlockedBySentinel as e:
print(f"Blocked. Risk: {e.risk_score}. Reason: {e.reasoning}")
That is all. Your agent cannot bypass Sentinel.
How it works
Your Agent
|
v
sentinel.protect() <-- SDK intercepts here, BEFORE execution
|
v
Sentinel API --> Policy Engine --> Risk Scoring --> PQC Proof
|
v
ALLOW / REVIEW / BLOCK
|
v
Your function executes (or BlockedBySentinel is raised)
Usage
Decorator pattern
sentinel = SentinelClient(api_key="...", agent_id="invoice-agent")
@sentinel.protect(action_type="read_data", data_class="general")
def read_file(path: str) -> str:
with open(path) as f:
return f.read()
@sentinel.protect(action_type="transfer_funds")
def wire_transfer(amount: float, iban: str) -> str:
return bank.transfer(amount, iban)
Low-level check (inspect before acting)
decision = sentinel.check(
action_type="transfer_funds",
target="https://api.stripe.com",
payload={"amount": 50000, "iban": "DE89..."},
)
print(decision["decision"]) # allow | review | block
print(decision["risk_score"]) # 0.0 - 1.0
print(decision["pqc_proof"]) # Dilithium-3 proof (Enterprise)
SentinelToolkit — for multi-tool agents
from sentinel import SentinelClient, SentinelToolkit
sentinel = SentinelClient(api_key="...", agent_id="my-agent")
toolkit = SentinelToolkit(sentinel)
@toolkit.tool(action_type="send_data", data_class="internal")
def send_email(recipient: str, subject: str) -> str:
"""Send an internal email."""
return smtp.send(recipient, subject)
# Pass to Anthropic agent
response = client.messages.create(
tools=toolkit.anthropic_tools, # auto-generated schemas
...
)
LangChain integration
from sentinel.middleware import SentinelToolkit
toolkit = SentinelToolkit(sentinel)
lc_tools = toolkit.wrap_langchain([search, email, file_reader])
agent = initialize_agent(lc_tools, llm, ...)
Action types
| action_type | Typical use |
|---|---|
read_data |
File read, DB query |
send_data |
Email, SMS, Slack, webhook |
call_api |
External HTTP call |
execute_code |
Shell, Python exec, subprocess |
transfer_funds |
Payment, bank wire, crypto transfer |
write_data |
File write, DB insert/update |
delete_data |
File delete, DB delete |
Data classes
| data_class | Examples |
|---|---|
general |
Public info, logs, system metadata |
internal |
Internal docs, employee emails |
pii |
Names, emails, IDs, medical data |
confidential |
Trade secrets, keys, financial records |
Configuration
sentinel = SentinelClient(
api_key = "sk-...", # or SENTINEL_API_KEY env var
agent_id = "prod-agent-1",
api_url = "https://sentinel.yourdomain.com", # self-hosted / Enterprise
fail_open = True, # allow if Sentinel unreachable (default)
verbose = True, # print decisions to stdout
)
Pricing
| Tier | Price | Decisions/month | PQC Layer |
|---|---|---|---|
| Free | 0 EUR | 10,000 | Ed25519 (sim) |
| Pro | 149 EUR/mo | Unlimited | Dilithium-3 |
| Enterprise | Custom | Unlimited | Dilithium-3 + HSM |
Open source
The SDK is Apache 2.0.
The Sentinel backend is source-available for self-hosted Enterprise.
The Openclaw Shield dashboard is MIT.
Live demo: https://quantumcatena.github.io/openclaw-shield
API docs: https://sentinel-t26z.onrender.com/docs
Contact: contact@quantumcatena.io
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 quantumcatena_sentinel-0.1.0.tar.gz.
File metadata
- Download URL: quantumcatena_sentinel-0.1.0.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5604976de5187d4d80784a3e84daac16702e6b51c462a02fd451ceb09079f7c0
|
|
| MD5 |
9a6ae2b37671967f9ceab3080f381a05
|
|
| BLAKE2b-256 |
295adb02a6edc116c1054397daf35bcebfc7fdba13aaf027882ff3ba978f9135
|
File details
Details for the file quantumcatena_sentinel-0.1.0-py3-none-any.whl.
File metadata
- Download URL: quantumcatena_sentinel-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ab341bdcb7f0bbe3d9f4894522a9161596ce815a308b88e7aab36b7dd1d042a
|
|
| MD5 |
6581774e6b87e27e145ceaf036b377d7
|
|
| BLAKE2b-256 |
c93a47daf6cec58c0d1f4e628c59a676a5e8542d02f6c55e4bbccefa441b8523
|