A wallet for agents. Make payments via x402, use stablecoins, swap assets, earn yield with defi and buy tokenized stocks across the most popular chains.
Agent-Layer is a growing Python project in the AI payments / x402 ecosystem, focused on 8004, agentic-payments, agents, base. It currently has 21 GitHub stars and 3 forks, and sits alongside related tools like x402-deploy, x402-dart, skills, x402, CloddsBot, pinion-os.

For Openclaw:
npx @agentlayer.tech/wallet install --yes
For Codex:
npx @agentlayer.tech/wallet install --yes && npx @agentlayer.tech/wallet codex install --yes
For Claude Code:
npx @agentlayer.tech/wallet install --yes && npx @agentlayer.tech/wallet claude-code install --yes
Or install entirely from inside the Claude Code CLI, via the plugin marketplace (no terminal/npx needed) — two commands, then restart:
/plugin marketplace add lopushok9/Agent-Layer
/plugin install agent-wallet@agentlayer
For Hermes:
npx @agentlayer.tech/wallet install --yes && npx @agentlayer.tech/wallet hermes install --yes
AgentLayer is a beta local-first wallet and finance stack for agents.
The repository includes:
agent-wallet/ - the main wallet backend for AgentLayer.openclaw/ - the local AgentLayer bridge layer for the OpenClaw wallet integrationhermes/ - optional Hermes Agent plugin bridge for the same wallet backendcodex/ - optional Codex plugin bridge for the same wallet backendwdk-btc-wallet/ - the local Bitcoin wallet servicewdk-evm-wallet/ - the local EVM wallet serviceprovider-gateway/ - shared provider access for Solana RPC, Bags, and related finance readsmcp-server/ - the finance and crypto MCP layerThe goal is simple:
This project is in beta.
Do not treat it as a finished production wallet stack. Test every flow before relying on it.
System prerequisites:
python3node 24.xnpmInstall the local runtime:
npx @agentlayer.tech/wallet install --yes
Install the native OpenClaw plugin from ClawHub:
openclaw plugins install clawhub:@agentlayertech/agent-wallet-plugin
The ClawHub package does not replace the npm installer. npx @agentlayer.tech/wallet install --yes installs the local runtime, Python backend, and helper services. ClawHub only installs the OpenClaw plugin surface that points at that runtime.
Or install the CLI globally for shorter commands:
npm install -g @agentlayer.tech/wallet
wallet install --yes
Why install globally? Without the global install,
walletis not in yourPATHand commands likewallet update --yesreturnzsh: command not found: wallet. The global install adds thewalletbinary once; after that allwallet <cmd>shortcuts work. If you skip the global install, prefix every command withnpx @agentlayer.tech/walletinstead (see the Updating section below).
The CLI uses a versioned runtime layout:
~/.openclaw/agent-wallet-runtime/releases/<version> # immutable per-version snapshots
~/.openclaw/agent-wallet-runtime/current # symlink → active release
On first install, --yes generates local runtime secrets. The installer stores master_key and approval_secret in ~/.openclaw/sealed_keys.json; the boot key needed to unlock that sealed bundle stays in the prompt-free local fallback by default. macOS Keychain is opt-in (AGENT_WALLET_KEYSTORE_BACKEND=macos-keychain) because probing it can open a system password dialog during install or startup.
Useful CLI commands (require the global install above):
wallet status # show active runtime version and health
wallet doctor # diagnose common config problems
wallet update --yes # upgrade to the latest published version
wallet update --yes --dry-run # preview the upgrade without applying it
wallet rollback # revert to the previous release
wallet hermes install --yes # (re)connect Hermes to the current runtime
wallet codex install --yes # (re)connect Codex to the current runtime
wallet update --yes fetches the latest npm package, installs it under releases/<version>, and flips the current symlink. Python and Node dependency snapshots are reused when the dependency fingerprint has not changed, so subsequent updates are fast. All frameworks that read from current/ (Claude Code, Codex, Hermes) pick up the new code automatically on their next session start; OpenClaw requires a gateway restart to reload its TypeScript extension.
Use ClawHub when you want the plugin installed through OpenClaw:
openclaw plugins install clawhub:@agentlayertech/agent-wallet-plugin
Recommended order:
npx @agentlayer.tech/wallet install --yes.openclaw plugins install clawhub:....openclaw.json.The agent-wallet ClawHub plugin checks the standard runtime path at:
~/.openclaw/agent-wallet-runtime/current/agent-wallet
If your runtime lives elsewhere, set plugins.entries.agent-wallet.config.packageRoot explicitly.
Install from a local clone:
sh ./setup.sh
If your installed CLI is 0.1.22 or newer, use:
wallet update --yes --dry-run
wallet update --yes
If your installed CLI is older than 0.1.22, or wallet is missing, use:
npx --yes @agentlayer.tech/wallet@latest update --yes --dry-run
npx --yes @agentlayer.tech/wallet@latest update --yes
After updating, verify the active runtime:
npx --yes @agentlayer.tech/wallet@latest status --verbose
This flow keeps wallet files and sealed_keys.json in place, upgrades the runtime under ~/.openclaw/agent-wallet-runtime/releases/<version>, and reuses shared Python and Node dependency snapshots when possible.
AgentLayer keeps keys, approvals, and signing local, but the wallet can still operate through a set of registered provider-backed tools. These tools are exposed through the OpenClaw wallet plugin as explicit service integrations rather than raw shell access, config editing, or backend switching.
The x402 bundle turns the wallet into a buyer for metered APIs and paid HTTP endpoints:
x402_search_services - search x402-paid services through discovery providers such as CDP Bazaar and Agentic Market without spending funds.x402_get_service_details - resolve one discovered service or resource into a normalized detail payload before attempting payment.x402_preview_request - make an unpaid request, detect 402 Payment Required, and summarize payment terms and supported payment options.x402_pay_request - prepare or execute the paid retry through the active wallet backend. The current flow executes the Solana exact-buyer path and keeps EVM as prepare-only.This gives the wallet a direct bridge from service discovery to paid API consumption while preserving approval-token checks before execution.
The LI.FI bundle covers discovery, quote inspection, transfer tracking, and routed execution across Solana, Ethereum, and Base:
get_lifi_supported_chains - list the chains currently allowed for LI.FI routing in the wallet surface.get_lifi_quote - fetch a read-only cross-chain quote before any execution planning.get_lifi_transfer_status - inspect a routed transfer by transaction hash or LI.FI step id.swap_solana_lifi_cross_chain_tokens - preview, prepare, or execute a Solana-origin cross-chain route into Ethereum or Base.swap_evm_lifi_cross_chain_tokens - preview, prepare, or execute an EVM-origin cross-chain route across Ethereum, Base, and Solana when LI.FI returns a route.On Solana, Jupiter-backed tools cover market pricing, swaps, and Jupiter Earn vault flows:
get_solana_token_prices - fetch current Solana token pricing through Jupiter.swap_solana_tokens - preview, prepare, or execute a Jupiter-routed Solana token swap.get_jupiter_earn_tokens - list Jupiter Earn vault assets currently supported on mainnet.get_jupiter_earn_positions - inspect wallet positions in Jupiter Earn vaults.get_jupiter_earn_earnings - fetch earnings for one or more Jupiter Earn positions.jupiter_earn_deposit - preview, prepare, or execute a Jupiter Earn deposit.jupiter_earn_withdraw - preview, prepare, or execute a Jupiter Earn withdrawal.For privacy-preserving Solana payout flows, the wallet exposes a Houdini-backed bundle:
swap_solana_privately - create a preview or approved private payout through Houdini routing. The current MVP supports same-token flows such as SOL -> SOL and USDC -> USDC.continue_solana_private_swap - continue a previously created Houdini order and submit the local funding transfer to the returned deposit address.get_solana_private_swap_status - check Houdini status for an existing private payout.list_pending_solana_private_swaps - list cached pending Houdini orders for the current OpenClaw session.This flow is intentionally optimized for preview -> execute rather than adding a no-op prepare step.
Kamino integration gives the wallet a structured Solana lending surface:
get_kamino_lend_markets - list Kamino lending markets available on Solana mainnet.get_kamino_lend_market_reserves - inspect reserve metrics for one Kamino market.get_kamino_lend_user_obligations - inspect the wallet's obligations inside a Kamino market.get_kamino_lend_user_rewards - fetch the wallet's Kamino rewards summary.get_kamino_open_positions - aggregate all open Kamino positions across markets with loan details, reserve APYs, and rewards.kamino_lend_deposit - preview, prepare, or execute a lending deposit.kamino_lend_withdraw - preview, prepare, or execute a lending withdrawal.kamino_lend_borrow - preview, prepare, or execute a borrow.kamino_lend_repay - preview, prepare, or execute a repay.Flash Trade integration adds a managed perpetuals surface on Solana mainnet:
get_flash_trade_markets - list currently available Flash Trade markets.get_flash_trade_positions - inspect the wallet's open Flash Trade positions.flash_trade_open_position - preview, prepare, or execute a perp position open.flash_trade_close_position - preview, prepare, or execute a perp position close.Bags-backed tools currently cover token launch:
launch_bags_token - preview, prepare, or execute a Bags token launch with fee-share configuration.The EVM wallet surface includes named DeFi integrations on ethereum and base, without exposing arbitrary calldata execution.
Velora swap routing:
get_evm_swap_quote - fetch a read-only EVM swap quote.swap_evm_tokens - preview, prepare, or execute a routed EVM token swap.Aave V3:
get_evm_aave_account - inspect the wallet's Aave account state.get_evm_aave_reserves - fetch reserve data for supported Aave markets.get_evm_aave_positions - inspect the wallet's open Aave positions.manage_evm_aave_position - preview, prepare, or execute Aave position changes through the managed wallet flow.Lido:
get_evm_lido_overview - fetch Lido protocol overview data relevant to the wallet surface.get_evm_lido_positions - inspect the wallet's Lido positions.get_evm_lido_withdrawal_requests - inspect outstanding Lido withdrawal requests.manage_evm_lido_position - preview, prepare, or execute a Lido staking position change.manage_evm_lido_withdrawal - preview, prepare, or execute a Lido withdrawal management action.Across these service-backed flows, read operations remain directly callable, while write operations stay behind preview, explicit intent, and host-issued approval tokens before execution.
For the default Solana flow, run the installer directly:
npx @agentlayer.tech/wallet install --yes
That installs the runtime, patches the OpenClaw plugin config, generates local runtime secrets when missing, and creates the first encrypted per-user Solana mainnet wallet. The agent receives the public address and guarded wallet tools, not the private key.
BTC and EVM are separate host-side setup flows.
Bitcoin:
sh agent-wallet/scripts/setup_btc_wallet.sh
EVM:
sh agent-wallet/scripts/setup_evm_wallet.sh
That host-side bootstrap can auto-start the local wdk-evm-wallet service, create or unlock the vault wallet, bind both base and ethereum for the same local user, and patch OpenClaw config to backend=wdk_evm_local.
Advanced operators can still supply their own runtime provisioning secrets
instead of using --yes auto-generation:
export AGENT_WALLET_BOOT_KEY="$(openssl rand -base64 32)"
export AGENT_WALLET_MASTER_KEY="$(openssl rand -base64 32)"
export AGENT_WALLET_APPROVAL_SECRET="$(openssl rand -base64 32)"
npx @agentlayer.tech/wallet install --no-auto-secrets
If you prefer Python instead of openssl:
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
Run it three times and assign the outputs to:
AGENT_WALLET_BOOT_KEYAGENT_WALLET_MASTER_KEYAGENT_WALLET_APPROVAL_SECRETThese variables are provisioning inputs only. Runtime secrets are sealed into
~/.openclaw/sealed_keys.json; normal runtime execution should use
AGENT_WALLET_BOOT_KEY or AGENT_WALLET_BOOT_KEY_FILE, not direct
AGENT_WALLET_MASTER_KEY / AGENT_WALLET_APPROVAL_SECRET env loading.
{
"mcpServers": {
"agent-layer": {
"url": "https://agent-layer-production-852f.up.railway.app/mcp"
}
}
}
OpenClaw remains the primary local environment, but the repo also ships an optional Hermes Agent bridge at:
hermes/plugins/agent_wallet
It exposes a thin bridge, not a separate wallet implementation:
agent_wallet_toolsagent_wallet_invokeagent_wallet_approveagent_wallet_evm_statusagent_wallet_evm_setupInstall it by symlinking the plugin directory into Hermes:
npx @agentlayer.tech/wallet hermes install --yes
That command installs the Hermes plugin, runs hermes plugins enable agent-wallet, writes non-secret runtime paths into ~/.hermes/.env, and points Hermes at a local boot-key file. Secrets stay in the protected OpenClaw runtime paths, especially ~/.openclaw/sealed_keys.json; do not put wallet secrets into Hermes tool config.
If you install through npm, the runtime is extracted under:
~/.openclaw/agent-wallet-runtime/current
The installer then:
agent-wallet/.env from agent-wallet/.env.example if it does not existagent-wallet/.runtime-venv and installs the Python backendwdk-btc-wallet, wdk-evm-wallet, and flash-sdk-bridge~/.openclaw/openclaw.json if one does not exist~/.openclaw/sealed_keys.json~/.openclaw/openclaw.json to load the agent-wallet extension and point it at the installed runtimewallet hermes install --yes additionally connects Hermes Agent to the same runtime without copying wallet tools or policyWhen the installer reaches the final config step, the default plugin config is:
backend=solana_localnetwork=mainnetFor a fresh Solana install, wallet install --yes also provisions the first local mainnet
wallet for the configured local userId. The wallet secret stays encrypted under
~/.openclaw/users/.../wallets/; the agent-facing surface only receives the public
address and guarded wallet tools.
The installer does not:
wdk-btc-wallet servicewdk-evm-wallet servicepython3, node, or npm for youFor existing Solana installs, the runtime keeps the current identity precedence:
SOLANA_AGENT_PUBLIC_KEYprivate_key or SOLANA_AGENT_KEYPAIR_PATHOptional private Solana payout routing is also available through Houdini. To enable it, add the Houdini partner credentials to the wallet runtime:
HOUDINI_API_KEYHOUDINI_API_SECRETHOUDINI_USER_IPThe first supported flow is intentionally narrow: same-token private Solana payouts (SOL->SOL and USDC->USDC) through the existing preview/prepare/execute safety model. The runtime binds execute to the approved Houdini quoteId, creates a single private exchange, and then sends the exact deposit locally from the wallet. That removes the extra Solana batch-tx relay step and keeps signing local.
For production, prefer placing the Houdini partner secrets on provider-gateway and exposing only the authenticated Houdini relay endpoints to agent-wallet. That keeps HOUDINI_API_KEY and HOUDINI_API_SECRET out of end-user runtimes while preserving local signing.
The BTC path already has a one-command host bootstrap wrapper:
sh agent-wallet/scripts/setup_btc_wallet.sh
That flow:
user-idmainnet, testnet, or regtesthttp://127.0.0.1:8080wdk-btc-wallet/run-local.sh if the local service is not already healthybackend=wdk_btc_localBTC setup only supports localhost service URLs. The local BTC service is protected by a bearer token stored at:
~/.openclaw/wdk-btc-wallet/local-auth-token
If you need to reveal the BTC seed phrase later, that remains a host-side step:
sh agent-wallet/scripts/reveal_btc_seed.sh
The EVM runtime is installed by setup.sh, and the host-side onboarding now has the same one-command shape as BTC:
sh agent-wallet/scripts/setup_evm_wallet.sh
That flow:
user-idethereum, base, sepolia, or base-sepoliahttp://127.0.0.1:8081wdk-evm-wallet/run-local.sh if the local service is not already healthyethereum <-> base, sepolia <-> base-sepoliabackend=wdk_evm_localYou can still use the lower-level CLI if needed:
printf '%s\n' 'your-local-evm-password' | \
agent-wallet/.venv/bin/python -m agent_wallet.openclaw_cli evm-wallet-create \
--user-id your-user-id \
--password-stdin \
--config-json '{"backend":"wdk_evm_local","network":"base","wdkEvmServiceUrl":"http://127.0.0.1:8081"}'
Important EVM notes:
~/.openclaw/wdk-evm-wallet/local-auth-tokenethereum and baseethereum and exposes read-only staking APR data from Lido's public API in the overview responseThe installer defaults the plugin to solana_local on devnet.
The Solana runtime uses hardened local secrets:
AGENT_WALLET_BOOT_KEY is required by the runtimemaster_key and approval_secret should live in ~/.openclaw/sealed_keys.jsonAGENT_WALLET_MASTER_KEY and AGENT_WALLET_APPROVAL_SECRET are provisioning inputs for installer/admin flows, not long-term runtime envRead-only Solana mode:
export SOLANA_AGENT_PUBLIC_KEY='...'
Signing Solana mode can use either:
private_key stored in sealed_keys.jsonSOLANA_AGENT_KEYPAIR_PATHThe default shared path already includes:
You only need to bring your own RPC if you want to override the default route. Supported override paths are:
SOLANA_RPC_URLSOLANA_RPC_URLSALCHEMY_API_KEYHELIUS_API_KEYThe legacy global keypair auto-create flag still exists for compatibility, but normal OpenClaw onboarding should use the encrypted per-user wallet path created by the installer:
SOLANA_AUTO_CREATE_WALLET=false
The core rule is:
the agent gets wallet capabilities, not wallet ownership.
That means:
This repository is public and source-available under the PolyForm Small Business License 1.0.0.
If you are an individual developer, researcher, student, security reviewer, or hobbyist, you can:
If you are using the project for a company, the license allows use for small businesses covered by the PolyForm thresholds. If you need rights beyond that, reach out for a separate commercial license.
Turn any API or MCP server into a paid service with x402
Dart implementation of the x402 payment protocol. 🎯
AI Agent Skills for ChainStream — on-chain data, DeFi trading, x402 micropayments. 80+ API endpoints, 18 MCP tools, 4 SDK languages. ClawHub published.
Full-stack x402 SDK - add paid API monetization to any endpoint. Express middleware, React hooks, Access Pass, dynamic pricing. Solana, Base, Polygon, Arbitrum, Optimism, Avalanche, SKALE.
Open Source AI trading agent that operates autonomously across 1000+ markets - Polymarket, Kalshi, Binance, Hyperliquid, Solana DEXs, 5 EVM chains. Scans for edge, executes instantly, manages risk while you sleep. Agent commerce protocol for machine-to-machine payments. Self-hosted. Built on Claude.
Client SDK, Claude plugin and skill framework for the Pinion protocol. x402 micropayments on Base.
The AI agent with a wallet — spends USDC autonomously to get real work done. Apache-2.0, TypeScript.
Daydreams is a set of tools for building agents for commerce
A decentralized micro-settlement protocol enabling autonomous AI agents to pay publishers for premium content via Circle Programmable Wallets and x402 nanopayments.
The best way to monetize AI applications & MCP, using x402, CDP Smart Wallets & Paymaster
Command-line wallet and HTTP client for the Tempo blockchain, with built-in Machine Payments Protocol support.
Autonomous AI Agent Swarm framework with x402 self-executing wallets. Empowers LLM-driven agents to trade, bridge, and manage crypto treasuries without human intervention. The ultimate Agentic DeFi toolkit for 2026.