Onchain preflight for ZeroClaw skills.
Clawmanship gives a ZeroClaw operator a small, reviewable decision before a
community skill enters a local bundle. It reads a Metaplex Core asset on Solana,
checks the declared package and observed bytes, applies a strict local policy,
and asks for approval before a live INSTALL result is handed to ZeroClaw.
From the repository root:
npm ci --ignore-scripts
npm test
npm run judgenpm run judge runs a disclosed, fixture-only smoke proof. Its deterministic
audit stub and /bin/echo stand in for the stock ZeroClaw audit, so this
command does not prove live RPC, Telegram, or a real bundle install. The output
includes the drift and reason fields:
frozen fixture: INSTALL (drift: not_applicable; reasons: none)
frozen fixture repeat: INSTALL (drift: not_applicable; reasons: none)
mutable fixture: REVIEW (drift: no_baseline; reasons: mutable_asset, unrecognized_authority)
altered frozen fixture: REJECT (drift: not_applicable; reasons: hash_mismatch, native_audit_unavailable, unsafe_archive)
judge: fixture proof passed
The fixture labels are intentional. A fixture can explain the decision but can
never authorize a handoff. The live path is documented in
docs/ZEROCLAW-SETUP.md and uses the same verifier
with finalized Solana mainnet reads.
- Send one asset address to a private ZeroClaw Telegram channel.
- ZeroClaw calls
clawmanship__stage_request, a structured built-in file write with a locked path, then calls the zero-argumentclawmanship__inspecttool. The fixedclawpf preflight --stagedcommand validates and consumes the staged content, writes the locked request file, and runs the read-only preflight. The private channel runs one worker so separate Telegram turns cannot cross-wire the fixed staging path. The address never enters shell source. - The receipt is
INSTALL,REVIEW, orREJECT, with the observed hash, length, drift, authorities, policy reasons, and claim limits. - An
INSTALLreceipt meansverified_eligible_not_installed. It does not install anything or create a reservation. - A later install request must pass a native operator-approved intent before a reservation can be created.
- Telegram approval is required before the exact reserved bytes enter the
clawmanship_approvedZeroClaw bundle.
docs/ARCHITECTURE.mdmaps the one decision path.docs/CUSTODY.mddefines the T0 read boundary.docs/EVIDENCE.mdseparates live evidence from fixtures.docs/THREAT-MODEL.mdstates the custody and trust boundaries.docs/LIMITATIONS.mdlists what anINSTALLresult does not prove.docs/OPERATIONS.mdcovers reservation and uncertain handoff recovery.docs/provenance/gitlana.mdrecords the adapted format boundary and license.
The copy-and-paste guide covers Node 22, the pinned ZeroClaw binary, Ollama, Telegram pairing, the native skill audit, and the live demo. It keeps the bot token in the operator's private configuration and never asks for it in source or chat.
INSTALL means the observed asset matched the strict policy and passed the
configured ZeroClaw package audit. It does not prove publisher identity,
harmless runtime behavior, source reproducibility, consensus beyond the chosen
RPC observation, or production readiness. Clawmanship has T0 read custody and
does not create wallets, sign transactions, spend funds, or write onchain.
npm run check
npm test
npm run judge
npm run test:livenpm run test:live uses the pinned .tools/zeroclaw binary and the
secret-free .clawpf/skill-audit-config created by npm run setup:local; it
also needs network access and a working Solana mainnet RPC. The other three
commands are local and deterministic.
Clawmanship is MIT licensed. Runtime and format attributions are in
THIRD_PARTY_NOTICES.md.