@bolyra/openclaw
OpenClaw trust verification adapter for Bolyra — ZKP-native agent authentication.
Maps Bolyra's mutual ZKP handshake (Groth16) to OpenClaw's TrustVerificationResult interface, providing cryptographic agent identity verification at every OpenClaw verification point.
Install
npm install @bolyra/openclaw @bolyra/sdk
Quick Start
import { createBolyraPlugin } from '@bolyra/openclaw';
import { createHumanIdentity } from '@bolyra/sdk';
const human = await createHumanIdentity(mySecret);
const plugin = createBolyraPlugin(
human,
async (agentId) => credentialStore.get(agentId),
{ network: 'base-sepolia' }
);
openclaw.use(plugin);
How It Works
When OpenClaw calls onAgentVerify(agentId):
- Resolves the agent's Bolyra credential from your credential store
- Runs a mutual ZKP handshake (parallel Groth16 + PLONK proof generation)
- Scores the result on 5 dimensions (proof validity, expiry, permissions, freshness, scope)
- Returns a
TrustVerificationResult with score (0-100), grade (A-F), and DID
Scoring
| Proof validity | 40 | Both ZKP proofs verify |
| Credential expiry | 20 | Agent credential hasn't expired |
| Permission coverage | 20 | Agent has read/write permissions |
| Nonce freshness | 10 | Session nonce within maxProofAge |
| Scope commitment | 10 | Delegation chain initialized |
Configuration
createBolyraPlugin(human, resolver, {
network: 'base-sepolia',
minScore: 70,
maxProofAge: 300,
sdkConfig: {
rpcUrl: 'https://sepolia.base.org',
registryAddress: '0x2781...',
},
});
Standalone Verification
import { verifyAgent, computeTrustScore } from '@bolyra/openclaw';
const result = await verifyAgent(human, agentCredential, { network: 'base' });
License
Apache-2.0 — see LICENSE and NOTICE.