LedgerHQ / ledger-live
Mono-repository for packages related to Ledger Live and its JavaScript ecosystem.
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing LedgerHQ/ledger-live in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler view The Ledger Live JavaScript Ecosystem We are hiring, join us! π¨βπ»π©βπ» About is a **monorepository** whose purpose is to centralize all the JavaScript code related to the **Ledger Live** applications in one place. **Ledger Live** is our platform of apps and services designed specifically for seamless integration with your Ledger device. Acting as a secure gateway to the crypto ecosystem, it allows direct access to a diverse range of crypto, NFT and DeFi services. This integration ensures a safer and more user-friendly experience that address a common security issue known as 'blind signing'. Developers looking to integrate their blockchain in Ledger Live are invited to head to the **Developer Portal** where they will find the section **Blockchain Support**. Installation > π‘ **This is only a minimal setup. You will need to perform additional installation steps depending on the package you want to work on, please refer to its nested readme file.** Cloning Proto **β οΈ Important**: In order to install the right version of the tools you will need to install the toolchain manager. Please follow the instructions on the **proto** website to install it. Once you have installed , please run the following command: Dependencies Pre-requisites β’ Install a newer ruby version We recommend to use homebrew to install packages on your MacOs computer. Make sure to install Ruby in its version Put the following content to your file Reload the configuration And check the ruby version It displays the latest stable version among the one you've selected ( at the time writing) β’ Install and for on iOS β’ Downgrade the version of the gem There is known bug on the activesupport version with cocoapods (we did not dig into it), so we need to downgrade it to make it works You will have the following output Type , then And you are done ! Install dependencies Use the pnpm package manager to install the dependencies in the whole workspace: > Note: multiple postinstall steps will be triggered and fail if the applications prerequisites are not met. > You can safely ignore the errors if you do not plan to work on those apps. Optional: CLI with a Ledger device (USB) To use the **CLI** with a physical Ledger device over USB (Node-based HID transport), the native modules and must be built. By default they are not built during (so CI and most devs can install without system deps). Run once after install: On **Linux** you need system deps first: and (e.g. on Debian/Ubuntu). Common setup errors Out of sync Podfile.lock You may encounter this error when running . Try: > Note: If prompted to run do this in the ledger-live-mobile directory. Restart terminal if the error persists. Usage **Important: All the commands should be run at the root of the monorepo.** Tools We use **pnpm workspaces** and **turborepo** under the hood to handle local and external dependencies, orchestrate tasks and perform various optimizations like package hoisting or **remote caching**. For changelog generation releases and package publishing we rely on the **changesets** library. Root scripts The scripts that are defined inside the root file will use _turborepo_ under the hood and automatically perform needed tasks before running the action. Aliases To run nested scripts which are not covered at the root, you should **not** change your working directory. Every package has an **alias** defined (see application or library tables or check out the file) that you can use as a prefix when running the script from the root. **Note that when using these kinds of scripts you will have to make sure that the dependencies are built beforehand.** Scoping You can scope any _pnpm_ or _turborepo_ based script by using the flag. **This is a very powerful feature that you should look into if you are a frequent contributor.** Please check out the _pnpm_ or _turborepo_ documentation for more details (the syntax is almost similar albeit _pnpm_ being a bit more powerful). Here are some examples: Documentation Each project folder has a file which contains basic documentation. It includes background information about the project and how to setup, run and build it. Please check the **wiki** for additional documentation. For comprehensive developer documentation β including architecture, MVVM pattern, testing strategy, git conventions, and integration guides (blockchain, tokens, swap, staking, Discover/Live Apps, etc.) β visit the **Ledger Developer Portal**. Structure The sub-packages are (roughly) split into three categories. β’ Applications The applications are user-facing programs which depend on one or more libraries. Ledger Live Applications | Name | Alias | Download | | -------------------------------------------------------------------------------------------------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Ledger Live Desktop** | | Website | | **Ledger Live Mobile** | | Android / iOS | β’ Libraries Libraries serve as publicly available packages, designed for integration with other libraries or applications. These packages are deployed to the official npm repository under the organization. Ledger Live Libraries | Name | Alias | Umbrella | Package | | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **@ledgerhq/ledger-live-common** | | ----- | | ---- | ----- | ----- | ------- | | **@ledgerhq/cryptoassets** | | ledgerjs | | | **@ledgerhq/devices** | | ledgerjs | | | **@ledgerhq/errorβ¦