openclaw-iota-wallet
v0.1.2
Published
Machine-to-machine wallet plugin for OpenClaw on IOTA: bots can hold funds, pay each other, and trigger smart contracts.
Maintainers
Readme
IOTA Claw Wallet Plugin
OpenClaw plugin for IOTA wallet operations with approval-gated transaction flow.
Machine-to-machine wallet layer for the IOTA economy: autonomous bots can hold funds, pay each other, and execute smart contracts in real time.
- Plugin id:
openclaw-iota-wallet - Package:
openclaw-iota-wallet - Default network:
mainnet
Features
- Read-only wallet tools for environment, balances, and gas objects.
- Two-phase transfer flow (
prepare -> approve -> execute). - Optional dry-run before broadcast.
- Signature verification before final send.
- Strict CLI allowlist (
iota clientandiota keytoolonly). - Install bootstrap that sets
mainnetand auto-creates a first wallet address if missing.
Machine Economy Focus
openclaw-iota-wallet is built for autonomous agents that need native on-chain value transfer:
- Bot-to-bot settlement without manual payment steps.
- Smart-contract based flows such as escrow and conditional payout logic.
- Fast move from agent decision to verifiable on-chain execution.
Requirements
- OpenClaw CLI (validated with
2026.2.12). - IOTA CLI (validated with
1.16.2). - Node.js
>=18for local development.
Required IOTA CLI Surface
The plugin depends on this minimal command set:
iota client active-enviota client balanceiota client gasiota client pay-iota --serialize-unsigned-transactioniota client serialized-tx --dry-runiota client execute-signed-txiota keytool decode-or-verify-txiota keytool signiota keytool sign-kms(only for KMS signer mode)
Install in OpenClaw
openclaw plugins install <npm-spec-or-tarball>
openclaw plugins enable openclaw-iota-wallet
openclaw plugins doctorInstall behavior:
postinstallchecks foriotaCLI.- If
iotais missing,postinstallcan auto-install it from officialiotaledger/iotaGitHub releases. - Active env is switched to
mainnet. - If the keystore has no addresses, a first address is created automatically.
Optional install env vars:
IOTA_WALLET_BOOTSTRAP=0to disable bootstrap.IOTA_WALLET_AUTO_INSTALL_CLI=0to disable automatic IOTA CLI install.IOTA_CLI_VERSION=latestto choose release version for auto-install (default islatest).IOTA_CLI_INSTALL_DIR=/path/binto choose install target for auto-install (default~/.local/bin).IOTA_CLI_PATH=/custom/path/iotato use a custom CLI path.
Example Plugin Config
See examples/openclaw.config.snippet.json5 for a full example.
{
plugins: {
entries: {
"openclaw-iota-wallet": {
enabled: true,
config: {
defaultNetwork: "mainnet",
requireApproval: true,
maxTransferNanos: "1000000000"
}
}
}
}
}Registered Tools
iota_active_enviota_get_balanceiota_get_gasiota_prepare_transferiota_approve_transferiota_dry_run_transferiota_execute_transfer
How To Execute A Transfer
After plugin install, run this flow in OpenClaw:
- Verify network and funds:
iota_active_enviota_get_balance(withCoins: true)iota_get_gas(collect one or more coin object IDs forinputCoins)
- Prepare the transaction:
- Call
iota_prepare_transferwith:recipient: target0x...addressamountNanos: amount in smallest unit as numeric stringinputCoins: coin object IDs fromiota_get_gas- optional
gasBudget
- Save
draft.idfrom the response.
- Call
- Approve the draft (if
requireApproval: true):- Call
iota_approve_transferwithdraftIdandapprove: true.
- Call
- Simulate before broadcast (recommended):
- Call
iota_dry_run_transferwithdraftId.
- Call
- Execute on-chain:
- Call
iota_execute_transferwithdraftId. - Optional:
signerAddressfor local-keystore signing.signaturefor external-signature mode.
- Call
Example Tool Payloads
{
"tool": "iota_prepare_transfer",
"params": {
"recipient": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"amountNanos": "1000000000",
"inputCoins": [
"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
],
"gasBudget": "2000000"
}
}{
"tool": "iota_approve_transfer",
"params": {
"draftId": "REPLACE_WITH_DRAFT_ID",
"approve": true
}
}{
"tool": "iota_dry_run_transfer",
"params": {
"draftId": "REPLACE_WITH_DRAFT_ID"
}
}{
"tool": "iota_execute_transfer",
"params": {
"draftId": "REPLACE_WITH_DRAFT_ID"
}
}Local Development
npm install
npm run build
npm testLocal link test:
openclaw plugins install -l .
openclaw plugins enable openclaw-iota-wallet
openclaw plugins doctorSecurity Notes
- Side-effect tools are registered as optional.
requireApprovaldefaults totrue.maxTransferNanosandrecipientAllowlistenforce policy limits.- Arbitrary shell execution is blocked by command validation.
Project Docs
- Main plan:
PROJECT_PLAN.md - Release process:
docs/RELEASE_CHECKLIST.md - Change log:
CHANGELOG.md - Contributing guide:
CONTRIBUTING.md - Security policy:
SECURITY.md
License
MIT (LICENSE)
