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

Security candidateChange button text from 'Enter BIP-39 password' to 'Enter passphrase' (#327)by Schnuartz · 7447f04a · Nov 27, 2025 · 2 filesMessage 58 · ThinInformational 15Details
Commit message · Schnuartz

Change button text from 'Enter BIP-39 password' to 'Enter passphrase' (#327)

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
access control
AI analysis · Informational 15/100

This commit only renames user-facing button text and labels from 'BIP-39 password' to 'passphrase'. It is a terminology-only UI change with no security effect.

Lower-priorityfix: macos build (#325)by k9ert · a2395571 · Nov 24, 2025 · 1 fileMessage 48 · ThinInformational 15Details
Commit message · k9ert

fix: macos build (#325)

48/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
AI analysis · Informational 15/100

This commit adjusts compiler warning flags in the build configuration so that the project compiles on macOS. On Linux, two specific warning suppressions remain enabled; on non-Linux systems (such as macOS), those suppressions are removed because the underlying compiler warnings do not exist or behave differently. There is no security-relevant change to the firmware or application logic.

Security candidateRevert "chore: adding the bootloader to upgrade binary for next release"by k9ert · b6778187 · Nov 17, 2025 · 1 fileMessage 65 · AdequateInformational 11Details
Commit message · k9ert

Revert "chore: adding the bootloader to upgrade binary for next release"

This reverts commit 54a38094e822c42b6acaabf30a5cbbca418388ef.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
update trustboot or update path
AI analysis · Informational 11/100

This commit undoes a previous change that added the bootloader to the device's upgrade binary. It removes the bootloader from the generated upgrade file and also removes a 'set -e' safety flag from the build script. On its own, this revert does not introduce a clear security vulnerability; it is a build-script change whose security implications depend heavily on whether the bootloader is supposed to be included in upgrades.

Security candidatechore: adding the bootloader to upgrade binary for next releaseby k9ert · 54a38094 · Nov 17, 2025 · 1 fileMessage 62 · AdequateInformational 11Details
Commit message · k9ert

chore: adding the bootloader to upgrade binary for next release

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
update trustboot or update path
AI analysis · Informational 11/100

This is a build-script change for a hardware-wallet project. It adds a command-line flag so that the upgrade package generator includes the bootloader file alongside the main firmware. It also adds `set -e` so the build script stops on errors. There is no direct evidence in the commit that this fixes or introduces a security vulnerability; it appears to be a release-engineering change.

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.

Lower-priorityAdd shield lite (#310)by 3rd Iteration · 339eea9f · Oct 23, 2025 · 8 filesMessage 51 · ThinInformational 15Details
Commit message · 3rd Iteration

Add shield lite (#310)

Co-authored-by: k9ert <117085+k9ert@users.noreply.github.com>

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This commit adds documentation and hardware design files for a new, cheaper add-on board called 'Specter Shield-Lite.' It only changes README links, adds a documentation symlink, updates the website navigation, and uploads PCB design zip files and an image. There is no software code change and nothing that affects security of the device or its users.

Lower-priorityBuild docco additions (#311)by 3rd Iteration · 8f6b3bff · Oct 16, 2025 · 1 fileMessage 43 · ThinInformational 15Details
Commit message · 3rd Iteration

Build docco additions (#311)

43/100 · ThinMessage clarity
✓ Descriptive subject✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only updates the project's build documentation. It adds instructions for installing Nix on Ubuntu 24.04, explains how to start a firmware build, and clarifies how to flash the resulting file. There are no code changes and no security implications.

Security candidatechore: Get build back to work and some CI (#307)by k9ert · ce35419b · Oct 7, 2025 · 243 filesMessage 88 · StrongInformational 15Details
Commit message · k9ert

chore: Get build back to work and some CI (#307)

* fix: pin dependencies via on nix and create flake

* ci: try build

* Update flake.nix

Co-authored-by: Ruben <36157890+ubbabeck@users.noreply.github.com>

* Update shell.nix

Co-authored-by: Ruben <36157890+ubbabeck@users.noreply.github.com>

* fix: as suggested by mike

* a bit more concrete prerequisites

* nix prefixes

---------

Co-authored-by: Ruben <36157890+ubbabeck@users.noreply.github.com>

88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
access controlseed or entropy pathsigning or wallet pathboot or update pathauthentication path
AI analysis · Informational 15/100

This commit is a routine build and continuous-integration (CI) maintenance change for the Specter DIY hardware wallet project. It adds Nix package-manager files to pin build dependencies, a GitHub Actions workflow to compile the firmware, and a large amount of documentation, hardware files, and project scaffolding. There is no indication in the diff that any cryptographic, wallet, or firmware runtime code was changed in a way that introduces a security vulnerability.