Getting started โ€” Ledger Developer Portal ๐Ÿš€

A concise, practical guide to begin building secure hardware-backed wallet integrations with Ledger.

Welcome! This page walks you through the recommended first steps to integrate Ledger hardware and SDKs into your application. You'll learn the core concepts, where to get keys and apps, how to test locally, and how to ship securely. Expect quick examples, links to resources, and helpful tips. โœ…

Overview โ€” what is the Ledger Developer Portal? ๐Ÿ“š

The Ledger Developer Portal is a central hub for developers building applications that interact with Ledger hardware devices (like Ledger Nano S / X) and Ledger software libraries. It provides SDKs, example projects, device specifications, app manifests, and guidelines for secure key management.

Key concepts to know:

  • Hardware wallet: a device that stores private keys offline and signs transactions in a trusted environment.
  • App on device: the small application (e.g., Ethereum, Bitcoin) loaded onto the Ledger device to handle a particular blockchain.
  • Host SDK: libraries (JavaScript, Kotlin, Swift, etc.) that let your app communicate with the Ledger device over USB or Bluetooth.

Quick setup โ€” prerequisites and tools โš™๏ธ

Before you begin, make sure you have:

  • Node.js (LTS) and npm or yarn for JavaScript examples.
  • A Ledger device with the Ledger Live app installed and updated firmware.
  • The Ledger Live Manager to install blockchain apps onto the device.
  • Basic familiarity with crypto wallet concepts and command-line usage.
1 โ€” Install Ledger Live
Download and open Ledger Live, connect your device, and update firmware if prompted. Install the blockchain app you'll work with (e.g., Ethereum).
2 โ€” Install host SDK
For web apps, use npm install @ledgerhq/hw-transport-webusb @ledgerhq/hw-app-eth or the appropriate transport for your environment.
3 โ€” Enable web transport
Make sure your browser supports WebUSB or use the Ledger Bridge for legacy setups.

Minimal JavaScript example

// connect to a Ledger via WebUSB
import TransportWebUSB from "@ledgerhq/hw-transport-webusb";
import Eth from "@ledgerhq/hw-app-eth";

async function getAddress() {
  const transport = await TransportWebUSB.create();
  const eth = new Eth(transport);
  const result = await eth.getAddress("44'/60'/0'/0/0");
  console.log('address', result.address);
}

getAddress().catch(console.error);

Testing and local development ๐Ÿงช

Testing wallet flows locally is essential. Use the following tips to reduce friction:

  • Use a testnet (Goerli, Sepolia, Testnet for your chain) โ€” never use mainnet accounts with development keys.
  • Run automated tests against mock transports when possible. Ledger SDKs include transport mock libraries for unit testing without a device.
  • For end-to-end flows, test with a real device and a disposable account to validate UX and signing messages.

Security checklist

  1. Never log or transmit private keys or raw seed phrases.
  2. Require user confirmation on-device for all signing actions.
  3. Use intent/transaction previews with clear UX โ€” show amounts, destination, and fees.
  4. Follow Ledger's recommended secure storage and communication guidelines from the portal.

Next steps and resources ๐Ÿ”—

From here you can:

  • Explore SDKs for other languages โ€” mobile SDKs (Android/iOS) and additional transports (BLE).
  • Study example integrations and open-source projects linked on the portal.
  • Read the app manifest and signing protocol docs to understand how messages are formatted and validated on-device.

If you're building a production integration, plan a security review and consider a third-party audit for transaction flows and key handling.