SP
← All projectsSpecter

Specter DIY

DIY air-gapped Bitcoin hardware-wallet firmware.

BitcoinHardware walletsNormal
Repository coverage

33 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.

13security candidates5second-pass queue28AI analyses
8commits · 30 days
10commits · 60 days
12commits · 180 days
33commits · 365 days
Backfill bands
Aug 5 → Feb 618 seen6 candidatesComplete
Feb 6 → Jun 65 seen1 candidatesComplete
Jun 6 → Jul 60 seen0 candidatesComplete
Jul 6 → Aug 50 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.

66/100 average clarity
7Strong · 80–100
11Adequate · 60–79
15Thin · 40–59
0Opaque · 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.
Schnuartz AI513177
White7hat7111193
k9ert10710064
3rd Iteration515056
Tads212076
Oren111073
Schnuartz111058
Mike Tolkachev302054
maggo83200058
al-munazzim202083
Azzbo77101058
Analysis record

Published AI watches

Last scanned 0 minutes ago

Informational 15 AI analysisMessage 68 · Adequate
SP SpecterSpecter DIY BitcoinHardware wallets

Fix reproducible build (#371) (#412)

This commit fixes the firmware build process so that two people building from the same source code get the exact same binary file. Previously, the build script embedded local git details (like the repository URL, branch name, or commit has…

Reproducible build hardeningRemoval of build-environment-dependent metadata from release artifactsHash-locked dependency installation via pip --require-hashes
e4266c10by Schnuartz AI+218−196 files
No security note in commit
High 77 AI analysisMessage 93 · Strong
SP SpecterSpecter DIY BitcoinHardware wallets

Fix: Reject dead-TRNG output in get_random_bytes (#370) (#372)

This commit fixes a security bug in how Specter DIY generates random numbers for creating cryptocurrency wallet secrets. Previously, if the hardware random-number generator (TRNG) stalled or failed, the device would silently use all-zero o…

Silent use of dead TRNG output for cryptographic seed generationTRNG timeout returns 0 per byte, producing all-zero or majority-zero buffersEntropy pool was fed with dead bytes before any validation
65fcb983by White7hat7+221−73 files
Vendor flagged security relevance
High 78 AI analysisMessage 85 · Strong
SP SpecterSpecter DIY BitcoinHardware wallets

feat: Fix change-output classification to require verified descriptor derivation (#387)

This commit fixes a security bug in Specter DIY, a hardware wallet, where the device could wrongly hide a transaction output as 'change' (your own money coming back) when it actually went to an attacker or to another of your own wallet add…

Fixes incorrect change-output classification that could hide attacker-controlled or self-payment outputsAdds cryptographic verification of PSBT derivation metadata against locally stored descriptor and output scriptPubKeyAdds explicit warnings for inconsistent host-supplied change metadata
fc0e32d6by Schnuartz AI+1514−599 files
Vendor flagged security relevance
Informational 19 AI analysisMessage 65 · Adequate
SP SpecterSpecter DIY BitcoinHardware wallets

chore: Update embit to v0.8.2 (#376)

This commit updates the embedded embit cryptography library to version 0.8.2 and adds a small compatibility shim so Specter DIY can accept a new style of Bitcoin wallet descriptor that mixes fixed and multi-path keys. Most of the changes a…

Dependency update to embit v0.8.2Monkey-patch of cryptographic descriptor parsing to bypass a library validation errorNew test coverage for mixed multipath/fixed-path descriptor parsing
2ff670caby Mike Tolkachev+224−1116 files
No security note in commit
Moderate 60 AI analysisMessage 73 · Adequate
SP SpecterSpecter DIY BitcoinHardware wallets

Re-add mixed-inputs warning for multi-wallet transactions (#382)

This commit restores a security warning on the Specter DIY hardware wallet. When a user is about to sign a Bitcoin transaction that spends coins from more than one wallet, or from several unknown sources, the device now shows a clear 'mixe…

Re-adds a security warning that was previously removedMitigates multisig/mixed-input change-address attack classWarning is now displayed at the top of the confirmation screen without requiring scrolling
72234589by Schnuartz AI+283−218 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 68 · Adequate
SP SpecterSpecter DIY BitcoinHardware wallets

Bump firmware version to v1.10.3 (#351)

This commit changes a single version number string in the bootloader from v1.10.1 to v1.10.3. There is no functional code change, no bug fix, and no security-relevant behavior modification. It is purely a release version bump.

eb8397d2by k9ert+1−11 file
No security note in commit
Informational 0 AI analysisMessage 68 · Adequate
SP SpecterSpecter DIY BitcoinHardware wallets

Update bootloader submodule to latest (#350)

This commit only updates a Git submodule pointer for the bootloader to a newer commit. No actual source code changes are shown, and no verified security references were provided. There is no direct evidence in the materials that this updat…

95353b64by k9ert+1−11 file
No security note in commit
Informational 15 AI analysisMessage 53 · Thin
SP SpecterSpecter DIY BitcoinHardware wallets

Bump firmware version to v1.10.1 (#346)

This commit simply updates a hardcoded firmware version string from v1.10.0 to v1.10.1 and removes a trailing space in a comment. There is no functional code change and no security relevance visible in the diff.

df07bb65by Mike Tolkachev+2−21 file
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
SP SpecterSpecter DIY BitcoinHardware wallets

Fix: minor comment cleanups (#343)

This commit only fixes three comments in the source code: two replace the word 'he' with 'they' for inclusive language, and one corrects 'dont' to 'don't'. No executable code, logic, or security behavior was changed.

8131bc93by al-munazzim+3−32 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
SP SpecterSpecter DIY BitcoinHardware wallets

Docs: fix grammar and update LVGL library name (#342)

This commit only updates two lines in documentation files: it renames the GUI library from 'LittlevGL' to 'LVGL' and fixes a grammar typo ('splitted' to 'split'). There are no code changes and no security implications.

d6c2bb0eby al-munazzim+2−22 files
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
SP SpecterSpecter DIY BitcoinHardware wallets

release: prepare release (#340)

This commit is a routine release preparation for the Specter DIY hardware wallet. The only meaningful change is updating an embedded version string from '0100900099' to '0101000099'. There are no security fixes, new features, or behavior c…

30ebb834by k9ert+62−622 files
No security note in commit
Informational 18 AI analysisMessage 58 · Thin
SP SpecterSpecter DIY BitcoinHardware wallets

Fix #329: Hide disabled QR scanner in recovery phrase import menu (#338)

This commit fixes a UI bug in the recovery phrase import menu. Previously, the menu showed buttons for import methods (like a QR scanner) even when those methods were disabled. Now it only shows methods that are actually enabled. This is a…

UI consistency fix for disabled functionalityNo cryptographic, authentication, or authorization changesNo input validation, memory safety, or privilege changes
6bbec30aby Azzbo77+1−11 file
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
SP SpecterSpecter DIY BitcoinHardware wallets

feat: Removed ben and added k9ert keys for releasing (#306)

This commit updates the list of trusted public keys used to sign firmware releases for the Specter DIY hardware wallet. One maintainer's key (ben) was removed and another maintainer's key (k9ert) was added. There is no code change that int…

7bfd5196by k9ert+1−11 file
No security note in commit
Informational 19 AI analysisMessage 73 · Adequate
SP SpecterSpecter DIY BitcoinHardware wallets

Show Transaction Version, Locktime and inputs' sequences when signing transactions! (#321)

This commit adds more information to the transaction signing screen of the Specter DIY hardware wallet. It now shows the transaction version, locktime, and each input's sequence number, helping users spot unusual transaction settings (such…

UI now surfaces transaction version, nLockTime, and input nSequence during signingSequence values are interpreted to warn about RBF and relative locktimeLocktime is flagged when all inputs have sequence=0xFFFFFFFF (locktime disabled)
3d1bb8edby Oren+207−108 files
No security note in commit
Informational 11 AI analysisMessage 93 · Strong
SP SpecterSpecter DIY BitcoinHardware wallets

Add full M3Y support and fix QR scanning issues for GM65 and M3Y (#335)

This commit adds support for a new QR scanner model (M3Y) and fixes several QR scanning bugs for existing GM65 scanners. The changes are primarily about hardware compatibility and reliability: making sure different scanner models are detec…

No memory-safety fixes (buffer increase is functional, not overflow mitigation)No input validation or sanitization changes beyond completeness checks for QR framesNo cryptographic changes
97ab4d41by Tads+361−1222 files
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
SP SpecterSpecter DIY BitcoinHardware wallets

Add support for selecting and combining build actions (#333)

This commit is a build-system and documentation refactor. It splits a single long firmware build script into smaller selectable actions (like 'build main firmware', 'build bootloader', 'assemble', 'sign', 'hash', etc.), fixes a Dockerfile …

1f98790bby Tads+194−605 files
No security note in commit
Informational 11 AI analysisMessage 53 · Thin
SP SpecterSpecter DIY BitcoinHardware wallets

Add bootloader to upgrade binary (#323)

This commit changes a build script so that the upgrade package now includes the bootloader alongside the main application firmware, and adds a safety flag that stops the script on first error. There is no direct evidence in the commit that…

Build script now includes bootloader in upgrade binaryBuild script now fails fast with set -eNo explicit security claim in commit message or diff
ed9ad9a6by k9ert+4−21 file
No security note in commit
Informational 15 AI analysisMessage 55 · Thin
SP SpecterSpecter DIY BitcoinHardware wallets

fix: import issues (#332)

This commit fixes how the project's test scripts set up Python's module search path and how they detect a missing optional dependency. It only changes files inside the 'test/' directory, which are used for running automated tests on a regu…

5bc685c5by k9ert+16−72 files
No security note in commit
Informational 21 AI analysisMessage 58 · Thin
SP SpecterSpecter DIY BitcoinHardware wallets

Fix for newer GM65 Scanners scanning CompactSeedQR + Add "About Screen" (#299)

This commit is primarily a hardware-compatibility fix for newer GM65 QR scanners used with the Specter DIY Bitcoin hardware wallet. It adds logic to detect a specific scanner firmware version and enable a special 'RAW' mode so binary QR co…

Adds STM32 flash read/write protection status reporting (RDP level, write protection)Adds firmware boot mode detection via VTOR addressAdds bootloader lock status reporting
031d285bby 3rd Iteration+596−489 files
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
SP SpecterSpecter DIY BitcoinHardware wallets

Update build firmware.sh to add no bootloader build by default (#315)

This change simply updates the project's firmware build script and documentation to also produce a 'no bootloader' firmware image by default. It is a developer convenience for testing on development boards and does not alter any runtime co…

6f66962aby 3rd Iteration+21−03 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.

AI review queuedfeat: Fix change-output classification to require verified descriptor derivation (#387)by Schnuartz AI · fc0e32d6 · Sep 3, 2026 · 9 filesMessage 85 · StrongHigh 78Details
Commit message · Schnuartz AI

feat: Fix change-output classification to require verified descriptor derivation (#387)

Co-authored-by: Mike Tolkachev <contact@miketolkachev.dev>

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · High 78/100

This commit fixes a security bug in Specter DIY, a hardware wallet, where the device could wrongly hide a transaction output as 'change' (your own money coming back) when it actually went to an attacker or to another of your own wallet addresses. The old code trusted the host computer's claim that an output was change based only on which wallet owned the inputs. The new code independently re-derives the output address from the wallet's descriptor and only hides it as change when the math matches exactly, the descriptor has the standard two branches, and the output is on the change branch. It also warns the user when the host's metadata does not match.

AI review queuedchore: Update embit to v0.8.2 (#376)by Mike Tolkachev · 2ff670ca · Sep 3, 2026 · 16 filesMessage 65 · AdequateInformational 19Details
Commit message · Mike Tolkachev

chore: Update embit to v0.8.2 (#376)

65/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit updates the embedded embit cryptography library to version 0.8.2 and adds a small compatibility shim so Specter DIY can accept a new style of Bitcoin wallet descriptor that mixes fixed and multi-path keys. Most of the changes are build/test plumbing (submodules, paths, smoke tests) rather than a security fix. There is no direct evidence in the commit that this resolves an exploitable vulnerability.

AI review queuedRe-add mixed-inputs warning for multi-wallet transactions (#382)by Schnuartz AI · 72234589 · Sep 3, 2026 · 8 filesMessage 73 · AdequateModerate 60Details
Commit message · Schnuartz AI

Re-add mixed-inputs warning for multi-wallet transactions (#382)

Co-authored-by: Mike Tolkachev <contact@miketolkachev.dev>

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 60/100

This commit restores a security warning on the Specter DIY hardware wallet. When a user is about to sign a Bitcoin transaction that spends coins from more than one wallet, or from several unknown sources, the device now shows a clear 'mixed inputs' warning at the top of the confirmation screen. This helps protect against a known class of attack where a malicious co-signer or software wallet can trick the device into sending change to the wrong address, potentially stealing funds. The warning had existed before but was accidentally dropped during an earlier code refactor.

AI review queuedFix: minor comment cleanups (#343)by al-munazzim · 8131bc93 · Feb 10, 2026 · 2 filesMessage 80 · StrongInformational 15Details
Commit message · al-munazzim

Fix: minor comment cleanups (#343)

Co-authored-by: al-munazzim <al-munazzim@users.noreply.github.com>

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only fixes three comments in the source code: two replace the word 'he' with 'they' for inclusive language, and one corrects 'dont' to 'don't'. No executable code, logic, or security behavior was changed.

AI review queuedExpand detection of possible multisig descriptors & Add data input parsing CI tests (#301)by 3rd Iteration · a5c99266 · Oct 23, 2025 · 9 filesMessage 68 · AdequateLow 28Details
Commit message · 3rd Iteration

Expand detection of possible multisig descriptors & Add data input parsing CI tests (#301)

68/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 28/100

This commit widens the patterns that Specter DIY recognizes as a multisig wallet descriptor, so more valid wallet imports are correctly routed to the 'add wallet' flow instead of being misidentified or rejected. It also adds automated tests for parsing different kinds of incoming data. There is no direct evidence of an exploitable vulnerability being fixed; it reads as a robustness and test-coverage improvement.