Sign on-chain transactions from Telegram using your Ledger hardware wallet.
Disclaimer — Ledger Claw is an independent community project, not an official Ledger product.
Ledger Claw is an OpenClaw extension that lets your AI agent trigger EVM payments directly in a Telegram conversation. When a transaction is needed, the agent sends a button — you tap it, connect your Ledger via WalletConnect, and sign. Your keys never leave the device.
- Your AI agent detects a payment is needed
- It calls the
ledger_signtool — a button appears in your Telegram chat - You tap the button, which opens the Ledger Claw mini-app
- Connect your Ledger via WalletConnect and confirm the transaction
- The tx hash is sent back to the chat — the agent confirms it went through
Arbitrum · Ethereum · Optimism · Polygon · Base
All chains are enabled by default. You can toggle them via the ledger_claw_config tool.
Currently only token transfers are supported (ETH, POL, USDC, USDT). Swaps, bridges, and other transaction types will be added in future updates.
The mini-app is deployed at https://ledger-claw.vercel.app and is used by default when the plugin sends a signing or connect request.
If you want full control, you can audit the source code in packages/mini-app/, deploy your own instance, and point the plugin to it via the miniAppUrl config in your OpenClaw plugin settings.
packages/
├── mini-app/ # Telegram Mini App (React + Vite)
├── ledger-claw-plugin/ # OpenClaw plugin (tools + config)
├── tests/ # Unit tests (vitest)
└── test-bot/ # Dev-only Telegram bot for testing the mini-app
The test-bot is a development utility only — it simulates signing/connect requests to test the mini-app locally. It is not part of the plugin.
pnpm testRuns unit tests for the plugin's pure functions (validation, URL building, tx encoding, price lookup).
- OpenClaw with Telegram channel configured
- A Ledger hardware wallet + Ledger Live on your phone
- Node.js 22+, pnpm
openclaw plugins install @ledger-claw/pluginThe extension uses the TELEGRAM_BOT_TOKEN from your OpenClaw Telegram channel configuration.
git clone https://github.com/YazhuEth/Ledger-Claw.git
cd Ledger-Claw
pnpm install
pnpm dev:mini-appCreate a .env file at the root (see .env.example):
VITE_WALLETCONNECT_PROJECT_ID=your_project_id
Get a WalletConnect project ID at cloud.walletconnect.com.
To also run the test-bot (pnpm dev:test-bot), add:
BOT_TOKEN=your_bot_token
MINI_APP_URL=https://ledger-claw.vercel.app
TEST_RECIPIENT=0x...
| Tool | Description |
|---|---|
ledger_sign |
Send a transaction for Ledger signing |
ledger_connect |
Connect a Ledger to get the wallet address |
ledger_claw_config |
Read/update config (threshold, chains, RPCs, wallets) |
ledger_claw_contacts |
Manage saved contacts (add, remove, resolve by name) |
ledger_claw_rpc |
Check balance or verify a transaction on-chain |
get_token_price |
Get the current USD price of a token (ETH, POL, USDC, USDT) |
token_to_smallest_unit |
Convert a token amount to hex (ETH, POL, USDC, USDT) |
The extension stores its config in ~/.ledger-claw/config.json (created automatically on first use):
{
"requireSigningAbove": "0.00",
"wallets": [],
"chains": {
"arbitrum": { "enabled": true, "rpc": "https://arb1.arbitrum.io/rpc" },
"ethereum": { "enabled": true, "rpc": "https://eth.llamarpc.com" },
"optimism": { "enabled": true, "rpc": "https://mainnet.optimism.io" },
"polygon": { "enabled": true, "rpc": "https://1rpc.io/matic" },
"base": { "enabled": true, "rpc": "https://mainnet.base.org" }
},
"contacts": {}
}requireSigningAbove— ETH threshold for requiring Ledger signing ("0.00"= always sign)wallets— saved wallets for balance checks (e.g.[{ "label": "Main", "address": "0x..." }]). Optional — not required for signing.chains— per-chain config:enabledto toggle,rpcfor the RPC endpoint (changeable if one goes down)contacts— saved contacts for quick transfers (e.g.{ "Jean": { "address": "0x..." } })
All settings can be modified by the AI via the ledger_claw_config and ledger_claw_contacts tools, or manually in the file.
Contributions are welcome! Feel free to open issues and pull requests.
MIT
