ClawProof: zkML for OpenClaw agents powered by Jolt Atlas

For agents that need to prove their ML decisions are legitimate — not just claim they are. No API keys, no auth.

1
Pick a model
Your agent runs inference — authorization, trust scoring, or your own ONNX model. You get a prediction back immediately.
Try it in the Prove tab
2
Generate a zkML proof
A cryptographic proof locks the model, input, and output together. Your agent can prove it made a decision legitimately — no one can fake or alter the result.
Takes ~5–10 seconds
3
Anyone can verify
Share your receipt across platforms. Any agent or service can verify in ~80ms — without re-running the model, without trusting you.
Verification takes ~80ms
Spending guardrail
Your agent manages funds autonomously. A guardrail model decides what gets approved. With a zkML proof, you can verify the model actually ran for every transaction — your agent proves it acted within its mandate, not by arbitrary logic.
authorization model
Agent trust scoring
Your agent evaluates another agent before transacting. The zkML proof lets both parties — and any mediator — verify the trust assessment was computed by a real model, not fabricated.
agent_trust model
Portable trust score
Your agent earns TRUSTED status on Moltbook. Instead of re-proving itself on every platform, it shares a proof receipt — Molt Road, gated APIs, other agent networks can all verify in ~80ms without trusting Moltbook or re-running the model.
agent_trust model
Your own model
Your agent uses a custom model? Upload any ONNX file (up to 5MB) and generate a zkML proof for it. Other agents can verify your model's output without you revealing weights or training data.
any ONNX model
-
Total Proofs
-
Verified
-
Proving
-
Avg Prove
-
Avg Verify
Proof History
TimeModelResultConfidenceStatusProve TimeOrigin
Loading...
Select a model
Loading models...

Drop an ONNX model here

or click to browse · max 5MB · .onnx, .pt, .pkl

One-call proof (curl)

curl -X POST https://clawproof.onrender.com/prove \
  -H "Content-Type: application/json" \
  -d '{"model_id":"authorization","input":{"fields":{"budget":13,"trust":3,"amount":4,"category":1,"velocity":1,"day":2,"time":0}}}'

Look up a Moltbook agent & prove trust

# Step 1: Fetch agent profile and get bucketed fields
curl -X POST https://clawproof.onrender.com/agent-lookup \
  -H "Content-Type: application/json" \
  -d '{"agent":"https://www.moltbook.com/u/cybercentry","interaction":"comment"}'

# Step 2: Use the returned fields to generate a proof
curl -X POST https://clawproof.onrender.com/prove \
  -H "Content-Type: application/json" \
  -d '{"model_id":"agent_trust","input":{"fields":{"karma":7,"account_age":5,"follower_ratio":3,"post_frequency":2,"verification":2,"content_similarity":0,"interaction_type":1}}}'

Upload & prove your own model

curl -X POST https://clawproof.onrender.com/prove/model \
  -F "onnx_file=@model.onnx" \
  -F "input_raw=[0, 1, 2, 3]" \
  -F "input_dim=4" \
  -F 'labels=["yes","no"]'

Install the skill (OpenClaw / Moltbook)

https://raw.githubusercontent.com/hshadab/clawproof/main/SKILL.md

Python SDK

pip install clawproof

from clawproof import ClawProof
cp = ClawProof()
receipt = cp.prove_and_wait("authorization",
    fields={"budget":13,"trust":3,"amount":4,"category":1,"velocity":1,"day":2,"time":0})
print(receipt.output.label)

JavaScript SDK

npm install clawproof

import { ClawProof } from "clawproof";
const cp = new ClawProof();
const receipt = await cp.proveAndWait("authorization", {
  fields: { budget: 13, trust: 3, amount: 4, category: 1, velocity: 1, day: 2, time: 0 }
});

MCP (Claude Desktop)

{
  "mcpServers": {
    "clawproof": {
      "command": "clawproof-mcp",
      "env": { "CLAWPROOF_URL": "https://clawproof.onrender.com" }
    }
  }
}

Endpoints

GET /models · POST /prove · POST /prove/model · POST /prove/batch · POST /agent-lookup · GET /receipt/{id} · GET /receipts/recent · POST /verify · GET /badge/{id} · GET /metrics · POST /models/upload · GET /openapi.json

Supported ONNX Operations

ClawProof uses the JOLT-Atlas proving system. The atlas-onnx-tracer compiles ONNX graphs into provable circuits. Below are the operations supported by the Operator enum in the tracer.

Atlas-onnx-tracer operators (26)
  • Add, Sub, Mul, Div, Neg
  • ReLU, Tanh, Erf
  • SoftmaxAxes (scaled, axis-aware)
  • Einsum (covers MatMul, Gemm, batched attention)
  • Sum (reduction over axes)
  • Reshape, Broadcast, MoveAxis
  • Gather, Identity, Constant, Input
  • Square, Cube, Rsqrt
  • ScalarConstDiv, Clamp
  • And, Iff, IsNan
Extended ops (onnx-tracer pipeline)

The full onnx-tracer supports a much wider set via polynomial, lookup-table, and hybrid op categories:

  • Arithmetic: Add, Sub, Mul, Div, Neg, Pow, Prod
  • Activations: ReLU, LeakyReLU, Sigmoid, Tanh, Erf
  • Trig: Sin, Cos, Tan, ASin, ACos, ATan, Sinh, Cosh
  • Math: Exp, Ln, Sqrt, Rsqrt, Abs, Sign, Ceil, Floor, Round
  • Comparison: Greater, GreaterEqual, Less, LessEqual, Equals
  • Reduction: Sum, ReduceMax, ReduceMin, ReduceArgMax, ReduceArgMin, TopK
  • Pooling: MaxPool2d, SumPool, GlobalSumPool
  • Conv: Conv, DeConv, Downsample
  • Shape: Reshape, Flatten, MoveAxis, Pad, Concat, Slice, Resize
  • Indexing: Gather, GatherElements, ScatterElements, OneHot
  • Logic: And, Or, Xor, Not, Iff
  • Attention: Einsum, Softmax
Model constraints
  • ONNX format only (convert from PyTorch/TensorFlow/sklearn via /convert)
  • Max ONNX file size: 5MB
  • All inputs are cast to integer (i32) tensors
  • Trace length must accommodate model complexity (default 214)
Conversion notes (/convert)
  • Conversion produces ONNX but does not guarantee the model fits in the trace length budget
  • PyTorch models should be traced (torch.jit.trace) before upload
  • sklearn models: LogisticRegression, MLPClassifier, DecisionTree, etc.
  • TensorFlow/Keras models with custom layers may fail conversion

For the full operator source, see atlas-onnx-tracer/src/ops and onnx-tracer/src/ops.