Public record
Software health reportschema 0.11.0 · metrics 1.13.0 · 2026-07-17 10:09 UTC

trezor / trezor-firmware

:lock: Trezor Firmware Monorepo

C · Python · RustCustom license★ 1,754 stars⑂ 780 forkssince Apr 2019View on GitHub ↗

trezor/trezor-firmware holds a health index of 75 out of 100, placing it in the Good band. It scores highest on Engineering Quality (90/100) and lowest on Security (59/100). It was last updated today. 5 contributors account for most of its recent work.

75
overall / 100
Good

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

75
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

TrezorOrganization
1,238 followers67 public repossince Apr 2013

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
PyPITrezorCryptopoints to another repo — not scored0.0.62642704 days ago
PyPItrezor0.20.119,7376166 days agotrezorhardwarewalletcryptocurrencybitcoinethereum

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

60Moderate · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
36/36Commit cadence — 52/52 weeks with commits
18/18Commit volume — 2,511 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year2,511
human_commit_share
days_since_last_push0
active_weeks_last_year52
How it's scored
0/27Ships releases — no releases published
0/36Release recency — no releases
0/27Release cadence — no releases
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count0
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

78Good · 18% of overall
How it's scored
52.6/60Stars — 1,754 stars
24.1/25Forks — 780 forks
10.2/15Watchers — 68 watchers
Inputs used
forks780
stars1,754
watchers68
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
16.9/22.5License — license file present, not a recognized license
18/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
6.3/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateno
has_code_of_conductno
has_pull_request_templateyes
How it's scored
57.3/80Monthly downloads — 19,737 downloads/month across pypi
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagestrezor
dependents
ecosystemspypi
total_downloads
monthly_downloads19,737
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

86Excellent · 24% of overall
How it's scored
45.9/54Bus factor — 5 contributor(s) cover half of all commits
17.1/22.5Commit distribution — top contributor authored 24% of commits
13.5/13.5Contributor breadth — 100 contributors
10/10OpenSSF Scorecard: Contributors — project has 36 contributing companies or organizations
Inputs used
bus_factor5
contributors_sampled100
top_contributor_share0.241
How it's scored
37/46.8Issue resolution — 79% of issues closed
32.3/38.3PR acceptance — 3,829/4,529 decided PRs merged
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Inputs used
merged_prs3,829
open_issues535
closed_issues2,039
issue_closed_ratio0.792
closed_unmerged_prs700
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
22.2/25Owner reach — 1,238 followers of trezor
25/25Track record — 67 public repos, account ~13 yr old
Inputs used
followers1,238
owner_typeOrganization
is_verified
owner_logintrezor
public_repos67
account_age_days4,842
How it's scored
25/25Published & resolvable — 1 package(s) on pypi
35/35Publish recency — latest publish 66 days ago
20/20Version history — 61 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagestrezor
ecosystemspypi
any_deprecatedno
min_days_since_publish66

Engineering Quality

Are baseline engineering and documentation practices in place?

90Excellent · 20% of overall
How it's scored
24/24CI workflows — 15 workflow(s)
24/24Tests present
16/16Linter config — .pylintrc, tox.ini
0/9.6Pre-commit hooks
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 20 out of 20 merged PRs checked by a CI test -- score normalized to 10
Inputs used
has_ciyes
has_testsyes
has_editorconfigyes
has_linter_configyes
has_precommit_configno

Documentation

90Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://trezor.io
10/10Repository description
10/10Topics — 10 topics
0/10Wiki
Inputs used
topicstrezor, micropython, python, firmware, bitcoin, wallet, rust, c, cryptography, cryptocurrency
has_wikino
homepagehttps://trezor.io
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

59Moderate · 16% of overall
How it's scored
6/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — no data
2.5/2.5CI-Tests — 20 out of 20 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 36 contributing companies or organizations
0/10Dangerous-Workflow — dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
5/5Fuzzing — project is fuzzed
2.2/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — no data
4.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 20 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate5.9
Excluded from scoring (no data or not applicable): branch_protection, packaging, signed_releases. Remaining weights renormalized.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score.

67Moderate · 0% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
0/40Legible commit history — no data
Inputs used
has_llms_txtno
legible_history_share
agent_instruction_files
agent_instruction_max_bytes
Excluded from scoring (no data or not applicable): Legible commit history. Remaining weights renormalized.
How it's scored
18/18One-command bootstrap — Makefile, ci/hardware_tests/tpmb/Makefile, common/protob/Makefile, common/udev/dist/Makefile, core/Makefile, core/embed/projects/bootloader/protob/pb/Makefile, crypto/Makefile, legacy/Makefile, legacy/bootloader/Makefile, legacy/demo/Makefile, legacy/emulator/Makefile, legacy/firmware/Makefile, legacy/firmware/protob/Makefile, legacy/gen/Makefile, legacy/intermediate_fw/Makefile, python/Makefile, rust/Makefile, storage/tests/Makefile, storage/tests/c/Makefile, storage/tests/c0/Makefile, storage/tests/c3/Makefile, tests/fido_tests/u2f-tests-hid/Makefile
22/22Automated tests
11/11Lint / format config — .pylintrc, tox.ini
11/11Static type checking — core/pyrightconfig.json, pyrightconfig.json, python/pyrightconfig.json, python/src/trezorlib/py.typed
10/10Reproducible environment — Dockerfile, Nix, lockfile
0/10Demonstrated agent practice — no data
0/8Automated maintenance — no data
9/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
Inputs used
has_nixyes
has_testsyes
lockfilesCargo.lock, uv.lock
has_dockerfileyes
typed_languageyes
bootstrap_filesMakefile, ci/hardware_tests/tpmb/Makefile, common/protob/Makefile, common/udev/dist/Makefile, core/Makefile, core/embed/projects/bootloader/protob/pb/Makefile, crypto/Makefile, legacy/Makefile, legacy/bootloader/Makefile, legacy/demo/Makefile, legacy/emulator/Makefile, legacy/firmware/Makefile, legacy/firmware/protob/Makefile, legacy/gen/Makefile, legacy/intermediate_fw/Makefile, python/Makefile, rust/Makefile, storage/tests/Makefile, storage/tests/c/Makefile, storage/tests/c0/Makefile, storage/tests/c3/Makefile, tests/fido_tests/u2f-tests-hid/Makefile
has_devcontainerno
has_linter_configyes
typecheck_configscore/pyrightconfig.json, pyrightconfig.json, python/pyrightconfig.json, python/src/trezorlib/py.typed
agent_commit_share
toolchain_manifests
dependency_bot_commit_share
Excluded from scoring (no data or not applicable): Demonstrated agent practice, Automated maintenance. Remaining weights renormalized.
How it's scored
45/45Type-checkable code — C (statically typed)
54.1/55Manageable file sizes — 51/3,121 source files over 60KB
Inputs used
primary_languageC
largest_source_bytes2,667,011
source_files_sampled3,121
oversized_source_files51
How it's scored
40/40API schema (OpenAPI/GraphQL/proto) — common/protob/messages-benchmark.proto, common/protob/messages-bitcoin.proto, common/protob/messages-ble.proto, common/protob/messages-bootloader.proto, common/protob/messages-cardano.proto, common/protob/messages-common.proto, common/protob/messages-crypto.proto, common/protob/messages-debug.proto, common/protob/messages-definitions.proto, common/protob/messages-eos.proto, common/protob/messages-ethereum-eip712.proto, common/protob/messages-ethereum.proto, common/protob/messages-evolu.proto, common/protob/messages-management.proto, common/protob/messages-monero.proto, common/protob/messages-nem.proto, common/protob/messages-nostr.proto, common/protob/messages-ripple.proto, common/protob/messages-solana.proto, common/protob/messages-stellar.proto, common/protob/messages-telemetry.proto, common/protob/messages-tezos.proto, common/protob/messages-thp.proto, common/protob/messages-tron.proto, common/protob/messages-webauthn.proto, common/protob/messages.proto, common/protob/options.proto, core/embed/projects/bootloader/protob/pb/messages-debug.proto, core/embed/projects/bootloader/protob/pb/messages.proto, legacy/firmware/protob/messages-bitcoin.proto, legacy/firmware/protob/messages-common.proto, legacy/firmware/protob/messages-crypto.proto, legacy/firmware/protob/messages-debug.proto, legacy/firmware/protob/messages-definitions.proto, legacy/firmware/protob/messages-ethereum.proto, legacy/firmware/protob/messages-management.proto, legacy/firmware/protob/messages-nem.proto, legacy/firmware/protob/messages-stellar.proto, legacy/firmware/protob/messages-thp.proto, legacy/firmware/protob/messages.proto, legacy/firmware/protob/options.proto, rust/trezor-thp/examples/host-cli/pb/messages-common.proto, rust/trezor-thp/examples/host-cli/pb/messages-management.proto, rust/trezor-thp/examples/host-cli/pb/messages-thp.proto, rust/trezor-thp/examples/host-cli/pb/messages.proto, rust/trezor-thp/examples/host-cli/pb/options.proto
0/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalno
api_schema_filescommon/protob/messages-benchmark.proto, common/protob/messages-bitcoin.proto, common/protob/messages-ble.proto, common/protob/messages-bootloader.proto, common/protob/messages-cardano.proto, common/protob/messages-common.proto, common/protob/messages-crypto.proto, common/protob/messages-debug.proto, common/protob/messages-definitions.proto, common/protob/messages-eos.proto, common/protob/messages-ethereum-eip712.proto, common/protob/messages-ethereum.proto, common/protob/messages-evolu.proto, common/protob/messages-management.proto, common/protob/messages-monero.proto, common/protob/messages-nem.proto, common/protob/messages-nostr.proto, common/protob/messages-ripple.proto, common/protob/messages-solana.proto, common/protob/messages-stellar.proto, common/protob/messages-telemetry.proto, common/protob/messages-tezos.proto, common/protob/messages-thp.proto, common/protob/messages-tron.proto, common/protob/messages-webauthn.proto, common/protob/messages.proto, common/protob/options.proto, core/embed/projects/bootloader/protob/pb/messages-debug.proto, core/embed/projects/bootloader/protob/pb/messages.proto, legacy/firmware/protob/messages-bitcoin.proto, legacy/firmware/protob/messages-common.proto, legacy/firmware/protob/messages-crypto.proto, legacy/firmware/protob/messages-debug.proto, legacy/firmware/protob/messages-definitions.proto, legacy/firmware/protob/messages-ethereum.proto, legacy/firmware/protob/messages-management.proto, legacy/firmware/protob/messages-nem.proto, legacy/firmware/protob/messages-stellar.proto, legacy/firmware/protob/messages-thp.proto, legacy/firmware/protob/messages.proto, legacy/firmware/protob/options.proto, rust/trezor-thp/examples/host-cli/pb/messages-common.proto, rust/trezor-thp/examples/host-cli/pb/messages-management.proto, rust/trezor-thp/examples/host-cli/pb/messages-thp.proto, rust/trezor-thp/examples/host-cli/pb/messages.proto, rust/trezor-thp/examples/host-cli/pb/options.proto

Key facts

1,754GitHub stars
100contributors
2,511commits, last 12 months
0days since last push
0releases
5bus factor
535open issues
PyPIpackage ecosystems

Data collection warnings

  • pypi package 'TrezorCrypto' points at a different repository (https://github.com/zebra-lucky/trezor-crypto); excluded from ecosystem scoring
  • Could not fetch pypi package 'trezor-firmware' from its registry

More detail

OpenSSF Scorecard 5.9 / 10
5.9aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-17 10:09 UTC

8Binary-Artifactsbinaries present in source code
n/aBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests20 out of 20 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 36 contributing companies or organizations
0Dangerous-Workflowdangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
10Fuzzingproject is fuzzed
9Licenselicense file detected
10Maintained30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10
n/aPackagingpackaging workflow not detected
9Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 9
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
n/aSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities20 existing vulnerabilities detected
Direct dependencies 69
RegistryPackageVersion constraintManifest
PyPItrezorpyproject.toml
PyPItvlpyproject.toml
PyPIsconspyproject.toml
PyPIprotobuf==6.33.5pyproject.toml
PyPInanopb>=0.4.3,<0.5pyproject.toml
PyPIpytest>=9.0.3,<10pyproject.toml
PyPIcoverage==7.13.5pyproject.toml
PyPIpytest-orderingpyproject.toml
PyPIpytest-random-orderpyproject.toml
PyPIpytest-timeoutpyproject.toml
PyPIpytest-xdistpyproject.toml
PyPItoxpyproject.toml
PyPIdominatepyproject.toml
PyPIpyserialpyproject.toml
PyPImnemonic>=0.21,<0.22pyproject.toml
PyPIshamir-mnemonic>=0.3.0,<0.4pyproject.toml
PyPIslip10>=1.0.1,<2pyproject.toml
PyPIfido2>=0.8.0,<0.9pyproject.toml
PyPIpython-bitcoinlib>=0.11.0,<0.12pyproject.toml
PyPItyping-extensions>=4.7.1pyproject.toml
PyPIisort>=5,<6pyproject.toml
PyPIflake8>=7pyproject.toml
PyPIblack>=24.2pyproject.toml
PyPImako>=1.3.10,<2pyproject.toml
PyPImunch>=4,<5pyproject.toml
PyPIautoflakepyproject.toml
PyPIflake8-requirements>=2.1.0pyproject.toml
PyPIpylint~=2.11pyproject.toml
PyPIdemjson3pyproject.toml
PyPIgraphvizpyproject.toml
PyPIclick>=8,<9pyproject.toml
PyPIrequests~=2.32pyproject.toml
PyPItermcolorpyproject.toml
PyPIPillow>=11pyproject.toml
PyPIecdsa>=0.16,<0.20pyproject.toml
PyPIpyasn1pyproject.toml
PyPInoiseprotocol>=0.3.1,<0.4pyproject.toml
PyPIwest>=1.4.0,<2pyproject.toml
PyPIintelhex==2.3.0pyproject.toml
PyPIimgtool==2.2.0pyproject.toml
PyPIsetuptools>=24.2.0pyproject.toml
PyPIcryptographypyproject.toml
PyPIhypothesispyproject.toml
PyPIinotifypyproject.toml
PyPIyamllint>=1.25.0,<2pyproject.toml
PyPIvulture~=2.6pyproject.toml
PyPIbinsize>=0.1.3,<0.2pyproject.toml
PyPItoiftoolpyproject.toml
PyPItrezor-pylint-pluginpyproject.toml
PyPItrezor-core-toolspyproject.toml
PyPIflake8-annotations>=3.1.1,<4pyproject.toml
PyPIpyelftools>=0.32,<0.33pyproject.toml
PyPIpytest-retry>=1.7.0,<2pyproject.toml
PyPIslh-dsa>=0.1.3,<0.2pyproject.toml
PyPIbleak>=1.1.0pyproject.toml
PyPIconstruct-typing>=0.7.0pyproject.toml
PyPImnemonic>=0.20python/pyproject.toml
PyPIshamir-mnemonic>=0.3.0python/pyproject.toml
PyPIslip10>=1.0.1python/pyproject.toml
PyPIrequests>=2.4.0python/pyproject.toml
PyPIclick>=8,<9python/pyproject.toml
PyPIlibusb1>=1.6.4python/pyproject.toml
PyPIconstruct>=2.9,!=2.10.55python/pyproject.toml
PyPItyping_extensions>=4.7.1python/pyproject.toml
PyPIconstruct-classes>=0.1.2python/pyproject.toml
PyPIcryptography>=47python/pyproject.toml
PyPInoiseprotocol>=0.3.1,<0.4.0python/pyproject.toml
PyPIplatformdirs>=4.4.0python/pyproject.toml
PyPIkeyring>=25.7.0python/pyproject.toml
All dependencies 450

Full resolved dependency set from the GitHub dependency graph: 86 direct and 364 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
PyPIautoflakedirect
PyPIautoflake2.3.1direct
PyPIbinsize0.1.4direct
PyPIblackdirect
PyPIblack26.3.1direct
PyPIbleakdirect
PyPIbleak1.1.1direct
PyPIclickdirect
PyPIclick8.1.8direct
PyPIconstructdirect
PyPIconstruct2.10.70direct
PyPIconstruct-classesdirect
PyPIconstruct-classes0.2.2direct
PyPIconstruct-typing0.7.0direct
PyPIcoverage7.13.5direct
PyPIcryptographydirect
PyPIcryptography48.0.1direct
PyPIdemjson33.0.6direct
PyPIdominate2.9.1direct
PyPIecdsa0.19.2direct
PyPIfido20.8.1direct
PyPIflake8direct
PyPIflake87.3.0direct
PyPIflake8-annotations3.2.0direct
PyPIflake8-requirements2.3.0direct
PyPIgraphviz0.21direct
PyPIhypothesis6.151.14direct
PyPIimgtool2.2.0direct
PyPIinotify0.2.12direct
PyPIintelhex2.3.0direct
PyPIisortdirect
PyPIisort5.13.2direct
PyPIkeyringdirect
PyPIkeyring25.7.0direct
PyPIlibusb1direct
PyPIlibusb13.3.1direct
PyPImako1.3.12direct
PyPImnemonicdirect
PyPImnemonic0.21direct
PyPImunch4.0.0direct
PyPInanopb0.4.9.1direct
PyPInoiseprotocoldirect
PyPInoiseprotocol0.3.1direct
PyPIpillowdirect
PyPIpillow12.2.0direct
PyPIplatformdirsdirect
PyPIplatformdirs4.4.0direct
PyPIprotobuf6.33.5direct
PyPIpyasn10.6.3direct
PyPIpyelftools0.32direct
PyPIpylintdirect
PyPIpylint2.17.7direct
PyPIpyserial3.5direct
PyPIpytestdirect
PyPIpytest9.0.3direct
PyPIpytest-ordering0.6direct
PyPIpytest-random-orderdirect
PyPIpytest-random-order1.2.0direct
PyPIpytest-retry1.7.0direct
PyPIpytest-timeout2.4.0direct
PyPIpytest-xdist3.8.0direct
PyPIpython-bitcoinlib0.11.2direct
PyPIrequestsdirect
PyPIrequests2.33.0direct
PyPIscons4.9.1direct
PyPIsetuptools80.9.0direct
PyPIshamir-mnemonicdirect
PyPIshamir-mnemonic0.3.0direct
PyPIslh-dsa0.1.3direct
PyPIslip10direct
PyPIslip101.1.0direct
PyPItermcolordirect
PyPItermcolor3.1.0direct
PyPItoiftool0.1.0direct
PyPItoxdirect
PyPItox4.29.0direct
PyPItrezordirect
PyPItrezor0.20.2direct
PyPItrezor-core-tools0.1.4direct
PyPItrezor-pylint-plugin0.1.0direct
PyPItvl2.4direct
PyPItyping-extensionsdirect
PyPItyping-extensions4.15.0direct
PyPIvulture2.14direct
PyPIwest1.4.0direct
PyPIyamllint1.37.1direct
crates.ioaddr2line0.25.1indirect
crates.ioadler22.0.1indirect
crates.ioaho-corasick0.7.18indirect
crates.ioaho-corasick1.1.3indirect
crates.ioaho-corasick1.1.4indirect
crates.ioalloc-traits0.1.1indirect
crates.ioanstyle1.0.13indirect
crates.ioanyhow1.0.102indirect
crates.ioanyhow1.0.98indirect
crates.ioarbitrary1.0.1indirect
crates.ioarrayvec0.7.6indirect
crates.ioassert_approx_eqindirect
crates.ioatomic-polyfill0.1.8indirect
crates.ioautocfg1.1.0indirect
crates.ioautocfg1.4.0indirect
crates.ioautocfg1.5.0indirect
crates.iobacktrace0.3.76indirect
crates.iobare-metal0.2.5indirect
crates.iobare-metal1.0.0indirect
crates.iobase58ck0.1.0indirect
crates.iobech320.11.0indirect
crates.iobindgen0.60.1indirect
crates.iobindgen0.72.1indirect
crates.iobit_field0.10.1indirect
crates.iobitcoin0.32.5indirect
crates.iobitcoin-internals0.3.0indirect
crates.iobitcoin-io0.1.3indirect
crates.iobitcoin-units0.1.2indirect
crates.iobitcoin_hashes0.14.0indirect
crates.iobitfield0.13.2indirect
crates.iobitflags1.2.1indirect
crates.iobitflags2.11.0indirect
crates.iobitflags2.9.0indirect
crates.iobstr1.12.1indirect
crates.iobyteorder1.4.3indirect
crates.iobyteorder1.5.0indirect
crates.iocamino1.2.2indirect
crates.iocargo-platform0.3.2indirect
crates.iocargo_metadata0.23.1indirect
crates.iocc1.0.73indirect
crates.iocc1.2.20indirect
crates.iocc1.2.56indirect
crates.iocexpr0.6.0indirect
crates.iocfg-if1.0.0indirect
crates.iocfg-if1.0.4indirect
crates.ioclang-sys1.2.0indirect
crates.ioclang-sys1.8.1indirect
crates.ioclap4.6.0indirect
crates.ioclap_builder4.6.0indirect
crates.ioclap_derive4.6.0indirect
crates.ioclap_lex1.1.0indirect
crates.iocolor-eyre0.6.5indirect
crates.iocortex-m0.7.2indirect
crates.iocritical-section0.2.7indirect
crates.iocstr_core0.2.6indirect
crates.iocty0.2.2indirect
crates.ioeaserindirect
crates.ioeaser0.3.0indirect
crates.ioeither1.15.0indirect
crates.ioembedded-hal0.2.5indirect
crates.ioenv_loggerindirect
crates.ioequivalent1.0.2indirect
crates.ioerrno0.3.11indirect
crates.ioerrno0.3.14indirect
crates.ioeyre0.6.12indirect
crates.iofastrand2.3.0indirect
crates.iofastrand2.4.1indirect
crates.iofind-msvc-tools0.1.9indirect
crates.iofutures0.3.31indirect
crates.iofutures-channel0.3.31indirect
crates.iofutures-core0.3.31indirect
crates.iofutures-executor0.3.31indirect
crates.iofutures-io0.3.31indirect
crates.iofutures-sink0.3.31indirect
crates.iofutures-task0.3.31indirect
crates.iofutures-util0.3.31indirect
crates.iogetrandomindirect
crates.iogetrandom0.3.2indirect
crates.iogimli0.32.3indirect
crates.ioglob0.3.0indirect
crates.ioglob0.3.3indirect
crates.ioglobset0.4.18indirect
crates.iognuplotindirect
crates.iohash320.2.1indirect
crates.iohash320.3.1indirect
crates.iohashbrown0.15.2indirect
crates.iohashbrown0.17.1indirect
crates.ioheaplessindirect
crates.ioheapless0.7.13indirect
crates.ioheapless0.9.2indirect
crates.ioheck0.5.0indirect
crates.iohexindirect
crates.iohex0.4.3indirect
crates.iohex-conservative0.2.1indirect
crates.iohex_lit0.1.1indirect
crates.iohome0.5.9indirect
crates.ioindenter0.3.4indirect
crates.ioindexmap2.14.0indirect
crates.ioindexmap2.9.0indirect
crates.ioitertools0.13.0indirect
crates.ioitoa1.0.17indirect
crates.iolazy_static1.4.0indirect
crates.iolazy_static1.5.0indirect
crates.iolazycell1.3.0indirect
crates.iolibc0.2.172indirect
crates.iolibc0.2.177indirect
crates.iolibc0.2.97indirect
crates.iolibfuzzer-sys0.4.2indirect
crates.iolibloading0.7.0indirect
crates.iolibloading0.8.9indirect
crates.iolibm0.2.16indirect
crates.iolibusb1-sys0.7.0indirect
crates.iolinux-raw-sys0.11.0indirect
crates.iolinux-raw-sys0.4.15indirect
crates.iolinux-raw-sys0.9.4indirect
crates.iolock_api0.4.12indirect
crates.iolock_api0.4.7indirect
crates.iologindirect
crates.iolog0.4.27indirect
crates.iolog0.4.29indirect
crates.iomemchr2.4.0indirect
crates.iomemchr2.7.4indirect
crates.iomemchr2.8.0indirect
crates.iominicbor1.1.0indirect
crates.iominimal-lexical0.2.1indirect
crates.iominiz_oxide0.8.9indirect
crates.ionb0.1.3indirect
crates.ionb1.0.0indirect
crates.ionom7.1.1indirect
crates.ionom7.1.3indirect
crates.ionu-ansi-term0.50.3indirect
crates.ionum-derive0.3.3indirect
crates.ionum-derive0.4.2indirect
crates.ionum-traitsindirect
crates.ionum-traits0.2.18indirect
crates.ionum-traits0.2.19indirect
crates.ioobject0.37.3indirect
crates.ioonce_cell1.21.3indirect
crates.ioonce_cell1.21.4indirect
crates.ioonce_cell1.8.0indirect
crates.ioowo-colors4.3.0indirect
crates.ioparking_lot0.12.3indirect
crates.ioparking_lot_core0.9.10indirect
crates.iopathdiff0.2.3indirect
crates.iopeeking_take_while0.1.2indirect
crates.iopin-project-lite0.2.16indirect
crates.iopin-utils0.1.0indirect
crates.iopkg-config0.3.32indirect
crates.ioproc-macro21.0.106indirect
crates.ioproc-macro21.0.27indirect
crates.ioproc-macro21.0.95indirect
crates.ioprotobuf3.7.2indirect
crates.ioprotobuf-codegen3.7.2indirect
crates.ioprotobuf-parse3.7.2indirect
crates.ioprotobuf-support3.7.2indirect
crates.ioquote1.0.40indirect
crates.ioquote1.0.45indirect
crates.ioquote1.0.9indirect
crates.ior-efi5.2.0indirect
crates.ioredox_syscall0.5.11indirect
crates.ioregex1.11.1indirect
crates.ioregex1.12.3indirect
crates.ioregex1.5.6indirect
crates.ioregex-automata0.4.14indirect
crates.ioregex-automata0.4.9indirect
crates.ioregex-syntax0.6.26indirect
crates.ioregex-syntax0.8.10indirect
crates.ioregex-syntax0.8.5indirect
crates.ioriscv0.7.0indirect
crates.ioriscv-target0.1.2indirect
crates.iorusb0.9.4indirect
crates.iorustc-demangle0.1.27indirect
crates.iorustc-hash1.1.0indirect
crates.iorustc-hash2.1.1indirect
crates.iorustc_version0.2.3indirect
crates.iorustc_version0.4.0indirect
crates.iorustix0.38.44indirect
crates.iorustix1.0.5indirect
crates.iorustix1.1.3indirect
crates.ioryu1.0.23indirect
crates.ioscc2.3.4indirect
crates.ioscopeguard1.1.0indirect
crates.ioscopeguard1.2.0indirect
crates.iosdd3.0.8indirect
crates.iosecp256k10.29.1indirect
crates.iosecp256k1-sys0.10.1indirect
crates.iosemver0.9.0indirect
crates.iosemver1.0.27indirect
crates.iosemver1.0.9indirect
crates.iosemver-parser0.7.0indirect
crates.ioserde1.0.228indirect
crates.ioserde_core1.0.228indirect
crates.ioserde_derive1.0.228indirect
crates.ioserde_json1.0.145indirect
crates.ioserde_spanned0.6.9indirect
crates.ioserial_test3.2.0indirect
crates.ioserial_test_derive3.2.0indirect
crates.iosharded-slab0.1.7indirect
crates.ioshlex1.3.0indirect
crates.ioslab0.4.9indirect
crates.iosmallvec1.15.0indirect
crates.iospin0.9.3indirect
crates.iospin0.9.8indirect
crates.iostable_deref_trait1.2.0indirect
crates.iostable_deref_trait1.2.1indirect
crates.iostatic-alloc0.2.6indirect
crates.iostrsim0.11.1indirect
crates.iosyn1.0.109indirect
crates.iosyn1.0.80indirect
crates.iosyn2.0.101indirect
crates.iosyn2.0.117indirect
crates.iotempfile3.19.1indirect
crates.iotempfile3.25.0indirect
crates.iotest-caseindirect
crates.iothiserror1.0.69indirect
crates.iothiserror2.0.12indirect
crates.iothiserror2.0.18indirect
crates.iothiserror-impl1.0.69indirect
crates.iothiserror-impl2.0.12indirect
crates.iothiserror-impl2.0.18indirect
crates.iothread_local1.1.8indirect
crates.iotinyvec1.9.0indirect
crates.iotinyvec_macros0.1.1indirect
crates.iotoml0.8.23indirect
crates.iotoml_datetime0.6.11indirect
crates.iotoml_edit0.22.27indirect
crates.iotoml_write0.1.2indirect
crates.iotracing0.1.41indirect
crates.iotracing-attributes0.1.28indirect
crates.iotracing-core0.1.33indirect
crates.iotracing-log0.2.0indirect
crates.iotracing-subscriber0.3.20indirect
crates.iotrezor-noise-protocolindirect
crates.iotrezor-noise-protocol0.2.1indirect
crates.iotrezor-noise-rust-cryptoindirect
crates.ioufmt0.2.0indirect
crates.ioufmt-macros0.3.0indirect
crates.ioufmt-write0.1.0indirect
crates.iounicode-ident1.0.18indirect
crates.iounicode-ident1.0.24indirect
crates.iounicode-normalization0.1.24indirect
crates.iounicode-xid0.2.2indirect
crates.iounsize1.1.0indirect
crates.iovaluable0.1.1indirect
crates.iovcell0.1.3indirect
crates.iovcpkg0.2.15indirect
crates.iovoid1.0.2indirect
crates.iovolatile-register0.2.0indirect
crates.iowasi0.14.2+wasi-0.2.4indirect
crates.iowhich4.4.2indirect
crates.iowinapi0.3.9indirect
crates.iowinapi-i686-pc-windows-gnu0.4.0indirect
crates.iowinapi-x86_64-pc-windows-gnu0.4.0indirect
crates.iowindows-link0.2.1indirect
crates.iowindows-sys0.52.0indirect
crates.iowindows-sys0.59.0indirect
crates.iowindows-sys0.61.2indirect
crates.iowindows-targets0.52.6indirect
crates.iowindows_aarch64_gnullvm0.52.6indirect
crates.iowindows_aarch64_msvc0.52.6indirect
crates.iowindows_i686_gnu0.52.6indirect
crates.iowindows_i686_gnullvm0.52.6indirect
crates.iowindows_i686_msvc0.52.6indirect
crates.iowindows_x86_64_gnu0.52.6indirect
crates.iowindows_x86_64_gnullvm0.52.6indirect
crates.iowindows_x86_64_msvc0.52.6indirect
crates.iowinnow0.7.15indirect
crates.iowit-bindgen-rt0.39.0indirect
crates.iowithout-alloc0.2.2indirect
crates.iozeroize1.7.0indirect
crates.iozeroize1.8.2indirect
crates.iozeroize_derive1.4.3indirect
crates.iozlib-rs0.6.3indirect
PyPIastroidindirect
PyPIastroid2.15.8indirect
PyPIasync-timeout5.0.1indirect
PyPIbackports-tarfile1.2.0indirect
PyPIbuild1.3.0indirect
PyPIcachetools6.2.0indirect
PyPIcbor25.9.0indirect
PyPIcertifi2025.8.3indirect
PyPIcffi2.0.0indirect
PyPIchardet5.2.0indirect
PyPIcharset-normalizer3.4.3indirect
PyPIcolorama0.4.6indirect
PyPIcrcmod1.7indirect
PyPIdbus-fast2.44.3indirect
PyPIdill0.4.0indirect
PyPIdistlib0.4.0indirect
PyPIdocopt0.6.2indirect
PyPIexceptiongroup1.3.0indirect
PyPIexecnet2.1.1indirect
PyPIfilelock3.20.3indirect
PyPIflit-coreindirect
PyPIhidapiindirect
PyPIidna3.15indirect
PyPIimportlib-metadata8.7.0indirect
PyPIincremental24.7.2indirect
PyPIiniconfig2.1.0indirect
PyPIjaraco-classes3.4.0indirect
PyPIjaraco-context6.1.0indirect
PyPIjaraco-functools4.3.0indirect
PyPIjeepney0.9.0indirect
PyPIjinja23.1.6indirect
PyPIlazy-object-proxy1.12.0indirect
PyPIlibcst1.8.2indirect
PyPImarkdown-it-py4.0.0indirect
PyPImarkupsafe3.0.2indirect
PyPImccabe0.7.0indirect
PyPImdurl0.1.2indirect
PyPImore-itertools10.8.0indirect
PyPImypy-extensions1.1.0indirect
PyPIpackaging25.0indirect
PyPIpathspec1.0.4indirect
PyPIpluggy1.6.0indirect
PyPIpycln2.5.0indirect
PyPIpycodestyle2.14.0indirect
PyPIpycparser2.22indirect
PyPIpycryptodome3.23.0indirect
PyPIpydantic1.10.22indirect
PyPIpyflakes3.4.0indirect
PyPIpygments2.20.0indirect
PyPIpykwalify1.8.0indirect
PyPIpyobjc-core11.1indirect
PyPIpyobjc-framework-cocoa11.1indirect
PyPIpyobjc-framework-corebluetooth11.1indirect
PyPIpyobjc-framework-libdispatch11.1indirect
PyPIpyproject-api1.9.1indirect
PyPIpyproject-hooks1.2.0indirect
PyPIpyqt5indirect
PyPIpython-dateutil2.9.0.post0indirect
PyPIpytokens0.4.1indirect
PyPIpywin32-ctypes0.2.3indirect
PyPIpyyaml6.0.2indirect
PyPIpyyaml-ft8.0.0indirect
PyPIrich14.1.0indirect
PyPIruamel-yaml0.19.1indirect
PyPIscan-build2.0.20indirect
PyPIsecretstorage3.5.0indirect
PyPIshellingham1.5.4indirect
PyPIsix1.17.0indirect
PyPIsortedcontainers2.4.0indirect
PyPIstellar-sdkindirect
PyPItomli2.2.1indirect
PyPItomlkit0.13.3indirect
PyPItowncrier23.11.0indirect
PyPItox-uvindirect
PyPItrezor-firmware0.0.0indirect
PyPItyper0.17.3indirect
PyPIuhid-freebsd1.2.2indirect
PyPIurllib32.7.0indirect
PyPIvirtualenv20.36.1indirect
PyPIweb3indirect
PyPIwheel0.46.2indirect
PyPIwinrt-runtime3.2.1indirect
PyPIwinrt-windows-devices-bluetooth3.2.1indirect
PyPIwinrt-windows-devices-bluetooth-advertisement3.2.1indirect
PyPIwinrt-windows-devices-bluetooth-genericattributeprofile3.2.1indirect
PyPIwinrt-windows-devices-enumeration3.2.1indirect
PyPIwinrt-windows-foundation3.2.1indirect
PyPIwinrt-windows-foundation-collections3.2.1indirect
PyPIwinrt-windows-storage-streams3.2.1indirect
PyPIwrapt1.17.3indirect
PyPIzipp3.23.0indirect
Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [
        "trezor",
        "micropython",
        "python",
        "firmware",
        "bitcoin",
        "wallet",
        "rust",
        "c",
        "cryptography",
        "cryptocurrency"
      ],
      "is_fork": false,
      "size_kb": 516847,
      "has_wiki": false,
      "homepage": "https://trezor.io",
      "languages": {
        "C": 11606103,
        "Awk": 396,
        "C++": 61852,
        "CSS": 3144,
        "GDB": 311,
        "Max": 2198,
        "Nix": 6111,
        "HTML": 855866,
        "Mako": 69933,
        "Perl": 3244,
        "Ruby": 2644,
        "Rust": 4878428,
        "CMake": 5271,
        "QMake": 724,
        "Shell": 62947,
        "Python": 7690817,
        "Assembly": 33775,
        "Makefile": 48489,
        "OpenSCAD": 1137,
        "Dockerfile": 2575,
        "JavaScript": 24254,
        "Linker Script": 72624
      },
      "pushed_at": "2026-07-17T10:07:41Z",
      "created_at": "2019-04-10T13:42:15Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-17T09:52:42Z",
      "description": ":lock: Trezor Firmware Monorepo",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "primary_language": "C",
      "significant_languages": [
        "C",
        "Python",
        "Rust"
      ]
    },
    "owner": {
      "blog": "https://trezor.io",
      "name": "Trezor",
      "type": "Organization",
      "login": "trezor",
      "company": null,
      "location": "Prague, Czech Republic",
      "followers": 1238,
      "avatar_url": "https://avatars.githubusercontent.com/u/4146447?v=4",
      "created_at": "2013-04-13T15:41:29Z",
      "is_verified": null,
      "public_repos": 67,
      "account_age_days": 4842
    },
    "activity": {
      "releases_count": 0,
      "commits_last_year": 2511,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 52,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 75,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "TrezorCrypto",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "License :: OSI Approved :: MIT License",
            "Operating System :: MacOS :: MacOS X",
            "Operating System :: Microsoft :: Windows",
            "Operating System :: POSIX :: Linux",
            "Programming Language :: Python :: 3 :: Only"
          ],
          "ecosystem": "pypi",
          "matches_repo": false,
          "registry_url": "https://pypi.org/project/TrezorCrypto/",
          "is_deprecated": false,
          "latest_version": "0.0.6",
          "repository_url": "https://github.com/zebra-lucky/trezor-crypto",
          "versions_count": 4,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 26,
          "first_published_at": "2019-02-05T00:04:26.684765Z",
          "latest_published_at": "2019-02-20T02:09:21.537944Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 2704
        },
        {
          "name": "trezor",
          "exists": true,
          "license": "LGPL-3.0-only",
          "keywords": [
            "trezor",
            "hardware",
            "wallet",
            "cryptocurrency",
            "bitcoin",
            "ethereum",
            "Operating System :: MacOS :: MacOS X",
            "Operating System :: Microsoft :: Windows",
            "Operating System :: POSIX :: Linux",
            "Programming Language :: Python :: 3 :: Only"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/trezor/",
          "is_deprecated": false,
          "latest_version": "0.20.1",
          "repository_url": "https://github.com/trezor/trezor-firmware",
          "versions_count": 61,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 19737,
          "first_published_at": "2015-01-30T22:55:48.555394Z",
          "latest_published_at": "2026-05-11T13:14:08.590453Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 66
        }
      ]
    },
    "popularity": {
      "forks": 780,
      "stars": 1754,
      "watchers": 68,
      "open_issues_and_prs": 660
    },
    "ai_readiness": {
      "has_nix": true,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile",
        "ci/hardware_tests/tpmb/Makefile",
        "common/protob/Makefile",
        "common/udev/dist/Makefile",
        "core/Makefile",
        "core/embed/projects/bootloader/protob/pb/Makefile",
        "crypto/Makefile",
        "legacy/Makefile",
        "legacy/bootloader/Makefile",
        "legacy/demo/Makefile",
        "legacy/emulator/Makefile",
        "legacy/firmware/Makefile",
        "legacy/firmware/protob/Makefile",
        "legacy/gen/Makefile",
        "legacy/intermediate_fw/Makefile",
        "python/Makefile",
        "rust/Makefile",
        "storage/tests/Makefile",
        "storage/tests/c/Makefile",
        "storage/tests/c0/Makefile",
        "storage/tests/c3/Makefile",
        "tests/fido_tests/u2f-tests-hid/Makefile"
      ],
      "api_schema_files": [
        "common/protob/messages-benchmark.proto",
        "common/protob/messages-bitcoin.proto",
        "common/protob/messages-ble.proto",
        "common/protob/messages-bootloader.proto",
        "common/protob/messages-cardano.proto",
        "common/protob/messages-common.proto",
        "common/protob/messages-crypto.proto",
        "common/protob/messages-debug.proto",
        "common/protob/messages-definitions.proto",
        "common/protob/messages-eos.proto",
        "common/protob/messages-ethereum-eip712.proto",
        "common/protob/messages-ethereum.proto",
        "common/protob/messages-evolu.proto",
        "common/protob/messages-management.proto",
        "common/protob/messages-monero.proto",
        "common/protob/messages-nem.proto",
        "common/protob/messages-nostr.proto",
        "common/protob/messages-ripple.proto",
        "common/protob/messages-solana.proto",
        "common/protob/messages-stellar.proto",
        "common/protob/messages-telemetry.proto",
        "common/protob/messages-tezos.proto",
        "common/protob/messages-thp.proto",
        "common/protob/messages-tron.proto",
        "common/protob/messages-webauthn.proto",
        "common/protob/messages.proto",
        "common/protob/options.proto",
        "core/embed/projects/bootloader/protob/pb/messages-debug.proto",
        "core/embed/projects/bootloader/protob/pb/messages.proto",
        "legacy/firmware/protob/messages-bitcoin.proto",
        "legacy/firmware/protob/messages-common.proto",
        "legacy/firmware/protob/messages-crypto.proto",
        "legacy/firmware/protob/messages-debug.proto",
        "legacy/firmware/protob/messages-definitions.proto",
        "legacy/firmware/protob/messages-ethereum.proto",
        "legacy/firmware/protob/messages-management.proto",
        "legacy/firmware/protob/messages-nem.proto",
        "legacy/firmware/protob/messages-stellar.proto",
        "legacy/firmware/protob/messages-thp.proto",
        "legacy/firmware/protob/messages.proto",
        "legacy/firmware/protob/options.proto",
        "rust/trezor-thp/examples/host-cli/pb/messages-common.proto",
        "rust/trezor-thp/examples/host-cli/pb/messages-management.proto",
        "rust/trezor-thp/examples/host-cli/pb/messages-thp.proto",
        "rust/trezor-thp/examples/host-cli/pb/messages.proto",
        "rust/trezor-thp/examples/host-cli/pb/options.proto"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [
        "core/pyrightconfig.json",
        "pyrightconfig.json",
        "python/pyrightconfig.json",
        "python/src/trezorlib/py.typed"
      ],
      "largest_source_bytes": 2667011,
      "source_files_sampled": 3121,
      "oversized_source_files": 51,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "crypto/setup.py",
        "pyproject.toml",
        "python/pyproject.toml",
        "python/setup.cfg",
        "setup.cfg"
      ],
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "trezor",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "tvl",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "scons",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "protobuf",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==6.33.5"
        },
        {
          "name": "nanopb",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.4.3,<0.5"
        },
        {
          "name": "pytest",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=9.0.3,<10"
        },
        {
          "name": "coverage",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==7.13.5"
        },
        {
          "name": "pytest-ordering",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pytest-random-order",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pytest-timeout",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pytest-xdist",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "tox",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "dominate",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pyserial",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "mnemonic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.21,<0.22"
        },
        {
          "name": "shamir-mnemonic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.3.0,<0.4"
        },
        {
          "name": "slip10",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.1,<2"
        },
        {
          "name": "fido2",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.8.0,<0.9"
        },
        {
          "name": "python-bitcoinlib",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.11.0,<0.12"
        },
        {
          "name": "typing-extensions",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.7.1"
        },
        {
          "name": "isort",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=5,<6"
        },
        {
          "name": "flake8",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=7"
        },
        {
          "name": "black",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=24.2"
        },
        {
          "name": "mako",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.3.10,<2"
        },
        {
          "name": "munch",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4,<5"
        },
        {
          "name": "autoflake",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "flake8-requirements",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.1.0"
        },
        {
          "name": "pylint",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "~=2.11"
        },
        {
          "name": "demjson3",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "graphviz",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "click",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=8,<9"
        },
        {
          "name": "requests",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "~=2.32"
        },
        {
          "name": "termcolor",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "Pillow",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=11"
        },
        {
          "name": "ecdsa",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.16,<0.20"
        },
        {
          "name": "pyasn1",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "noiseprotocol",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.3.1,<0.4"
        },
        {
          "name": "west",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.4.0,<2"
        },
        {
          "name": "intelhex",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==2.3.0"
        },
        {
          "name": "imgtool",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==2.2.0"
        },
        {
          "name": "setuptools",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=24.2.0"
        },
        {
          "name": "cryptography",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "hypothesis",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "inotify",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "yamllint",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.25.0,<2"
        },
        {
          "name": "vulture",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "~=2.6"
        },
        {
          "name": "binsize",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.3,<0.2"
        },
        {
          "name": "toiftool",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "trezor-pylint-plugin",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "trezor-core-tools",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "flake8-annotations",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.1.1,<4"
        },
        {
          "name": "pyelftools",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.32,<0.33"
        },
        {
          "name": "pytest-retry",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.7.0,<2"
        },
        {
          "name": "slh-dsa",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.3,<0.2"
        },
        {
          "name": "bleak",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.1.0"
        },
        {
          "name": "construct-typing",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.7.0"
        },
        {
          "name": "mnemonic",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.20"
        },
        {
          "name": "shamir-mnemonic",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.3.0"
        },
        {
          "name": "slip10",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.1"
        },
        {
          "name": "requests",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.4.0"
        },
        {
          "name": "click",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=8,<9"
        },
        {
          "name": "libusb1",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.6.4"
        },
        {
          "name": "construct",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.9,!=2.10.55"
        },
        {
          "name": "typing_extensions",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.7.1"
        },
        {
          "name": "construct-classes",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.2"
        },
        {
          "name": "cryptography",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=47"
        },
        {
          "name": "noiseprotocol",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.3.1,<0.4.0"
        },
        {
          "name": "platformdirs",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.4.0"
        },
        {
          "name": "keyring",
          "manifest": "python/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=25.7.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "autoflake",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "autoflake",
            "direct": true,
            "version": "2.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "binsize",
            "direct": true,
            "version": "0.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "black",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "black",
            "direct": true,
            "version": "26.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "bleak",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "bleak",
            "direct": true,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": true,
            "version": "8.1.8",
            "ecosystem": "pypi"
          },
          {
            "name": "construct",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "construct",
            "direct": true,
            "version": "2.10.70",
            "ecosystem": "pypi"
          },
          {
            "name": "construct-classes",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "construct-classes",
            "direct": true,
            "version": "0.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "construct-typing",
            "direct": true,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "coverage",
            "direct": true,
            "version": "7.13.5",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": true,
            "version": "48.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "demjson3",
            "direct": true,
            "version": "3.0.6",
            "ecosystem": "pypi"
          },
          {
            "name": "dominate",
            "direct": true,
            "version": "2.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ecdsa",
            "direct": true,
            "version": "0.19.2",
            "ecosystem": "pypi"
          },
          {
            "name": "fido2",
            "direct": true,
            "version": "0.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flake8",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "flake8",
            "direct": true,
            "version": "7.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "flake8-annotations",
            "direct": true,
            "version": "3.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "flake8-requirements",
            "direct": true,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "graphviz",
            "direct": true,
            "version": "0.21",
            "ecosystem": "pypi"
          },
          {
            "name": "hypothesis",
            "direct": true,
            "version": "6.151.14",
            "ecosystem": "pypi"
          },
          {
            "name": "imgtool",
            "direct": true,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "inotify",
            "direct": true,
            "version": "0.2.12",
            "ecosystem": "pypi"
          },
          {
            "name": "intelhex",
            "direct": true,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "isort",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "isort",
            "direct": true,
            "version": "5.13.2",
            "ecosystem": "pypi"
          },
          {
            "name": "keyring",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "keyring",
            "direct": true,
            "version": "25.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "libusb1",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "libusb1",
            "direct": true,
            "version": "3.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mako",
            "direct": true,
            "version": "1.3.12",
            "ecosystem": "pypi"
          },
          {
            "name": "mnemonic",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mnemonic",
            "direct": true,
            "version": "0.21",
            "ecosystem": "pypi"
          },
          {
            "name": "munch",
            "direct": true,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "nanopb",
            "direct": true,
            "version": "0.4.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "noiseprotocol",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "noiseprotocol",
            "direct": true,
            "version": "0.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": true,
            "version": "12.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": true,
            "version": "4.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "protobuf",
            "direct": true,
            "version": "6.33.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1",
            "direct": true,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyelftools",
            "direct": true,
            "version": "0.32",
            "ecosystem": "pypi"
          },
          {
            "name": "pylint",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pylint",
            "direct": true,
            "version": "2.17.7",
            "ecosystem": "pypi"
          },
          {
            "name": "pyserial",
            "direct": true,
            "version": "3.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": true,
            "version": "9.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-ordering",
            "direct": true,
            "version": "0.6",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-random-order",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-random-order",
            "direct": true,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-retry",
            "direct": true,
            "version": "1.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-timeout",
            "direct": true,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-xdist",
            "direct": true,
            "version": "3.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-bitcoinlib",
            "direct": true,
            "version": "0.11.2",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": "2.33.0",
            "ecosystem": "pypi"
          },
          {
            "name": "scons",
            "direct": true,
            "version": "4.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "setuptools",
            "direct": true,
            "version": "80.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "shamir-mnemonic",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "shamir-mnemonic",
            "direct": true,
            "version": "0.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "slh-dsa",
            "direct": true,
            "version": "0.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "slip10",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "slip10",
            "direct": true,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "termcolor",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "termcolor",
            "direct": true,
            "version": "3.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "toiftool",
            "direct": true,
            "version": "0.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tox",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "tox",
            "direct": true,
            "version": "4.29.0",
            "ecosystem": "pypi"
          },
          {
            "name": "trezor",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "trezor",
            "direct": true,
            "version": "0.20.2",
            "ecosystem": "pypi"
          },
          {
            "name": "trezor-core-tools",
            "direct": true,
            "version": "0.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "trezor-pylint-plugin",
            "direct": true,
            "version": "0.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tvl",
            "direct": true,
            "version": "2.4",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-extensions",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "typing-extensions",
            "direct": true,
            "version": "4.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "vulture",
            "direct": true,
            "version": "2.14",
            "ecosystem": "pypi"
          },
          {
            "name": "west",
            "direct": true,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "yamllint",
            "direct": true,
            "version": "1.37.1",
            "ecosystem": "pypi"
          },
          {
            "name": "addr2line",
            "direct": false,
            "version": "0.25.1",
            "ecosystem": "crates"
          },
          {
            "name": "adler2",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "aho-corasick",
            "direct": false,
            "version": "0.7.18",
            "ecosystem": "crates"
          },
          {
            "name": "aho-corasick",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "crates"
          },
          {
            "name": "aho-corasick",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "alloc-traits",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "anstyle",
            "direct": false,
            "version": "1.0.13",
            "ecosystem": "crates"
          },
          {
            "name": "anyhow",
            "direct": false,
            "version": "1.0.102",
            "ecosystem": "crates"
          },
          {
            "name": "anyhow",
            "direct": false,
            "version": "1.0.98",
            "ecosystem": "crates"
          },
          {
            "name": "arbitrary",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "arrayvec",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "crates"
          },
          {
            "name": "assert_approx_eq",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "atomic-polyfill",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "crates"
          },
          {
            "name": "autocfg",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "autocfg",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "autocfg",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "backtrace",
            "direct": false,
            "version": "0.3.76",
            "ecosystem": "crates"
          },
          {
            "name": "bare-metal",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "crates"
          },
          {
            "name": "bare-metal",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "base58ck",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "bech32",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "bindgen",
            "direct": false,
            "version": "0.60.1",
            "ecosystem": "crates"
          },
          {
            "name": "bindgen",
            "direct": false,
            "version": "0.72.1",
            "ecosystem": "crates"
          },
          {
            "name": "bit_field",
            "direct": false,
            "version": "0.10.1",
            "ecosystem": "crates"
          },
          {
            "name": "bitcoin",
            "direct": false,
            "version": "0.32.5",
            "ecosystem": "crates"
          },
          {
            "name": "bitcoin-internals",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "bitcoin-io",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "crates"
          },
          {
            "name": "bitcoin-units",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "bitcoin_hashes",
            "direct": false,
            "version": "0.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "bitfield",
            "direct": false,
            "version": "0.13.2",
            "ecosystem": "crates"
          },
          {
            "name": "bitflags",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "bitflags",
            "direct": false,
            "version": "2.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "bitflags",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "bstr",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "crates"
          },
          {
            "name": "byteorder",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "crates"
          },
          {
            "name": "byteorder",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "camino",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "cargo-platform",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "cargo_metadata",
            "direct": false,
            "version": "0.23.1",
            "ecosystem": "crates"
          },
          {
            "name": "cc",
            "direct": false,
            "version": "1.0.73",
            "ecosystem": "crates"
          },
          {
            "name": "cc",
            "direct": false,
            "version": "1.2.20",
            "ecosystem": "crates"
          },
          {
            "name": "cc",
            "direct": false,
            "version": "1.2.56",
            "ecosystem": "crates"
          },
          {
            "name": "cexpr",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "cfg-if",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "cfg-if",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "crates"
          },
          {
            "name": "clang-sys",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "clang-sys",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "clap",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "clap_builder",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "clap_derive",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "clap_lex",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "color-eyre",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "crates"
          },
          {
            "name": "cortex-m",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "crates"
          },
          {
            "name": "critical-section",
            "direct": false,
            "version": "0.2.7",
            "ecosystem": "crates"
          },
          {
            "name": "cstr_core",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "crates"
          },
          {
            "name": "cty",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "easer",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "easer",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "either",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "crates"
          },
          {
            "name": "embedded-hal",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "crates"
          },
          {
            "name": "env_logger",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "equivalent",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "errno",
            "direct": false,
            "version": "0.3.11",
            "ecosystem": "crates"
          },
          {
            "name": "errno",
            "direct": false,
            "version": "0.3.14",
            "ecosystem": "crates"
          },
          {
            "name": "eyre",
            "direct": false,
            "version": "0.6.12",
            "ecosystem": "crates"
          },
          {
            "name": "fastrand",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "fastrand",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "crates"
          },
          {
            "name": "find-msvc-tools",
            "direct": false,
            "version": "0.1.9",
            "ecosystem": "crates"
          },
          {
            "name": "futures",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "crates"
          },
          {
            "name": "futures-channel",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "crates"
          },
          {
            "name": "futures-core",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "crates"
          },
          {
            "name": "futures-executor",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "crates"
          },
          {
            "name": "futures-io",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "crates"
          },
          {
            "name": "futures-sink",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "crates"
          },
          {
            "name": "futures-task",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "crates"
          },
          {
            "name": "futures-util",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "gimli",
            "direct": false,
            "version": "0.32.3",
            "ecosystem": "crates"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "crates"
          },
          {
            "name": "globset",
            "direct": false,
            "version": "0.4.18",
            "ecosystem": "crates"
          },
          {
            "name": "gnuplot",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "hash32",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "hash32",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.15.2",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.17.1",
            "ecosystem": "crates"
          },
          {
            "name": "heapless",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "heapless",
            "direct": false,
            "version": "0.7.13",
            "ecosystem": "crates"
          },
          {
            "name": "heapless",
            "direct": false,
            "version": "0.9.2",
            "ecosystem": "crates"
          },
          {
            "name": "heck",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "hex",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "hex",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "crates"
          },
          {
            "name": "hex-conservative",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "hex_lit",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "home",
            "direct": false,
            "version": "0.5.9",
            "ecosystem": "crates"
          },
          {
            "name": "indenter",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "crates"
          },
          {
            "name": "indexmap",
            "direct": false,
            "version": "2.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "indexmap",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "itertools",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "itoa",
            "direct": false,
            "version": "1.0.17",
            "ecosystem": "crates"
          },
          {
            "name": "lazy_static",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "lazy_static",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "lazycell",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "libc",
            "direct": false,
            "version": "0.2.172",
            "ecosystem": "crates"
          },
          {
            "name": "libc",
            "direct": false,
            "version": "0.2.177",
            "ecosystem": "crates"
          },
          {
            "name": "libc",
            "direct": false,
            "version": "0.2.97",
            "ecosystem": "crates"
          },
          {
            "name": "libfuzzer-sys",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "libloading",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "crates"
          },
          {
            "name": "libloading",
            "direct": false,
            "version": "0.8.9",
            "ecosystem": "crates"
          },
          {
            "name": "libm",
            "direct": false,
            "version": "0.2.16",
            "ecosystem": "crates"
          },
          {
            "name": "libusb1-sys",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "crates"
          },
          {
            "name": "linux-raw-sys",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "linux-raw-sys",
            "direct": false,
            "version": "0.4.15",
            "ecosystem": "crates"
          },
          {
            "name": "linux-raw-sys",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "crates"
          },
          {
            "name": "lock_api",
            "direct": false,
            "version": "0.4.12",
            "ecosystem": "crates"
          },
          {
            "name": "lock_api",
            "direct": false,
            "version": "0.4.7",
            "ecosystem": "crates"
          },
          {
            "name": "log",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "log",
            "direct": false,
            "version": "0.4.27",
            "ecosystem": "crates"
          },
          {
            "name": "log",
            "direct": false,
            "version": "0.4.29",
            "ecosystem": "crates"
          },
          {
            "name": "memchr",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "memchr",
            "direct": false,
            "version": "2.7.4",
            "ecosystem": "crates"
          },
          {
            "name": "memchr",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "minicbor",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "minimal-lexical",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "miniz_oxide",
            "direct": false,
            "version": "0.8.9",
            "ecosystem": "crates"
          },
          {
            "name": "nb",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "crates"
          },
          {
            "name": "nb",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "nom",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "nom",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "crates"
          },
          {
            "name": "nu-ansi-term",
            "direct": false,
            "version": "0.50.3",
            "ecosystem": "crates"
          },
          {
            "name": "num-derive",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "crates"
          },
          {
            "name": "num-derive",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "num-traits",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "num-traits",
            "direct": false,
            "version": "0.2.18",
            "ecosystem": "crates"
          },
          {
            "name": "num-traits",
            "direct": false,
            "version": "0.2.19",
            "ecosystem": "crates"
          },
          {
            "name": "object",
            "direct": false,
            "version": "0.37.3",
            "ecosystem": "crates"
          },
          {
            "name": "once_cell",
            "direct": false,
            "version": "1.21.3",
            "ecosystem": "crates"
          },
          {
            "name": "once_cell",
            "direct": false,
            "version": "1.21.4",
            "ecosystem": "crates"
          },
          {
            "name": "once_cell",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "owo-colors",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "parking_lot",
            "direct": false,
            "version": "0.12.3",
            "ecosystem": "crates"
          },
          {
            "name": "parking_lot_core",
            "direct": false,
            "version": "0.9.10",
            "ecosystem": "crates"
          },
          {
            "name": "pathdiff",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "peeking_take_while",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "pin-project-lite",
            "direct": false,
            "version": "0.2.16",
            "ecosystem": "crates"
          },
          {
            "name": "pin-utils",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "pkg-config",
            "direct": false,
            "version": "0.3.32",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": false,
            "version": "1.0.106",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": false,
            "version": "1.0.27",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": false,
            "version": "1.0.95",
            "ecosystem": "crates"
          },
          {
            "name": "protobuf",
            "direct": false,
            "version": "3.7.2",
            "ecosystem": "crates"
          },
          {
            "name": "protobuf-codegen",
            "direct": false,
            "version": "3.7.2",
            "ecosystem": "crates"
          },
          {
            "name": "protobuf-parse",
            "direct": false,
            "version": "3.7.2",
            "ecosystem": "crates"
          },
          {
            "name": "protobuf-support",
            "direct": false,
            "version": "3.7.2",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": false,
            "version": "1.0.40",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": false,
            "version": "1.0.45",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "crates"
          },
          {
            "name": "r-efi",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "redox_syscall",
            "direct": false,
            "version": "0.5.11",
            "ecosystem": "crates"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "crates"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "1.12.3",
            "ecosystem": "crates"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "1.5.6",
            "ecosystem": "crates"
          },
          {
            "name": "regex-automata",
            "direct": false,
            "version": "0.4.14",
            "ecosystem": "crates"
          },
          {
            "name": "regex-automata",
            "direct": false,
            "version": "0.4.9",
            "ecosystem": "crates"
          },
          {
            "name": "regex-syntax",
            "direct": false,
            "version": "0.6.26",
            "ecosystem": "crates"
          },
          {
            "name": "regex-syntax",
            "direct": false,
            "version": "0.8.10",
            "ecosystem": "crates"
          },
          {
            "name": "regex-syntax",
            "direct": false,
            "version": "0.8.5",
            "ecosystem": "crates"
          },
          {
            "name": "riscv",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "crates"
          },
          {
            "name": "riscv-target",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "rusb",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "crates"
          },
          {
            "name": "rustc-demangle",
            "direct": false,
            "version": "0.1.27",
            "ecosystem": "crates"
          },
          {
            "name": "rustc-hash",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "rustc-hash",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "rustc_version",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "rustc_version",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "rustix",
            "direct": false,
            "version": "0.38.44",
            "ecosystem": "crates"
          },
          {
            "name": "rustix",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "crates"
          },
          {
            "name": "rustix",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "crates"
          },
          {
            "name": "ryu",
            "direct": false,
            "version": "1.0.23",
            "ecosystem": "crates"
          },
          {
            "name": "scc",
            "direct": false,
            "version": "2.3.4",
            "ecosystem": "crates"
          },
          {
            "name": "scopeguard",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "scopeguard",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "sdd",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "crates"
          },
          {
            "name": "secp256k1",
            "direct": false,
            "version": "0.29.1",
            "ecosystem": "crates"
          },
          {
            "name": "secp256k1-sys",
            "direct": false,
            "version": "0.10.1",
            "ecosystem": "crates"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "1.0.27",
            "ecosystem": "crates"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "crates"
          },
          {
            "name": "semver-parser",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "crates"
          },
          {
            "name": "serde",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_core",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_derive",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": false,
            "version": "1.0.145",
            "ecosystem": "crates"
          },
          {
            "name": "serde_spanned",
            "direct": false,
            "version": "0.6.9",
            "ecosystem": "crates"
          },
          {
            "name": "serial_test",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "serial_test_derive",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "sharded-slab",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "crates"
          },
          {
            "name": "shlex",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "slab",
            "direct": false,
            "version": "0.4.9",
            "ecosystem": "crates"
          },
          {
            "name": "smallvec",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "crates"
          },
          {
            "name": "spin",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "crates"
          },
          {
            "name": "spin",
            "direct": false,
            "version": "0.9.8",
            "ecosystem": "crates"
          },
          {
            "name": "stable_deref_trait",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "stable_deref_trait",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "static-alloc",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "crates"
          },
          {
            "name": "strsim",
            "direct": false,
            "version": "0.11.1",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "1.0.109",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "1.0.80",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "2.0.101",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "2.0.117",
            "ecosystem": "crates"
          },
          {
            "name": "tempfile",
            "direct": false,
            "version": "3.19.1",
            "ecosystem": "crates"
          },
          {
            "name": "tempfile",
            "direct": false,
            "version": "3.25.0",
            "ecosystem": "crates"
          },
          {
            "name": "test-case",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "thiserror",
            "direct": false,
            "version": "1.0.69",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror",
            "direct": false,
            "version": "2.0.12",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror",
            "direct": false,
            "version": "2.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror-impl",
            "direct": false,
            "version": "1.0.69",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror-impl",
            "direct": false,
            "version": "2.0.12",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror-impl",
            "direct": false,
            "version": "2.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "thread_local",
            "direct": false,
            "version": "1.1.8",
            "ecosystem": "crates"
          },
          {
            "name": "tinyvec",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "tinyvec_macros",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "toml",
            "direct": false,
            "version": "0.8.23",
            "ecosystem": "crates"
          },
          {
            "name": "toml_datetime",
            "direct": false,
            "version": "0.6.11",
            "ecosystem": "crates"
          },
          {
            "name": "toml_edit",
            "direct": false,
            "version": "0.22.27",
            "ecosystem": "crates"
          },
          {
            "name": "toml_write",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "tracing",
            "direct": false,
            "version": "0.1.41",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-attributes",
            "direct": false,
            "version": "0.1.28",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-core",
            "direct": false,
            "version": "0.1.33",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-log",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-subscriber",
            "direct": false,
            "version": "0.3.20",
            "ecosystem": "crates"
          },
          {
            "name": "trezor-noise-protocol",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "trezor-noise-protocol",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "trezor-noise-rust-crypto",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "ufmt",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "ufmt-macros",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "ufmt-write",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-ident",
            "direct": false,
            "version": "1.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-ident",
            "direct": false,
            "version": "1.0.24",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-normalization",
            "direct": false,
            "version": "0.1.24",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-xid",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "unsize",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "valuable",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "vcell",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "crates"
          },
          {
            "name": "vcpkg",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "crates"
          },
          {
            "name": "void",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "volatile-register",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "wasi",
            "direct": false,
            "version": "0.14.2+wasi-0.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "which",
            "direct": false,
            "version": "4.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "winapi",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "crates"
          },
          {
            "name": "winapi-i686-pc-windows-gnu",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "winapi-x86_64-pc-windows-gnu",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-link",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.59.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.61.2",
            "ecosystem": "crates"
          },
          {
            "name": "windows-targets",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_aarch64_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_aarch64_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_gnu",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_gnu",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "winnow",
            "direct": false,
            "version": "0.7.15",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen-rt",
            "direct": false,
            "version": "0.39.0",
            "ecosystem": "crates"
          },
          {
            "name": "without-alloc",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "zeroize",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "crates"
          },
          {
            "name": "zeroize",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "crates"
          },
          {
            "name": "zeroize_derive",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "crates"
          },
          {
            "name": "zlib-rs",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "crates"
          },
          {
            "name": "astroid",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "astroid",
            "direct": false,
            "version": "2.15.8",
            "ecosystem": "pypi"
          },
          {
            "name": "async-timeout",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "backports-tarfile",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "build",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cachetools",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cbor2",
            "direct": false,
            "version": "5.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2025.8.3",
            "ecosystem": "pypi"
          },
          {
            "name": "cffi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "pypi"
          },
          {
            "name": "colorama",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "crcmod",
            "direct": false,
            "version": "1.7",
            "ecosystem": "pypi"
          },
          {
            "name": "dbus-fast",
            "direct": false,
            "version": "2.44.3",
            "ecosystem": "pypi"
          },
          {
            "name": "dill",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "distlib",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "docopt",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "pypi"
          },
          {
            "name": "exceptiongroup",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "execnet",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.20.3",
            "ecosystem": "pypi"
          },
          {
            "name": "flit-core",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "hidapi",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.15",
            "ecosystem": "pypi"
          },
          {
            "name": "importlib-metadata",
            "direct": false,
            "version": "8.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "incremental",
            "direct": false,
            "version": "24.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "iniconfig",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-classes",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-context",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-functools",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jeepney",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "lazy-object-proxy",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "libcst",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-it-py",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markupsafe",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mccabe",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "more-itertools",
            "direct": false,
            "version": "10.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-extensions",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "25.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pathspec",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pluggy",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pycln",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pycodestyle",
            "direct": false,
            "version": "2.14.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": "2.22",
            "ecosystem": "pypi"
          },
          {
            "name": "pycryptodome",
            "direct": false,
            "version": "3.23.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic",
            "direct": false,
            "version": "1.10.22",
            "ecosystem": "pypi"
          },
          {
            "name": "pyflakes",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pykwalify",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyobjc-core",
            "direct": false,
            "version": "11.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyobjc-framework-cocoa",
            "direct": false,
            "version": "11.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyobjc-framework-corebluetooth",
            "direct": false,
            "version": "11.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyobjc-framework-libdispatch",
            "direct": false,
            "version": "11.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyproject-api",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyproject-hooks",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyqt5",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": false,
            "version": "2.9.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytokens",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pywin32-ctypes",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml-ft",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": false,
            "version": "14.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ruamel-yaml",
            "direct": false,
            "version": "0.19.1",
            "ecosystem": "pypi"
          },
          {
            "name": "scan-build",
            "direct": false,
            "version": "2.0.20",
            "ecosystem": "pypi"
          },
          {
            "name": "secretstorage",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "shellingham",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "pypi"
          },
          {
            "name": "six",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sortedcontainers",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "stellar-sdk",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "tomli",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tomlkit",
            "direct": false,
            "version": "0.13.3",
            "ecosystem": "pypi"
          },
          {
            "name": "towncrier",
            "direct": false,
            "version": "23.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tox-uv",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "trezor-firmware",
            "direct": false,
            "version": "0.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typer",
            "direct": false,
            "version": "0.17.3",
            "ecosystem": "pypi"
          },
          {
            "name": "uhid-freebsd",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "virtualenv",
            "direct": false,
            "version": "20.36.1",
            "ecosystem": "pypi"
          },
          {
            "name": "web3",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "wheel",
            "direct": false,
            "version": "0.46.2",
            "ecosystem": "pypi"
          },
          {
            "name": "winrt-runtime",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "winrt-windows-devices-bluetooth",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "winrt-windows-devices-bluetooth-advertisement",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "winrt-windows-devices-bluetooth-genericattributeprofile",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "winrt-windows-devices-enumeration",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "winrt-windows-foundation",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "winrt-windows-foundation-collections",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "winrt-windows-storage-streams",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "wrapt",
            "direct": false,
            "version": "1.17.3",
            "ecosystem": "pypi"
          },
          {
            "name": "zipp",
            "direct": false,
            "version": "3.23.0",
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 450,
        "direct_count": 86,
        "indirect_count": 364
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 125,
        "merged_prs": 3829,
        "open_issues": 535,
        "closed_ratio": 0.792,
        "closed_issues": 2039,
        "closed_unmerged_prs": 700
      },
      "bus_factor": 5,
      "top_contributors": [
        {
          "type": "User",
          "login": "prusnak",
          "commits": 4252,
          "avatar_url": "https://avatars.githubusercontent.com/u/42201?u=8c72f20761659f494cc1773e51b13acdeabedfe2&v=4"
        },
        {
          "type": "User",
          "login": "matejcik",
          "commits": 2384,
          "avatar_url": "https://avatars.githubusercontent.com/u/596073?v=4"
        },
        {
          "type": "User",
          "login": "TychoVrahe",
          "commits": 1099,
          "avatar_url": "https://avatars.githubusercontent.com/u/37884576?u=c21c0d623ceacc9d53b2f3d7474072c7fb51a980&v=4"
        },
        {
          "type": "User",
          "login": "andrewkozlik",
          "commits": 1020,
          "avatar_url": "https://avatars.githubusercontent.com/u/42678794?u=e9aaf0b14c41b13757f4cbc00f7b32aa6bf22b61&v=4"
        },
        {
          "type": "User",
          "login": "tsusanka",
          "commits": 997,
          "avatar_url": "https://avatars.githubusercontent.com/u/1835345?u=29dd8e8d9cb1869fdd2896f6078735b6578f25de&v=4"
        },
        {
          "type": "User",
          "login": "romanz",
          "commits": 955,
          "avatar_url": "https://avatars.githubusercontent.com/u/9900?u=7bddbb9f558c51cf0d8f1754f506d395d776a71a&v=4"
        },
        {
          "type": "User",
          "login": "mmilata",
          "commits": 914,
          "avatar_url": "https://avatars.githubusercontent.com/u/85857?u=6e497622bb373e49b88befcc0259fd37fb31ade3&v=4"
        },
        {
          "type": "User",
          "login": "jpochyla",
          "commits": 889,
          "avatar_url": "https://avatars.githubusercontent.com/u/1055497?u=1ff67e64c1d6475c91bf7d4d767a624fa1a6663d&v=4"
        },
        {
          "type": "User",
          "login": "obrusvit",
          "commits": 528,
          "avatar_url": "https://avatars.githubusercontent.com/u/14001709?u=1e73b565dc1865c60750f0b2acc912e795f20551&v=4"
        },
        {
          "type": "User",
          "login": "cepetr",
          "commits": 520,
          "avatar_url": "https://avatars.githubusercontent.com/u/60569462?u=c31508a5f708ea35982f371cf2c1a6048e03c355&v=4"
        }
      ],
      "contributors_sampled": 100,
      "top_contributor_share": 0.241
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "bot-auto-assign.yml",
        "bot-common-sync.yml",
        "bot-needs-qa.yml",
        "bot-project-automation.yml",
        "cflite.yml",
        "common.yml",
        "core-hw.yml",
        "core.yml",
        "crowdin-pull.yml",
        "crowdin-push.yml",
        "crowdin-ui-check-reuse.yml",
        "crowdin-ui-check.yml",
        "legacy.yml",
        "prebuild.yml",
        "release-emu.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".pylintrc",
        "tox.ini"
      ],
      "has_editorconfig": true,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 8,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "20 out of 20 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 36 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 0,
            "reason": "dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 10,
            "reason": "project is fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 9,
            "reason": "dependency not pinned by hash detected -- score normalized to 9",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "20 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "5990b91ff0b247e10777dac6c0710a4d5a111cba",
        "ran_at": "2026-07-17T10:09:18Z",
        "aggregate_score": 5.9,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/trezor/trezor-firmware",
    "host": "github.com",
    "name": "trezor-firmware",
    "owner": "trezor"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 75,
      "inputs": {
        "security": 59,
        "vitality": 60,
        "community": 78,
        "governance": 86,
        "engineering": 90
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 60,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "commits_last_year": 2511,
              "human_commit_share": null,
              "days_since_last_push": 0,
              "active_weeks_last_year": 52
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "52/52 weeks with commits",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 52
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "2511 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 2511
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "no_commit_sample",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 78,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "excellent",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 87,
            "inputs": {
              "forks": 780,
              "stars": 1754,
              "watchers": 68,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1,754 stars",
                "points": 52.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1754
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "780 forks",
                "points": 24.1,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 780
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "68 watchers",
                "points": 10.2,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 68
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "packages": [
                "trezor"
              ],
              "dependents": null,
              "ecosystems": "pypi",
              "total_downloads": null,
              "monthly_downloads": 19737
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "19,737 downloads/month across pypi",
                "points": 57.3,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 19737,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "excellent",
        "name": "Sustainability & Governance",
        "value": 86,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "excellent",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 86,
            "inputs": {
              "bus_factor": 5,
              "contributors_sampled": 100,
              "top_contributor_share": 0.241
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "5 contributor(s) cover half of all commits",
                "points": 45.9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 24% of commits",
                "points": 17.1,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 24
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "100 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 36 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "merged_prs": 3829,
              "open_issues": 535,
              "closed_issues": 2039,
              "issue_closed_ratio": 0.792,
              "closed_unmerged_prs": 700
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "79% of issues closed",
                "points": 37,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 79
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "3829/4529 decided PRs merged",
                "points": 32.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 3829,
                      "decided": 4529
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "followers": 1238,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "trezor",
              "public_repos": 67,
              "account_age_days": 4842
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "1,238 followers of trezor",
                "points": 22.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1238,
                      "login": "trezor"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "67 public repos, account ~13 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 67
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "trezor"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 66
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 66 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 66
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "61 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 61
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 90,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "15 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".pylintrc, tox.ini",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".pylintrc, tox.ini"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "20 out of 20 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "trezor",
                "micropython",
                "python",
                "firmware",
                "bitcoin",
                "wallet",
                "rust",
                "c",
                "cryptography",
                "cryptocurrency"
              ],
              "has_wiki": false,
              "homepage": "https://trezor.io",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://trezor.io",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "10 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 59,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 59,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 5.9
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "20 out of 20 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 36 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "dangerous workflow patterns detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is fuzzed",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 9",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "20 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 9
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 67,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "critical",
            "name": "Agent context & guidance",
            "note": "Excluded from scoring (no data or not applicable): Legible commit history. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "legible_commit_history"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": null,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): Demonstrated agent practice, Automated maintenance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "demonstrated_agent_practice",
                    "automated_maintenance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 99,
            "inputs": {
              "has_nix": true,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "uv.lock"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [
                "Makefile",
                "ci/hardware_tests/tpmb/Makefile",
                "common/protob/Makefile",
                "common/udev/dist/Makefile",
                "core/Makefile",
                "core/embed/projects/bootloader/protob/pb/Makefile",
                "crypto/Makefile",
                "legacy/Makefile",
                "legacy/bootloader/Makefile",
                "legacy/demo/Makefile",
                "legacy/emulator/Makefile",
                "legacy/firmware/Makefile",
                "legacy/firmware/protob/Makefile",
                "legacy/gen/Makefile",
                "legacy/intermediate_fw/Makefile",
                "python/Makefile",
                "rust/Makefile",
                "storage/tests/Makefile",
                "storage/tests/c/Makefile",
                "storage/tests/c0/Makefile",
                "storage/tests/c3/Makefile",
                "tests/fido_tests/u2f-tests-hid/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "core/pyrightconfig.json",
                "pyrightconfig.json",
                "python/pyrightconfig.json",
                "python/src/trezorlib/py.typed"
              ],
              "agent_commit_share": null,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": null
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile, ci/hardware_tests/tpmb/Makefile, common/protob/Makefile, common/udev/dist/Makefile, core/Makefile, core/embed/projects/bootloader/protob/pb/Makefile, crypto/Makefile, legacy/Makefile, legacy/bootloader/Makefile, legacy/demo/Makefile, legacy/emulator/Makefile, legacy/firmware/Makefile, legacy/firmware/protob/Makefile, legacy/gen/Makefile, legacy/intermediate_fw/Makefile, python/Makefile, rust/Makefile, storage/tests/Makefile, storage/tests/c/Makefile, storage/tests/c0/Makefile, storage/tests/c3/Makefile, tests/fido_tests/u2f-tests-hid/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile, ci/hardware_tests/tpmb/Makefile, common/protob/Makefile, common/udev/dist/Makefile, core/Makefile, core/embed/projects/bootloader/protob/pb/Makefile, crypto/Makefile, legacy/Makefile, legacy/bootloader/Makefile, legacy/demo/Makefile, legacy/emulator/Makefile, legacy/firmware/Makefile, legacy/firmware/protob/Makefile, legacy/gen/Makefile, legacy/intermediate_fw/Makefile, python/Makefile, rust/Makefile, storage/tests/Makefile, storage/tests/c/Makefile, storage/tests/c0/Makefile, storage/tests/c3/Makefile, tests/fido_tests/u2f-tests-hid/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".pylintrc, tox.ini",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".pylintrc, tox.ini"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "core/pyrightconfig.json, pyrightconfig.json, python/pyrightconfig.json, python/src/trezorlib/py.typed",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "core/pyrightconfig.json, pyrightconfig.json, python/pyrightconfig.json, python/src/trezorlib/py.typed"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, Nix, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, Nix, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 9",
                "points": 9,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "primary_language": "C",
              "largest_source_bytes": 2667011,
              "source_files_sampled": 3121,
              "oversized_source_files": 51
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "C (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "51/3121 source files over 60KB",
                "points": 54.1,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 3121,
                      "oversized": 51
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "good",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": [
                "common/protob/messages-benchmark.proto",
                "common/protob/messages-bitcoin.proto",
                "common/protob/messages-ble.proto",
                "common/protob/messages-bootloader.proto",
                "common/protob/messages-cardano.proto",
                "common/protob/messages-common.proto",
                "common/protob/messages-crypto.proto",
                "common/protob/messages-debug.proto",
                "common/protob/messages-definitions.proto",
                "common/protob/messages-eos.proto",
                "common/protob/messages-ethereum-eip712.proto",
                "common/protob/messages-ethereum.proto",
                "common/protob/messages-evolu.proto",
                "common/protob/messages-management.proto",
                "common/protob/messages-monero.proto",
                "common/protob/messages-nem.proto",
                "common/protob/messages-nostr.proto",
                "common/protob/messages-ripple.proto",
                "common/protob/messages-solana.proto",
                "common/protob/messages-stellar.proto",
                "common/protob/messages-telemetry.proto",
                "common/protob/messages-tezos.proto",
                "common/protob/messages-thp.proto",
                "common/protob/messages-tron.proto",
                "common/protob/messages-webauthn.proto",
                "common/protob/messages.proto",
                "common/protob/options.proto",
                "core/embed/projects/bootloader/protob/pb/messages-debug.proto",
                "core/embed/projects/bootloader/protob/pb/messages.proto",
                "legacy/firmware/protob/messages-bitcoin.proto",
                "legacy/firmware/protob/messages-common.proto",
                "legacy/firmware/protob/messages-crypto.proto",
                "legacy/firmware/protob/messages-debug.proto",
                "legacy/firmware/protob/messages-definitions.proto",
                "legacy/firmware/protob/messages-ethereum.proto",
                "legacy/firmware/protob/messages-management.proto",
                "legacy/firmware/protob/messages-nem.proto",
                "legacy/firmware/protob/messages-stellar.proto",
                "legacy/firmware/protob/messages-thp.proto",
                "legacy/firmware/protob/messages.proto",
                "legacy/firmware/protob/options.proto",
                "rust/trezor-thp/examples/host-cli/pb/messages-common.proto",
                "rust/trezor-thp/examples/host-cli/pb/messages-management.proto",
                "rust/trezor-thp/examples/host-cli/pb/messages-thp.proto",
                "rust/trezor-thp/examples/host-cli/pb/messages.proto",
                "rust/trezor-thp/examples/host-cli/pb/options.proto"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "common/protob/messages-benchmark.proto, common/protob/messages-bitcoin.proto, common/protob/messages-ble.proto, common/protob/messages-bootloader.proto, common/protob/messages-cardano.proto, common/protob/messages-common.proto, common/protob/messages-crypto.proto, common/protob/messages-debug.proto, common/protob/messages-definitions.proto, common/protob/messages-eos.proto, common/protob/messages-ethereum-eip712.proto, common/protob/messages-ethereum.proto, common/protob/messages-evolu.proto, common/protob/messages-management.proto, common/protob/messages-monero.proto, common/protob/messages-nem.proto, common/protob/messages-nostr.proto, common/protob/messages-ripple.proto, common/protob/messages-solana.proto, common/protob/messages-stellar.proto, common/protob/messages-telemetry.proto, common/protob/messages-tezos.proto, common/protob/messages-thp.proto, common/protob/messages-tron.proto, common/protob/messages-webauthn.proto, common/protob/messages.proto, common/protob/options.proto, core/embed/projects/bootloader/protob/pb/messages-debug.proto, core/embed/projects/bootloader/protob/pb/messages.proto, legacy/firmware/protob/messages-bitcoin.proto, legacy/firmware/protob/messages-common.proto, legacy/firmware/protob/messages-crypto.proto, legacy/firmware/protob/messages-debug.proto, legacy/firmware/protob/messages-definitions.proto, legacy/firmware/protob/messages-ethereum.proto, legacy/firmware/protob/messages-management.proto, legacy/firmware/protob/messages-nem.proto, legacy/firmware/protob/messages-stellar.proto, legacy/firmware/protob/messages-thp.proto, legacy/firmware/protob/messages.proto, legacy/firmware/protob/options.proto, rust/trezor-thp/examples/host-cli/pb/messages-common.proto, rust/trezor-thp/examples/host-cli/pb/messages-management.proto, rust/trezor-thp/examples/host-cli/pb/messages-thp.proto, rust/trezor-thp/examples/host-cli/pb/messages.proto, rust/trezor-thp/examples/host-cli/pb/options.proto",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "common/protob/messages-benchmark.proto, common/protob/messages-bitcoin.proto, common/protob/messages-ble.proto, common/protob/messages-bootloader.proto, common/protob/messages-cardano.proto, common/protob/messages-common.proto, common/protob/messages-crypto.proto, common/protob/messages-debug.proto, common/protob/messages-definitions.proto, common/protob/messages-eos.proto, common/protob/messages-ethereum-eip712.proto, common/protob/messages-ethereum.proto, common/protob/messages-evolu.proto, common/protob/messages-management.proto, common/protob/messages-monero.proto, common/protob/messages-nem.proto, common/protob/messages-nostr.proto, common/protob/messages-ripple.proto, common/protob/messages-solana.proto, common/protob/messages-stellar.proto, common/protob/messages-telemetry.proto, common/protob/messages-tezos.proto, common/protob/messages-thp.proto, common/protob/messages-tron.proto, common/protob/messages-webauthn.proto, common/protob/messages.proto, common/protob/options.proto, core/embed/projects/bootloader/protob/pb/messages-debug.proto, core/embed/projects/bootloader/protob/pb/messages.proto, legacy/firmware/protob/messages-bitcoin.proto, legacy/firmware/protob/messages-common.proto, legacy/firmware/protob/messages-crypto.proto, legacy/firmware/protob/messages-debug.proto, legacy/firmware/protob/messages-definitions.proto, legacy/firmware/protob/messages-ethereum.proto, legacy/firmware/protob/messages-management.proto, legacy/firmware/protob/messages-nem.proto, legacy/firmware/protob/messages-stellar.proto, legacy/firmware/protob/messages-thp.proto, legacy/firmware/protob/messages.proto, legacy/firmware/protob/options.proto, rust/trezor-thp/examples/host-cli/pb/messages-common.proto, rust/trezor-thp/examples/host-cli/pb/messages-management.proto, rust/trezor-thp/examples/host-cli/pb/messages-thp.proto, rust/trezor-thp/examples/host-cli/pb/messages.proto, rust/trezor-thp/examples/host-cli/pb/options.proto"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "pypi package 'TrezorCrypto' points at a different repository (https://github.com/zebra-lucky/trezor-crypto); excluded from ecosystem scoring",
    "Could not fetch pypi package 'trezor-firmware' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-17T10:09:51.285748Z",
  "schema_version": "0.11.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/trezor/trezor-firmware.svg",
  "full_name": "trezor/trezor-firmware",
  "license_state": "custom",
  "license_spdx": null
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.11.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsPyPI.