Overview
Ledger Live is the flagship desktop and mobile experience connecting users to a hardware-secured wallet. The Developer Portal is a curated set of resources and best practices designed to help you create integrations, plugins, and services that work seamlessly with Ledger Live and Ledger hardware devices. This guide covers fundamentals — from environment setup to signing transactions, building secure flows, and deploying production-ready integrations.
Why build for Ledger Live?
Ledger Live combines a modern UI with hardware-backed key management. Building on top of Ledger Live allows your app to leverage user trust, strong key isolation, and a familiar UX. Whether you are developing a DeFi connector, token manager, or custodial reconciliation service, Ledger Live gives you a secure foundation to work from.
Who this guide is for
- Frontend and backend engineers integrating Ledger-backed signing flows.
- SDK consumers building wallets, explorers, or custodial services.
- Security engineers auditing or extending cold storage workflows.
Setup — Tools & Environment
Start by preparing a development environment with the tools Ledger recommends. A consistent environment reduces friction when connecting to devices, running emulators, and using the CLI utilities.
Prerequisites
- Ledger hardware device (Nano S, Nano X, or emulator)
- Latest Ledger Live desktop app for companion UX testing
- Node.js (LTS), Git, and a code editor
- Familiarity with Bitcoin/Ethereum transaction basics (helpful but not required)
Install recommended tools
node -v && npm -v.git clone https://example.com/ledger-examples.gitAccount Models & Key Management
Ledger devices use deterministic key derivation (BIP32/BIP44/BIP84 etc.) to expose account public keys to connected apps. Understand the account model for the chain you're targeting, including derivation paths, address types, and how token contracts are represented.
Derivation paths explained
Each blockchain has common derivation standards — for example Ethereum commonly uses m/44'/60'/0'/0/0. Ledger Live offers UX around accounts and can expose public keys for a set of derivation paths when requested.
Best practices
- Request only the minimum public key material your integration needs.
- Cache account metadata securely and refresh when the user reconnects a device.
- Offer clear UX so users know which account and derivation path they are using.
APIs, SDKs & Protocols
Ledger offers multiple entry points for integrations: the Ledger Live API, SDKs for JavaScript, TypeScript, Rust, and low-level transport protocols for talking directly to the device. This section provides a distilled overview and sample patterns.
Device transport & communication
Communication with a Ledger device typically flows over USB or BLE. The libraries provide secure transport adapters which handle framing, retries, and low-level error translation. Use the official transport libraries to avoid reimplementing USB/BLE stacks and to benefit from security fixes.
Sample transport code (JavaScript)
import TransportWebUSB from '@ledgerhq/hw-transport-webusb'
import AppEth from '@ledgerhq/hw-app-eth'
async function connect() {
const transport = await TransportWebUSB.create()
const eth = new AppEth(transport)
const address = await eth.getAddress("44'/60'/0'/0/0")
console.log(address)
}
Ledger Live API vs SDKs
Ledger Live exposes higher-level APIs for account synchronization, transaction construction, and broadcasting. SDKs wrap common flows and provide typed helpers. Choose the right layer: use the Ledger Live API when you want account sync and UX parity; use device SDKs when you need custom signing flows or alternative UIs.
Signing Flows & UX Patterns
Signing is the most critical piece of user flow design. The device will always display the transaction details and require explicit user confirmation. Design your app to make this step clear and unambiguous.
Constructing transactions
Build the transaction on your server or client, then present a summarized version to the device for signing. Keep the payload minimal and human-readable. For complex operations (multi-step contracts), provide a clear breakdown before opening the signing modal.
UX checklist before sign
- Show exact amounts, fees, and final recipient addresses.
- Explain token approvals or contract interactions in plain language.
- Provide a clear option to cancel and retry safely.
Security Considerations
Security is foundational. Ledger devices keep the user’s private keys isolated in secure hardware. Integrations must protect other aspects of the flow: transport security, server-side signing orchestration (if applicable), and metadata leakage.
Threat model & mitigations
- Transport tampering: Always use official transport libraries which include integrity checks.
- Phishing/Ux spoofing: Encourage users to verify details on the hardware screen, design clear trust indicators in your UI.
- Metadata leakage: Minimize the amount of account-related metadata you store and prefer ephemeral sessions.
Secure devops & CI
Use emulator images for CI tests. Ensure API keys and secrets are stored in secure vaults. Apply signing and audit trails to all deployment pipelines.
Examples & Recipes
Below are pragmatic examples to help you get started quickly. They follow a step-by-step pattern and are safe to run in a dev environment.
Example 1 — Connect & Read Address
Goal
Connect to a Ledger device and read the first Ethereum address.
Code
// Using TransportWebUSB + hw-app-eth
import TransportWebUSB from '@ledgerhq/hw-transport-webusb'
import AppEth from '@ledgerhq/hw-app-eth'
async function readAddress() {
const transport = await TransportWebUSB.create()
const eth = new AppEth(transport)
const { address } = await eth.getAddress("44'/60'/0'/0/0")
console.log('Address:', address)
}
Example 2 — Sign a Simple Transaction
Goal
Construct a transaction and request the Ledger device to sign it. Then broadcast via your preferred node provider.
Notes
Always display a human-friendly summary before prompting the device. The device will show exact amounts and addresses for the user to verify.
Testing & Continuous Integration
Automate your tests using the emulator to simulate device interactions. For UI tests, create mock transports that return deterministic signatures and error states so you can assert UX flows.
Emulator patterns
- Run emulator in Docker for reproducible builds.
- Use fixture-based responses for signing flows.
- Keep one end-to-end smoke test with real hardware during release cycles.
Deployment & Production Considerations
When moving to production, ensure your telemetry, logging, and error-reporting respect privacy and do not leak sensitive account identifiers. Use rate-limiting on any endpoints that trigger signing flows to prevent abuse.
Monitoring & incident response
Track device-failure rates, transport errors, and user-reported mismatches. Build a clear rollback plan for new SDK releases.
Conclusion & Next Steps
Building on Ledger Live gives you a secure foundation and a predictable UX for users who want hardware-backed signing. Use the patterns and samples in this guide to accelerate development while keeping security at the forefront.
- Clone the sample repos and run the examples locally.
- Integrate ledger transport libraries into your app and test on emulator.
- Design clear signing UX and run user tests for comprehension.