{"id":13865956,"url":"https://github.com/LedgerHQ/app-monero","last_synced_at":"2025-07-15T02:31:19.231Z","repository":{"id":45959868,"uuid":"95034439","full_name":"LedgerHQ/app-monero","owner":"LedgerHQ","description":"Monero wallet application for Ledger Nano S \u0026 X","archived":false,"fork":false,"pushed_at":"2024-04-09T08:41:00.000Z","size":8171,"stargazers_count":270,"open_issues_count":17,"forks_count":98,"subscribers_count":60,"default_branch":"develop","last_synced_at":"2024-04-14T10:14:31.754Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LedgerHQ.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-06-21T18:32:09.000Z","updated_at":"2024-04-23T14:19:59.446Z","dependencies_parsed_at":"2023-01-29T04:01:15.926Z","dependency_job_id":"74271d9c-dfed-44b6-b825-8f9f1488198f","html_url":"https://github.com/LedgerHQ/app-monero","commit_stats":null,"previous_names":[],"tags_count":85,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LedgerHQ%2Fapp-monero","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LedgerHQ%2Fapp-monero/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LedgerHQ%2Fapp-monero/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LedgerHQ%2Fapp-monero/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LedgerHQ","download_url":"https://codeload.github.com/LedgerHQ/app-monero/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226012173,"owners_count":17559629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-05T12:00:42.088Z","updated_at":"2025-07-15T02:31:19.118Z","avatar_url":"https://github.com/LedgerHQ.png","language":"Python","funding_links":[],"categories":["Wallets","Python"],"sub_categories":["Hardware Wallets"],"readme":"[![Ensure compliance with Ledger guidelines](https://github.com/LedgerHQ/app-monero/actions/workflows/guidelines_enforcer.yml/badge.svg?branch=develop)](https://github.com/LedgerHQ/app-monero/actions/workflows/guidelines_enforcer.yml) [![Build and run functional tests using ragger through reusable workflow](https://github.com/LedgerHQ/app-monero/actions/workflows/build_and_functional_tests.yml/badge.svg?branch=develop)](https://github.com/LedgerHQ/app-monero/actions/workflows/build_and_functional_tests.yml)\n\n# Monero Ledger App\n\nMonero wallet application for all Ledger devices.\n\n## Quick start guide\n\n### With VSCode\n\nYou can quickly setup a convenient environment to build and test your application by using [Ledger's VSCode developer tools extension](https://marketplace.visualstudio.com/items?itemName=LedgerHQ.ledger-dev-tools) which leverages the [ledger-app-dev-tools](https://github.com/LedgerHQ/ledger-app-builder/pkgs/container/ledger-app-builder%2Fledger-app-dev-tools) docker image.\n\nIt will allow you, whether you are developing on macOS, Windows or Linux to quickly **build** your apps, **test** them on **Speculos** and **load** them on any supported device.\n\n* Install and run [Docker](https://www.docker.com/products/docker-desktop/).\n* Make sure you have an X11 server running :\n    * On Ubuntu Linux, it should be running by default.\n    * On macOS, install and launch [XQuartz](https://www.xquartz.org/) (make sure to go to XQuartz \u003e Preferences \u003e Security and check \"Allow client connections\").\n    * On Windows, install and launch [VcXsrv](https://sourceforge.net/projects/vcxsrv/) (make sure to configure it to disable access control).\n* Install [VScode](https://code.visualstudio.com/download) and add [Ledger's extension](https://marketplace.visualstudio.com/items?itemName=LedgerHQ.ledger-dev-tools).\n* Open a terminal and clone `app-monero` with `git clone git@github.com:LedgerHQ/app-monero.git`.\n* Open the `app-monero` folder with VSCode.\n* Use Ledger extension's sidebar menu or open the tasks menu with `ctrl + shift + b` (`command + shift + b` on a Mac) to conveniently execute actions :\n    * Build the app for the device model of your choice with `Build`.\n    * Test your binary on [Speculos](https://github.com/LedgerHQ/speculos) with `Run with Speculos`.\n    * You can also run functional tests, load the app on a physical device, and more.\n\n:information_source: The terminal tab of VSCode will show you what commands the extension runs behind the scene.\n\n### With a terminal\n\nThe [ledger-app-dev-tools](https://github.com/LedgerHQ/ledger-app-builder/pkgs/container/ledger-app-builder%2Fledger-app-dev-tools) docker image contains all the required tools and libraries to **build**, **test** and **load** an application.\n\nYou can download it from the ghcr.io docker repository:\n\n```shell\nsudo docker pull ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest\n```\n\nYou can then enter this development environment by executing the following command from the directory of the application `git` repository:\n\n**Linux (Ubuntu)**\n\n```shell\nsudo docker run --rm -ti --user \"$(id -u):$(id -g)\" --privileged -v \"/dev/bus/usb:/dev/bus/usb\" -v \"$(realpath .):/app\" ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest\n```\n\n**macOS**\n\n```shell\nsudo docker run  --rm -ti --user \"$(id -u):$(id -g)\" --privileged -v \"$(pwd -P):/app\" ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest\n```\n\n**Windows (with PowerShell)**\n\n```shell\ndocker run --rm -ti --privileged -v \"$(Get-Location):/app\" ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest\n```\n\nThe application's code will be available from inside the docker container, you can proceed to the following compilation steps to build your app.\n\n## Compilation and load\n\nTo easily setup a development environment for compilation and loading on a physical device, you can use the [VSCode integration](#with-vscode) whether you are on Linux, macOS or Windows.\n\nIf you prefer using a terminal to perform the steps manually, you can use the guide below.\n\n### Compilation\n\nSetup a compilation environment by following the [shell with docker approach](#with-a-terminal).\n\nFrom inside the container, use the following command to build the app :\n\n```shell\nmake DEBUG=1  # compile optionally with PRINTF\n```\n\nYou can choose which device to compile and load for by setting the `BOLOS_SDK` environment variable to the following values :\n\n* `BOLOS_SDK=$NANOX_SDK`\n* `BOLOS_SDK=$NANOSP_SDK`\n* `BOLOS_SDK=$STAX_SDK`\n\nBy default this variable is set to build/load for Nano S+.\n\n### Loading on a physical device\n\nThis step will vary slightly depending on your platform.\n\n:information_source: Your physical device must be connected, unlocked and the screen showing the dashboard (not inside an application).\n\n**Linux (Ubuntu)**\n\nFirst make sure you have the proper udev rules added on your host :\n\n```shell\n# Run these commands on your host, from the app's source folder.\nsudo cp .vscode/20-ledger.ledgerblue.rules /etc/udev/rules.d/\nsudo udevadm control --reload-rules\nsudo udevadm trigger\n```\n\nThen once you have [opened a terminal](#with-a-terminal) in the `app-builder` image and [built the app](#compilation-and-load) for the device you want, run the following command :\n\n```shell\n# Run this command from the app-builder container terminal.\nmake load    # load the app on a Nano S+ by default\n```\n\n[Setting the BOLOS_SDK environment variable](#compilation-and-load) will allow you to load on whichever supported device you want.\n\n**macOS / Windows (with PowerShell)**\n\n:information_source: It is assumed you have [Python](https://www.python.org/downloads/) installed on your computer.\n\nRun these commands on your host from the app's source folder once you have [built the app](#compilation-and-load) for the device you want :\n\n```shell\n# Install Python virtualenv\npython3 -m pip install virtualenv\n# Create the 'ledger' virtualenv\npython3 -m virtualenv ledger\n```\n\nEnter the Python virtual environment\n\n* macOS : `source ledger/bin/activate`\n* Windows : `.\\ledger\\Scripts\\Activate.ps1`\n\n```shell\n# Install Ledgerblue (tool to load the app)\npython3 -m pip install ledgerblue\n# Load the app.\npython3 -m ledgerblue.runScript --scp --fileName bin/app.apdu --elfFile bin/app.elf\n```\n\n## Test\n\nThe monero app comes with functional tests implemented with Ledger's [Ragger](https://github.com/LedgerHQ/ragger) test framework.\n\n### macOS / Windows\n\nTo test your app on macOS or Windows, it is recommended to use [Ledger's VS Code extension](#with-vscode) to quickly setup a working test environment.\n\nYou can use the following sequence of tasks and commands (all accessible in the **extension sidebar menu**) :\n\n* `Select build target`\n* `Build app`\n\nThen you can choose to execute the functional tests :\n\n* Use `Run tests`.\n\nOr simply run the app on the Speculos emulator :\n\n* `Run with Speculos`.\n\n### Linux (Ubuntu)\n\nOn Linux, you can use [Ledger's VS Code extension](#with-vscode) to run the tests. If you prefer not to, open a terminal and follow the steps below.\n\nInstall the tests requirements :\n\n```shell\npip install -r tests/requirements.txt\n```\n\nThen you can :\n\nRun the functional tests (here for nanos+ but available for any device once you have built the binaries) :\n\n```shell\npytest tests/ --tb=short -v --device nanosp\n```\n\nOr run your app directly with Speculos\n\n```shell\nspeculos --model nanosp build/nanos2/bin/app.elf\n```\n\n## Documentation\n\n- Application [APDU specification](doc/developer/blue-app-commands.rst).\n\n## Continuous Integration\n\nThe flow processed in [GitHub Actions](https://github.com/features/actions) is the following:\n\n- Ledger guidelines enforcer which verifies that an app is compliant with Ledger guidelines. The successful completion of this reusable workflow is a mandatory step for an app to be available on the Ledger application store. More information on the guidelines can be found in the repository [ledger-app-workflow](https://github.com/LedgerHQ/ledger-app-workflows)\n- Code formatting with [clang-format](http://clang.llvm.org/docs/ClangFormat.html)\n- Compilation of the application for all Ledger hardware in [ledger-app-builder](https://github.com/LedgerHQ/ledger-app-builder)\n- End-to-end tests with [Speculos](https://github.com/LedgerHQ/speculos) emulator and [ragger](https://github.com/LedgerHQ/ragger) (see [tests/](tests/))\n\n## Useful links\n\n* Monero client CLI or GUI - [https://web.getmonero.org/downloads/](https://web.getmonero.org/downloads/)\n\n* Monero GitHub - [https://github.com/monero-project/monero](https://github.com/monero-project/monero)\n\n* Ledger Device Apps's developer documentation - [https://developers.ledger.com/docs/device-app/getting-started](https://developers.ledger.com/docs/device-app/getting-started)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLedgerHQ%2Fapp-monero","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLedgerHQ%2Fapp-monero","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLedgerHQ%2Fapp-monero/lists"}