The 3am page
Your agent created 47 duplicate Stripe refunds overnight. You got paged at 03:14. You’re the single point of failure when an LLM screws up in production.
Early access · v0.1.x
Human approval and immutable audit trail for LLM agents in production. Python and TypeScript SDKs, hash-chained logs, EU-hosted. Live in 10 minutes.
Wrap any risky tool call with @pliuz.gated(). Your agent pauses, a human (or your policy) decides in Slack, and every approval lands in a SHA-256 chained audit log your CISO can verify with one SQL call.
pip install pliuz · Apache 2.0 · Source on GitHub
from pliuz import gated
@gated(risk="high", policy="finance-approvals")
def send_payment(amount: int, recipient: str):
return stripe.transfers.create(amount=amount, destination=recipient)The problem
Your agent created 47 duplicate Stripe refunds overnight. You got paged at 03:14. You’re the single point of failure when an LLM screws up in production.
Pen-test asks: prove every agent action was either policy-approved or human-reviewed, with provenance. You have Slack history and git blame. You don’t have an answer.
You opened AGENT-447: "build approval layer (spike). 2 sprints." Six months later it’s still half-built, drowning in Slack-bot reliability tickets and policy edge cases.
The solution
pip install pliuz or npm install @pliuz/sdk. Wrap any risky tool call with @pliuz.gated(). Ships with LangChain and Vercel AI SDK adapters; the decorator is framework-agnostic, so it drops into LangGraph, CrewAI, or Claude Agent SDK loops too.
pip install pliuzYour agent pauses. Pliuz evaluates the JSONLogic policy server-side. Low-risk auto-approves. High-risk routes to your approver group in Slack with one-click approve/reject/edit buttons.
@gated(policy="finance")Every decision lands in an append-only events table chained by SHA-256. Run pliuz_verify_chain() — it returns OK or names the broken event. Export it as Ed25519-signed JSONL and verify it offline with our open-source verifier — your evidence for SOC2 / EU AI Act Article 12.
SELECT * FROM pliuz_verify_chain()Features
Wrap any tool call in Python or TypeScript with one decorator. Ships with LangChain and Vercel AI SDK adapters; the decorator is framework-agnostic, so it drops into LangGraph, CrewAI, Claude Agent SDK, or custom runners — and any HTTP-capable runner (n8n, etc.) calls the REST API directly.
@pliuz.gated()pip install pliuz · npm install @pliuz/sdk
Write JSONLogic once: amounts under €100 auto-approve, payloads matching prod-customer-* auto-reject, everything else routes to a human. Server-side evaluation, deterministic, no LLM.
{"<": [{"var": "args.amount"}, 100]}policies/finance.json
Every approval, edit, rejection, and execution lands in an append-only events table chained by SHA-256. Run pliuz_verify_chain() — it returns OK or names the broken event.
SELECT * FROM pliuz_verify_chain()public verification RPC
Every audit event carries an auto_approve_source field — policy, tool_flag, or human. When the CISO asks "why did this action go through without review?" you have an exact answer, not a postmortem.
"auto_approve_source": "policy"event.payload.auto_approve_source
Supabase Frankfurt by default. RLS enabled on all 13 tables. SDK-side redaction primitives. DPA available at /legal/dpa before contract. No LLMs in the critical path.
eu-central-1 · RLS × 13 tables
See it work
60 seconds from pip install to first human-gated tool call.
Security
FAQ
Early access · v0.1.x
Get early access — or start free today with the open-source SDKs, no email required. Running 3+ agents in production? You jump the queue.
Want to start today instead? Read the docs — pip install pliuz, Apache 2.0, no email required.