LWS
← All projectsMonero LWS

Monero LWS

Light-wallet server indexing Monero chain data for remote wallet clients.

Indexing infrastructureMoneroPrivacy protocolsNormal
Repository coverage

108 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

10security candidates25second-pass queue35AI analyses
18commits · 30 days
24commits · 60 days
62commits · 180 days
108commits · 365 days
Backfill bands
Sep 27 → Mar 3144 seen3 candidatesComplete
Mar 31 → Jul 2932 seen4 candidatesComplete
Jul 29 → Aug 2812 seen2 candidatesComplete
Aug 28 → Sep 276 seen0 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

50/100 average clarity
1Strong · 80–100
8Adequate · 60–79
83Thin · 40–59
16Opaque · 0–39
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Lee *!* Clagett95934149
Evgeny211062
jpk68300057
everoddandeven300056
Lee Clagett300047
Paul V Puey100076
William Swanson100066
Analysis record

Published AI watches

Last scanned 45 minutes ago

High 71 AI analysisMessage 81 · Strong
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fixes for issues reported by llm (#297)

This commit fixes nine separate bugs in the Monero Light Wallet Server (LWS). The most serious ones are: an infinite loop when importing certain address data, a missing size limit that let unauthenticated remote clients request huge amount…

Infinite loop in database import path (DoS)Missing authentication-time message size limit on remote scanner protocol (memory exhaustion / DoS)Untrusted array reads from client in light wallet RPC
81451fb2by Lee *!* Clagett+62−129 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 28 · Opaque
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fix docker build:

This commit fixes a broken GitHub Actions workflow file that builds and publishes Docker images. It corrects a variable name (from 'platform' to 'arch') and adds a missing period at the end of the docker build command. There is no security…

10118fbdby Lee *!* Clagett+3−31 file
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fix docker action file

This commit fixes a YAML indentation error in a GitHub Actions workflow file. It changes one line of spacing so the Docker login step is correctly aligned under the job's steps list. There is no security-relevant change to the software its…

bff4b1b4by Lee *!* Clagett+1−11 file
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fix docker build command

This commit fixes a typo in a GitHub Actions workflow file. The Docker build command had an extra word ('build build') that would cause the automated Docker image build to fail. It is a routine CI/CD fix with no security relevance.

e5d4b3a7by Lee *!* Clagett+1−11 file
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fix docker build matrix

This commit fixes a GitHub Actions workflow syntax error. The 'matrix' keyword was missing its required parent 'strategy' wrapper, which would prevent Docker build jobs from running correctly. There is no security relevance in the code cha…

800e026fby Lee *!* Clagett+3−21 file
No security note in commit
Informational 12 AI analysisMessage 70 · Adequate
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Changes required due to upstream monero changes (#290)

This commit is a routine compatibility update to keep the Monero Light Wallet Server (LWS) project building against recent changes in the upstream Monero codebase. It replaces a custom macro-based type declaration (POD_CLASS) with plain C+…

No security-relevant behavioral changes in the diffChanges are limited to forward-declaration style and missing header includesNo memory safety, cryptographic, input validation, or authorization changes observed
fee43d23by Lee *!* Clagett+6−55 files
No security note in commit
Low 32 AI analysisMessage 58 · Thin
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fix LMDB (wrong) context cast, and remove now unnecessary LMDB code (#287)

This commit fixes a type-casting mistake in the Monero Light Wallet Server's database code. The program was treating its own custom database context as a different, more generic context. That mismatch could corrupt internal accounting of a…

Wrong context cast in LMDB transaction cleanup (type confusion)Custom context reference counting could be corrupted by mismatched deleterLarge code removal reduces attack surface and eliminates duplicated LMDB wrappers
eef10334by Lee *!* Clagett+155−6839 files
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fix docker conditional

This commit fixes a simple syntax typo in a GitHub Actions workflow file. The condition that decides whether to add release tags had an extra closing brace, which would cause the workflow to fail parsing rather than run incorrectly. There …

cbf6f328by Lee *!* Clagett+1−11 file
No security note in commit
Informational 15 AI analysisMessage 18 · Opaque
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Latest master

This commit only updates the 'external/monero' git submodule pointer from one commit hash to another. No actual source code changes are shown in this repository's diff. The title and message are generic ('Latest master') and give no indica…

248e9148by Lee *!* Clagett+1−11 file
No security note in commit
Low 35 AI analysisMessage 58 · Thin
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fix mempool webhook read during subaddress scanning (#283)

This commit fixes a bug in the Monero Light Wallet Server (LWS) where webhook notifications for mempool transactions could fail or behave incorrectly when scanning subaddresses. The change passes an existing database reader into the output…

Fixes a read-transaction lifecycle issue in webhook lookup during mempool scanningAdds regression test covering mempool publication + webhook deliveryCallback signature change propagates an existing storage_reader to avoid nested/duplicate reads
89e90f58by Lee *!* Clagett+354−136 files
No security note in commit
Informational 15 AI analysisMessage 53 · Thin
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Add/update newest GPG signing key (#282)

This commit simply adds a new GPG public key file to the repository. A GPG public key is used to verify that future releases or commits were genuinely signed by the project maintainer. There is no code change, no vulnerability, and no secu…

5b64b31eby Lee *!* Clagett+22−01 file
No security note in commit
Informational 11 AI analysisMessage 45 · Thin
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Another attempt at fixing external/monero pin

This commit is a routine build/maintenance change that adjusts which version of the external Monero dependency is pinned. There is no indication of any security fix, vulnerability, or user-facing behavior change. It is essentially a housek…

1e48ef2bby Lee *!* Clagett+1−11 file
No security note in commit
Informational 4 AI analysisMessage 45 · Thin
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fix external/master pin back to master

This commit appears to change which version of an external Monero component the project points to (a so-called 'git submodule pin' or dependency reference). The title says it fixes the pin for 'external/master' back to the 'master' branch.…

d7f8ef46by Lee *!* Clagett+1−11 file
No security note in commit
Moderate 56 AI analysisMessage 58 · Thin
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fix `MDB_BAD_RSLOT` in `subaddress_reader::update_reader()` causing permanently missed subaddress outputs (#278)

This commit fixes a database-handling bug in Monero Light Wallet Server (LWS). The bug caused the server to permanently miss some subaddress outputs because a read transaction was not closed before a new one was opened, triggering an LMDB …

Fixes LMDB transaction-slot error (MDB_BAD_RSLOT)Prevents permanently missed subaddress outputsChanges test expectations to reflect recovered output
38b336e2by Evgeny+8−33 files
No security note in commit
Moderate 59 AI analysisMessage 63 · Adequate
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Fix integer overflow check in subaddress handling (#264)

This commit fixes a math mistake when checking whether a user requested too many Monero subaddresses. The original code divided two numbers and compared the result to a maximum, which is the wrong way to detect overflow and could allow the…

Integer overflow check corrected from an inverted/incorrect comparison to a canonical safe division pre-checkOccurs in subaddress limit enforcement, which is a security boundary against excessive address derivationSame bug pattern present in two independent locations (storage and REST server)
33c56770by Lee *!* Clagett+2−22 files
No security note in commit
Informational 15 AI analysisMessage 38 · Opaque
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Bump branch to 1.1-alpha

This commit simply changes a version string from '1.0-alpha' to '1.1-alpha' in a single source file. There is no functional code change, no bug fix, and no security relevance visible in the diff or commit message.

fb599e8aby Lee *!* Clagett+1−11 file
No security note in commit
Informational 15 AI analysisMessage 35 · Opaque
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Bump mkdocs to regenerate

This commit changes one character in the documentation configuration file (mkdocs.yml), adding a trailing slash to the site description. It does not touch any program code, cryptographic logic, network handling, or user data. There is no s…

322f5827by Lee *!* Clagett+1−11 file
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Another publish attempt

This commit is a routine documentation-site fix. It changes how the MkDocs documentation builder is invoked in a GitHub Actions workflow (from `python3 mkdocs build` to `python3 -m mkdocs build`) and fixes a typo in the site description. T…

d86d25a7by Lee *!* Clagett+2−22 files
No security note in commit
Informational 15 AI analysisMessage 18 · Opaque
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

tweaking docs

This commit makes a trivial wording change to the project's documentation configuration file, adding a slash to the site description. There is no security relevance.

1647bdb2by Lee *!* Clagett+1−11 file
No security note in commit
Low 34 AI analysisMessage 73 · Adequate
LWS Monero LWSMonero LWS Indexing infrastructureMoneroPrivacy protocols

Add mempool support to /get_address_txs and /feed (#251)

This commit adds mempool (pending transaction) support to Monero Light Wallet Server. It lets users see unconfirmed transactions through the /get_address_txs REST endpoint and the live /feed websocket. The change also refactors how the ser…

Large feature commit (+1906/-634) touching REST, WebSocket feed, scanner, and new mempool componentRefactored transaction ownership scanning into shared ownership_test helper; reduces duplicated crypto/derivation logicMempool transactions are parsed and validated before being added to the local cache in /submit_raw_tx
a7aea46eby Lee *!* Clagett+1906−63432 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Security candidateFixes for issues reported by llm (#297)by Lee *!* Clagett · 81451fb2 · Sep 30, 2026 · 9 filesMessage 81 · StrongHigh 71Details
Commit message · Lee *!* Clagett

Fixes for issues reported by llm (#297)

* Fix infinite loop when importing lookahead address with {0,0} output
* Fix zero threads on client
* Restrict remote scanner client message sizes until authentication
* Fix untrusted array (users, blocks) reads from client
* Fix overflow check
* Harden gamma picker
* Add check for relayed flag before adding to mempool list
* Fix double response on tx parse error
* Fix erase call in remote scanning round-robin algo
* Fix mempool metadata in pessimistic state

81/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
access controlmemory safetydefensive validationsigning or wallet path
AI analysis · High 71/100

This commit fixes nine separate bugs in the Monero Light Wallet Server (LWS). The most serious ones are: an infinite loop when importing certain address data, a missing size limit that let unauthenticated remote clients request huge amounts of memory, reading untrusted array data from clients before proper validation, an incorrect overflow check when calculating subaddress counts, and a double HTTP response that could confuse clients. Several other fixes correct thread handling, mempool behavior, and a round-robin scheduling erase bug. The commit title says these issues were 'reported by llm'—likely an automated or large-language-model-assisted review—so the security relevance is acknowledged by the project author but not via a formal vendor security advisory.

Security candidateFix mempool webhook read during subaddress scanning (#283)by Lee *!* Clagett · 89e90f58 · Aug 8, 2026 · 6 filesMessage 58 · ThinLow 35Details
Commit message · Lee *!* Clagett

Fix mempool webhook read during subaddress scanning (#283)

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
privacy or spend-authorization protocol
AI analysis · Low 35/100

This commit fixes a bug in the Monero Light Wallet Server (LWS) where webhook notifications for mempool transactions could fail or behave incorrectly when scanning subaddresses. The change passes an existing database reader into the output-handling callback, so the code no longer tries to start a new read transaction inside an already-active one. This prevents potential failures or inconsistent reads during mempool webhook processing. The commit also adds tests that exercise the mempool publication path with a webhook server.

Security candidateAdd/update newest GPG signing key (#282)by Lee *!* Clagett · 5b64b31e · Aug 7, 2026 · 1 fileMessage 53 · ThinInformational 15Details
Commit message · Lee *!* Clagett

Add/update newest GPG signing key (#282)

53/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing boundary
AI analysis · Informational 15/100

This commit simply adds a new GPG public key file to the repository. A GPG public key is used to verify that future releases or commits were genuinely signed by the project maintainer. There is no code change, no vulnerability, and no security issue in the diff itself.

Security candidateAnother attempt at fixing external/monero pinby Lee *!* Clagett · 1e48ef2b · Jul 16, 2026 · 1 fileMessage 45 · ThinInformational 11Details
Commit message · Lee *!* Clagett

Another attempt at fixing external/monero pin

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
access control
AI analysis · Informational 11/100

This commit is a routine build/maintenance change that adjusts which version of the external Monero dependency is pinned. There is no indication of any security fix, vulnerability, or user-facing behavior change. It is essentially a housekeeping update to a submodule reference.

Security candidateFix external/master pin back to masterby Lee *!* Clagett · d7f8ef46 · Jul 16, 2026 · 1 fileMessage 45 · ThinInformational 4Details
Commit message · Lee *!* Clagett

Fix external/master pin back to master

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
access control
AI analysis · Informational 4/100

This commit appears to change which version of an external Monero component the project points to (a so-called 'git submodule pin' or dependency reference). The title says it fixes the pin for 'external/master' back to the 'master' branch. No actual code changes are visible, and no security-related information is provided in the commit message or materials.

Security candidateFix `MDB_BAD_RSLOT` in `subaddress_reader::update_reader()` causing permanently missed subaddress outputs (#278)by Evgeny · 38b336e2 · Jul 16, 2026 · 3 filesMessage 58 · ThinModerate 56Details
Commit message · Evgeny

Fix `MDB_BAD_RSLOT` in `subaddress_reader::update_reader()` causing permanently missed subaddress outputs (#278)

* fix: regtest
* fix: MDB_BAD_RSLOT

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
privacy or spend-authorization protocol
AI analysis · Moderate 56/100

This commit fixes a database-handling bug in Monero Light Wallet Server (LWS). The bug caused the server to permanently miss some subaddress outputs because a read transaction was not closed before a new one was opened, triggering an LMDB error (MDB_BAD_RSLOT). The fix explicitly releases the old read transaction before starting the next one. There is no direct evidence this is exploitable by an attacker; it appears to be a reliability/correctness bug.

Security candidateFix integer overflow check in subaddress handling (#264)by Lee *!* Clagett · 33c56770 · Jul 3, 2026 · 2 filesMessage 63 · AdequateModerate 59Details
Commit message · Lee *!* Clagett

Fix integer overflow check in subaddress handling (#264)

63/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
memory safetyprivacy or spend-authorization protocol
AI analysis · Moderate 59/100

This commit fixes a math mistake when checking whether a user requested too many Monero subaddresses. The original code divided two numbers and compared the result to a maximum, which is the wrong way to detect overflow and could allow the multiplication to overflow. The fix reverses the division so the check works correctly. A malicious or malformed request might have been able to bypass the subaddress limit, though the practical effect depends on what happens after the check.

Security candidatelookahead optimization for users that disabled subaddresses (#220)by Lee *!* Clagett · 6c0b957e · Dec 19, 2025 · 1 fileMessage 58 · ThinInformational 12Details
Commit message · Lee *!* Clagett

lookahead optimization for users that disabled subaddresses (#220)

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
privacy or spend-authorization protocol
AI analysis · Informational 12/100

This is a small performance optimization. When a user has disabled subaddresses, the scanner now skips a step that pre-generates future subaddress keys. This makes servers with subaddresses disabled run faster. There is no security problem visible in the change.

Security candidateAdd support for subaddress lookahead (#195)by Lee *!* Clagett · 16111cae · Dec 18, 2025 · 20 filesMessage 53 · ThinLow 39Details
Commit message · Lee *!* Clagett

Add support for subaddress lookahead (#195)

53/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
privacy or spend-authorization protocolsigning or wallet path
AI analysis · Low 39/100

This commit adds subaddress lookahead support to the Monero Light Wallet Server (LWS). It lets wallets tell the server how many future subaddresses to precompute and watch, replacing a simple on/off subaddress flag with a configurable limit. The change touches the database format, admin and REST APIs, and the block scanner. It also adds automatic approval options for account creation and import requests. There is no explicit security bug visible in the diff, but the large schema migration and new resource-limit logic introduce ordinary operational risks: a misconfigured or maliciously large lookahead could make the server precompute huge numbers of subaddresses, consuming CPU and database space. The code does add a max_subaddresses cap and clamping helpers to mitigate this.

Security candidateDon't log MDB_NOTFOUND with subaddress lookup (#208)by Lee *!* Clagett · c65a1f48 · Nov 23, 2025 · 1 fileMessage 58 · ThinInformational 17Details
Commit message · Lee *!* Clagett

Don't log MDB_NOTFOUND with subaddress lookup (#208)

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
privacy or spend-authorization protocol
AI analysis · Informational 17/100

This change stops the program from writing a scary but harmless 'not found' log message when a subaddress lookup returns no result. It is a minor cleanup that reduces log noise; it does not fix a vulnerability that an attacker could exploit.