☞ The renaming of “Ledger Live” to “Ledger Wallet” is still in progress in the repos.
This page may contain references to “Ledger Live” that will be updated soon.
General architecture

- The Ledger device acts as a signing box and it defers most of the technical complexity to Ledger Wallet (Ledger’s official wallet application). Ledger Wallet contains the business logic and is (typically) a GUI, running on a computer or a phone connected to the device.
- The Ledger embedded application acts as a transaction signer key in a deterministic way. Having an embedded application publicly listed in Ledger Wallet is a mandatory requirement before getting your blockchain supported in Ledger Wallet.
- In the case of Ledger Wallet, and for performance reason, a third layer is handling the indexing of transaction for a given blockchain.

All the JavaScript code related to the Ledger Wallet applications is in the Ledger Wallet monorepository.
This library is built upon a pretty standard ES6 + Typescript stack and relies on a bunch of ledgerjs packages, RxJS 6.x, bignumber.js and React + Redux for some front-end utilities and hooks.
Coin Framework
The Coin Framework library is dedicated to coin integration. It provides utilities to help create Coin Modules with generic functions and a common interface signature.
Coin Modules
All integrated coins are implemented in their own coin module in the libs directory, following the naming convention. To be fully integrated, a libs/ledger-live-common/src/families dedicated folder needs to contain a few “glue” files - that can be shared by multiple crypto-assets that use the same implementation (i.e. Bitcoin-like coins share the same bitcoin family).
Live Common
The Common library of Ledger Wallet is called Ledger-live-common. It provides a single library compatible with both desktop and mobile version of Ledger Wallet.
It includes a CLI for testing purpose or for using Ledger Wallet features directly from a terminal (in a limited way).
It is designed to have very generic models and mechanics (for currencies, accounts, storage, synchronisation, events…) that also facilitates new blockchain integrations through flexibility.
Communication with the Device
ledgerjs is a set of packages. It allows a JavaScript
application to use the API of an embedded app. Ledger embedded apps are using APDU to
transfer data and commands to and from the external world. ledgerjs only
allows to use commands developed on the embedded app.
Communication with the different blockchains
The Ledger Wallet application will retrieve transaction history and broadcast new transactions using different explorers.
As part of a Ledger Wallet blockchain integration, you should provide an indexer allowing a Ledger Wallet user to synchronize his account in a timely manner. It can be an open source project or your own explorer.
The Ledger Wallet application uses our own explorers for Bitcoin and Ethereum forks.