A safety layer between your AI agent and its wallet.
Praxis simulates and risk-scores every spend before it signs, and writes the reasoning to a verifiable audit trail.
Agents act fast. Bad transactions move faster.
A wallet can verify a signature. It cannot decide whether an agent's reasoning was safe. Praxis adds that decision boundary before funds move.
- 01 / INTENT
The agent chooses the wrong action.
Prompt injection or faulty reasoning can redirect funds, oversize a transfer, or target an unknown recipient.
- 02 / POLICY
The transaction crosses a hard limit.
Per-transaction limits, daily limits, blocked recipients, failed simulations, and excessive gas need a gate before signing.
- 03 / EVIDENCE
The explanation disappears after execution.
Without a durable decision record, an operator can see that funds moved but cannot reconstruct the agent's intent and simulation report.
This spend never reached the wallet.
This is a real Praxis decision from Sui testnet. The intent, simulation, gate result, and durable audit evidence stay connected as one inspectable record.
The simulation scored above the block threshold.
- Step 1Intentcaptured
- Step 2Simulationrisk 90
- Step 3GateHIGH_RISK
- Step 4Decisionblocked
- Step 5AuditWalrus logged
Decision first. Signature second.
The report returns to the agent before the wallet is asked to sign, so the agent can self-correct on evidence instead of guessing.
The agent decides. The wallet keeps control.
Praxis is the evidence-producing boundary between autonomous intent and wallet authority.
Decides, but never receives the private key.
The agent submits intent and receives the simulation report before it confirms or aborts.
Simulates, scores, and enforces policy.
Seven built-in risk rules inspect the dry-run result before any request reaches signing.
Keeps signing authority.
The wallet adapter signs only after the simulation and policy gate return a proceed decision.
Records both approvals and interventions.
Walrus reasoning and a tamper-evident on-chain receipt preserve why a spend ran or stopped.
Put the report inside the agent loop.
The agent sees simulated balance changes, gas, risk findings, and the gate recommendation before it decides whether to continue.
const result = await praxis.spend({
to: recipient,
amount: 5_000_000n,
reasoning: { prompt, decision, model },
onReport: (report) =>
report.recommendation === "proceed",
});
// confirmed | aborted + simulationReport