Skip to content

YazhuEth/Ledger-Claw

Repository files navigation

Ledger Claw

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.

How it works

  1. Your AI agent detects a payment is needed
  2. It calls the ledger_sign tool — a button appears in your Telegram chat
  3. You tap the button, which opens the Ledger Claw mini-app
  4. Connect your Ledger via WalletConnect and confirm the transaction
  5. The tx hash is sent back to the chat — the agent confirms it went through

Supported chains

Arbitrum · Ethereum · Optimism · Polygon · Base

All chains are enabled by default. You can toggle them via the ledger_claw_config tool.

Supported transaction types

Currently only token transfers are supported (ETH, POL, USDC, USDT). Swaps, bridges, and other transaction types will be added in future updates.

Mini-app

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.

Project structure

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.

Tests

pnpm test

Runs unit tests for the plugin's pure functions (validation, URL building, tx encoding, price lookup).

Setup

Prerequisites

  • OpenClaw with Telegram channel configured
  • A Ledger hardware wallet + Ledger Live on your phone
  • Node.js 22+, pnpm

Install the extension

openclaw plugins install @ledger-claw/plugin

The extension uses the TELEGRAM_BOT_TOKEN from your OpenClaw Telegram channel configuration.

Run the mini-app locally (development)

git clone https://github.com/YazhuEth/Ledger-Claw.git
cd Ledger-Claw
pnpm install
pnpm dev:mini-app

Create 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...

Extension tools

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)

Configuration

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: enabled to toggle, rpc for 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.

Contributing

Contributions are welcome! Feel free to open issues and pull requests.

License

MIT

About

Sign EVM transactions from Telegram using your Ledger Signer.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages