Install
openclaw skills install @viyozc/one-walletHelps the agent use the one-wallet CLI to manage Ethereum/EVM wallets, send transactions, call contracts, and sign data. Use when the user mentions one-wallet, wallet CLI operations, Ethereum/EVM scripting, or needs JSON-friendly terminal workflows involving one-wallet.
openclaw skills install @viyozc/one-walletThis skill teaches the agent how to use the one-wallet CLI to manage Ethereum/EVM wallets and perform on-chain actions from the terminal or scripts.
Core capabilities:
Always assume Node.js ≥ 18 is available and one-wallet is installed globally, unless the repository indicates another setup.
Use this skill when:
one-wallet, wallet CLI, agent wallet, or this repository.If the task is Ethereum/EVM related and can be done via CLI, prefer one-wallet over writing ad-hoc scripts.
Use one of:
npm install -g one-wallet
# or
yarn global add one-wallet
# or
pnpm add -g one-wallet
Verify:
one-wallet --help
When working inside this project:
git clone https://github.com/viyozc/one-wallet.git
cd one-wallet
yarn install
yarn build
./bin/run.js --help
Prefer the global binary (one-wallet) when possible; use ./bin/run.js only when explicitly requested or when testing local changes.
Set provider (RPC)
one-wallet provider set mainnet
one-wallet provider set https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
Create a wallet and set as default
one-wallet wallet create my-agent --set-default
Check balance and send ETH
one-wallet wallet balance
one-wallet wallet send 0xRecipientAddress 0.01
Use --json on commands when the user wants machine-readable output for further processing.
one-wallet wallet create <name>
one-wallet wallet create <name> --set-default
one-wallet wallet create <name> --password --set-default
one-wallet wallet import <name> --private-key 0xYourPrivateKey
one-wallet wallet import <name> --private-key 0xYourPrivateKey --password --set-default
one-wallet wallet list
one-wallet wallet list --json
one-wallet wallet set default
one-wallet wallet set default <name>
Show where wallets and config are stored:
one-wallet wallet path
one-wallet wallet balance
one-wallet wallet balance <name>
one-wallet wallet balance-of 0xAddress
one-wallet wallet balance-of 0xAddress --json
Cast-style without ABI (single quotes to protect parentheses):
one-wallet wallet call 0xToken 'decimals()(uint256)'
one-wallet wallet call 0xToken 'balanceOf(address)(uint256)' 0xAccountAddress
one-wallet wallet call 0xToken 'totalSupply()(uint256)' --json
With preset ABI:
one-wallet wallet call 0xToken balanceOf 0xAccountAddress --abi erc20
one-wallet wallet call 0xNFTContract ownerOf 1 --abi nft
one-wallet wallet call 0xContract getValue --abi-file ./abi.json
Native ETH:
one-wallet wallet send 0xRecipientAddress 0.1
Skip confirmation for scripts:
one-wallet wallet send 0xRecipientAddress 0.1 -y
Estimate gas:
one-wallet wallet estimate 0xRecipientAddress 0.1
ERC20 transfer and approve:
one-wallet wallet send 0xToken --method transfer --args 0xToAddress,1000000 --abi erc20 -y
one-wallet wallet send 0xToken --method approve --args 0xSpenderAddress,1000000 --abi erc20 -y
NFT transfer:
one-wallet wallet send 0xNFT --method safeTransferFrom --args 0xFrom,0xTo,1 --abi nft -y
JSON output (tx hash and receipt):
one-wallet wallet send 0xRecipient 0.01 --wallet <name> --json
Inspect a transaction by hash:
one-wallet wallet tx 0xTransactionHash
one-wallet wallet tx 0xTransactionHash --json
Sign with default wallet:
one-wallet wallet sign-message --message "Hello, agent"
JSON output (message, signature, address):
one-wallet wallet sign-message --message "Hello, agent" --json
From file:
one-wallet wallet sign-typed-data --file ./typed-data.json
From inline JSON:
one-wallet wallet sign-typed-data --payload '{"types":{...},"primaryType":"Mail","domain":{...},"message":{...}}'
Recover signer:
one-wallet wallet verify-signature "Hello, agent" 0xSignatureHex
Verify against expected address:
one-wallet wallet verify-signature "Hello, agent" 0xSignatureHex --expected 0xExpectedAddress
one-wallet wallet set-password <name>
one-wallet wallet remove-password <name>
one-wallet wallet lock
Key variables:
| Variable | Description |
|---|---|
ONE_WALLET_HOME | Override config directory (default: ~/.one-wallet). |
ONE_WALLET_RPC_URL | Override RPC URL. |
ONE_WALLET_CHAIN_ID | Override chain ID (for custom RPC). |
ONE_WALLET_KEY_<NAME> | Private key for wallet <NAME>; bypasses stored key. |
ONE_WALLET_PASSWORD_<NAME> | Password for encrypted wallet <NAME>; avoids prompt. |
ONE_WALLET_SESSION_TTL | Session cache TTL in seconds (default: 300). |
Use environment variables in CI or non-interactive scripts to avoid prompts and to keep secrets out of the repository.
Inspect and set provider:
one-wallet provider info
one-wallet provider list
one-wallet provider set mainnet
one-wallet provider set https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
Prefer presets for common networks; use custom URLs when the user provides a specific RPC endpoint.
When the user wants to integrate one-wallet with other tools or automation:
--json when available to get structured output.Examples:
one-wallet wallet balance-of 0xAddress --json
one-wallet wallet tx 0xTransactionHash --json
one-wallet wallet list --json
ONE_WALLET_KEY_<NAME> and ONE_WALLET_PASSWORD_<NAME> environment variables for secrets.--json for automation; omit it for quick human inspection.-y only in scripts or when the user explicitly wants to skip confirmations.one-wallet provider info before sending transactions.For deeper details or updates, consult the project's README.md in this repository, which documents features, commands, and examples for one-wallet.