Monero lightwallet project.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lza_menace e83b9d964b update readme 4 months ago
lwsadmin htmx (#1) 4 months ago
.dockerignore change db storage 9 months ago
.gitignore adding mymonero-web 9 months ago
Makefile use separate compose for pushing images 9 months ago update readme 4 months ago
docker-compose.yaml htmx (#1) 4 months ago
env.example fix path ref 9 months ago
prod.compose.yaml update compose files 4 months ago
release.compose.yaml change db storage 9 months ago update compose files 4 months ago


Monero lightwallet project. Packages the following services in one package:

  • monero-lws by vtnerd - scans your wallet's view keys in the background
  • lwsadmin by lza_menace - backend CRUD app for managing the LWS backend
  • monerod by The Monero Project - node for syncing Monero blockchain transactions
  • mymonero-web by MyMonero but forked and cleaned up for personal use by CryptoGrampy - the web wallet client


The default compose stack pulls in images which were pre-built for ease of use. See the development section to build everything locally.

Otherwise, clone the repo and run: docker-compose up -d


Built on Ubuntu 22.04

  1. Install packages
  2. Clone the repo
  3. Clone other projects
  4. Build container images
  5. Run containers
  6. Initialize admin - note address and key
# 1
sudo apt install docker-compose python3 python3-venv make

# 2
git clone && cd monero-lw

# 3
git clone --recursive --branch develop
git clone
git clone

# 4
docker-compose build # builds images from the nested repos

# 5
docker-compose up -d

# 6
docker exec -ti monero-lws monero-lws-admin create_admin

Proceed to setup your user at - use the LWS admin address and key from # 6.

Start adding wallets.


accept_requests: {"type": "import"|"create", "addresses":[...]}
add_account: {"address": ..., "key": ...}
list_accounts: {}
list_requests: {}
modify_account_status: {"status": "active"|"hidden"|"inactive", "addresses":[...]}
reject_requests: {"type": "import"|"create", "addresses":[...]}
rescan: {"height":..., "addresses":[...]}
webhook_add: {"type":"tx-confirmation", "address":"...", "url":"...", ...} with optional fields:
    token: A string to be returned when the webhook is triggered
    payment_id: 16 hex characters representing a unique identifier for a transaction