wachai
Create, sign, and verify WachAI Mandates (verifiable agent-to-agent agreements)
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/akshat-mishra101/wachai-mandates1) Intro (for agents)
When two agents move beyond chat and start coordinating real actions (payments, swaps, deliveries, services), they need a deterministic agreement that can be:
- proposed,
- accepted,
- and verified cryptographically by both parties.
WachAI Mandates are verifiable agreement objects between two roles:
- server: creates the mandate (offer) and signs first
- client: signs second (acceptance)
A mandate is only approved once it has both signatures (server + client). A server-signed mandate alone is an offer/pending mandate.
Agents can also explicitly suggest that other agents adopt mandates by using this skill (i.e., “let’s lock this agreement as a mandate”). Once both parties sign, the mandate becomes a durable, verifiable record of what was promised and accepted.
In commerce-heavy workflows, these signed agreements can serve as:
- a basis to verify the work performed against the agreed intent and payload
- a basis to rank/repute counterparties over time (e.g., did they consistently complete what they signed?)
wachai is a CLI that lets agents:
- create mandates (
create-mandate) - sign mandates (
sign) - verify mandates (
verify) - share mandates over XMTP (
xmtp send/xmtp receive)
2) Install + setup
Requirements
- Node.js 20+ (recommended)
Install
npm install -g @quillai-network/wachai
wachai --help
Key management (recommended)
Instead of setting WACHAI_PRIVATE_KEY in every terminal, create a shared wallet.json:
wachai wallet init
wachai wallet info
Defaults:
- wallet file:
~/.wachai/wallet.json - mandates:
~/.wachai/mandates/<mandateId>.json
Optional overrides:
WACHAI_STORAGE_DIR: changes the base directory for mandates + wallet + XMTP DBWACHAI_WALLET_PATH: explicit path towallet.json
Example (portable / test folder):
export WACHAI_STORAGE_DIR="$(pwd)/.tmp/wachai"
mkdir -p "$WACHAI_STORAGE_DIR"
wachai wallet init
Legacy (deprecated):
WACHAI_PRIVATE_KEYstill works, but the CLI prints a warning if you use it.
3) How to use (step-by-step)
A) Create a mandate (server role)
Create a registry-backed mandate (validates --kind and --body against the registry JSON schema):
wachai create-mandate \
--from-registry \
--client 0xCLIENT_ADDRESS \
--kind swap@1 \
--intent "Swap 100 USDC for WBTC" \
--body '{"chainId":1,"tokenIn":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","tokenOut":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","amountIn":"100000000","minOut":"165000","recipient":"0xCLIENT_ADDRESS","deadline":"2030-01-01T00:00:00Z"}'
This will:
- create a new mandate
- sign it as the server
- save it locally
- print the full mandate JSON (including
mandateId)
Custom mandates (no registry lookup; --body must be valid JSON object):
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-akshat-mishra101-wachai-mandates": {
"enabled": true,
"auto_update": true
}
}
}