Skip to main content

Local-first firmware footprint intelligence for embedded engineering teams.

Project description

MemScope

Local-first firmware footprint intelligence for embedded teams.

MemScope analyzes your ELF, MAP, and linker artifacts to give you a clear picture of where your firmware's flash and RAM are going — and gates your CI build when a regression sneaks in. Built for embedded engineers who want SonarQube-style enforcement without sending build artifacts to a cloud.

pip install memscope-fw

What it does

  • Inspects ELF + MAP + linker scripts and reconstructs the per-region, per-section, per-symbol, per-component memory layout — everything that's actually placed in your firmware image and what each part costs.
  • Reports in three forms from a single run: a compact terminal summary for CI logs, a versioned JSON for scripts and dashboards, and a self-contained interactive HTML for engineers to explore.
  • Gates CI builds when a budget is busted, a region overflows, or a baseline diff exceeds your threshold — fail-fast with deterministic exit codes.
  • Compares two builds side-by-side via memscope diff, showing top regressions and reductions across regions, sections, symbols, and components.
  • Runs entirely offline after activation. No build artifacts ever leave your machine. No cloud backend.

Why teams pick MemScope over rolling their own scripts

Capability Hand-rolled scripts MemScope
Parse ELF + MAP + linker config consistently across toolchains Different per project One CLI, GNU + IAR + Keil + Clang/LLD all supported (dedicated parsers per toolchain, normalized to a single internal model)
Stable JSON schema your CI can rely on Brittle Versioned + validate subcommand
Drop-in CMake integration DIY cmake/FirmwareFootprint.cmake
Interactive HTML report for design reviews None Self-contained, no internet needed to open
CI gating with friendly error messages grep + bash --strict exit codes
Multi-core / multi-region partition awareness Usually missing First-class

Install

pip install memscope-fw

Requires Python ≥ 3.11. Wheels are published per-platform for Windows (x86_64) + Linux (manylinux2014, x86_64) + macOS (Apple Silicon / arm64), each on Python 3.11 / 3.12 / 3.13 / 3.14.

5-minute quick start

# 1. Analyze a single build — produces report.html you can open in any browser
memscope analyze \
  --elf path/to/firmware.elf \
  --map path/to/firmware.map \
  --linker path/to/linker.ld \
  --json report.json \
  --html report.html

# 2. Compare two builds (e.g. before/after a refactor)
memscope diff \
  --current-json report.json \
  --baseline-json baseline.json \
  --html diff.html

# 3. Gate CI on a regression budget (exits non-zero if violated)
memscope analyze --strict \
  --elf firmware.elf --map firmware.map --linker linker.ld \
  --baseline-json baseline.json

The HTML report is fully self-contained — D3, ECharts, and all interactive visualizations are bundled inline, so it works in air-gapped CI environments and can be archived as a single file.

Pricing model — TRIAL → FREE → PAID

State What works What's locked
TRIAL (first 14 days, automatic) Everything Nothing
FREE (after day 14, forever, no key) analyze + HTML/JSON reports + diff (visualization) + watermark --strict enforcement, validate subcommand, custom [budgets] / [policies], CSV export
PAID (with activation key) Everything, no watermark Nothing

Local builds never break. When the trial expires the tool silently devolves to FREE — memscope analyze keeps running in your dev workflow and your CMake builds keep producing reports. Only the CI-gating features (--strict, custom budgets) require activation. This means you can leave MemScope in your requirements.txt indefinitely without worrying about builds breaking when the trial ends.

To enable CI gating after the trial:

memscope license activate <YOUR-KEY>

Contact details for purchasing a key are in the seller's distribution channel (commercial license — see your purchase email or the support contact below).

Documentation

Full documentation (CLI reference, CMake integration, CI tutorial for GitHub Actions / GitLab / Jenkins / Bamboo, report interpretation guide, config schema, troubleshooting) is delivered with your purchase or available on request — email dumitrescu.adrian121@gmail.com.

A condensed walkthrough is also available via:

memscope --help                         # top-level commands
memscope analyze --help                 # per-command reference
memscope license --help                 # license management

Every subcommand has built-in --help documentation.

Privacy posture

  • All analysis runs locally. Your ELF / MAP files never leave your machine.
  • License activation phones the licensing server (Keygen) once on activation, then once per online refresh (default: every 7 days during a 7-day offline grace window). Telemetry beyond license validation is opt-in only.
  • The full privacy policy and data-flow specification is included with your license materials or available on request.

Support

For commercial inquiries, license issuance, bug reports, and integration help:

When reporting an issue, please include the output of memscope diagnostics export — it bundles version, environment, parser diagnostics, and license state into a single ZIP that's safe to attach.

License

Commercial. Paid use (--strict enforcement, validate, custom budgets, CSV export) requires a license key issued by the maintainer. The Free Edition — analyze + HTML/JSON reports + diff visualization, with a watermark — is available to all users indefinitely without a key after the 14-day trial.

For commercial licensing inquiries: dumitrescu.adrian121@gmail.com.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

memscope_fw-0.1.0a12-cp314-cp314-win_amd64.whl (870.5 kB view details)

Uploaded CPython 3.14Windows x86-64

memscope_fw-0.1.0a12-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

memscope_fw-0.1.0a12-cp314-cp314-macosx_11_0_arm64.whl (882.7 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

memscope_fw-0.1.0a12-cp313-cp313-win_amd64.whl (860.7 kB view details)

Uploaded CPython 3.13Windows x86-64

memscope_fw-0.1.0a12-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

memscope_fw-0.1.0a12-cp313-cp313-macosx_11_0_arm64.whl (880.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

memscope_fw-0.1.0a12-cp312-cp312-win_amd64.whl (862.8 kB view details)

Uploaded CPython 3.12Windows x86-64

memscope_fw-0.1.0a12-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

memscope_fw-0.1.0a12-cp312-cp312-macosx_11_0_arm64.whl (883.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

memscope_fw-0.1.0a12-cp311-cp311-win_amd64.whl (876.1 kB view details)

Uploaded CPython 3.11Windows x86-64

memscope_fw-0.1.0a12-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

memscope_fw-0.1.0a12-cp311-cp311-macosx_11_0_arm64.whl (885.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file memscope_fw-0.1.0a12-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0b3356ad70a06cb807cbc474572819c7203e018c364e8f92f7633a9ad791eaa8
MD5 a7d65a38fbca0c6ea3481d3f15704b7e
BLAKE2b-256 e9bcdd83fe3baf83c51fbd39812b462b86bda6ea1ea187d28d73c1eaa704b578

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 51741fd34188351c348b08fe369b0bd14e194bf9910f816a45f2773ab3dfd3b3
MD5 d7ff8e3270a35cc937f38b935203710b
BLAKE2b-256 b3a65fe6212a789fa5c726c510af2c1a7a289f5e75204923f51516bb067b5c4e

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2fbff859e2719ce790d22a7e8414d30329cce73a012f95f47a78918ae6e587d6
MD5 5658ec16d807730cf9569c75b026e545
BLAKE2b-256 766b0d3361457452a0c03e8fe00fb4ab07aa5ad32e0051ebf1a2086f8d032b7c

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cc94716dcee3d6166defe1deaaf30cc4741b49b1ecedae1e9f649529765cf2e3
MD5 632d4b13108f4d371e5d0c0d895acb18
BLAKE2b-256 f6631c9e3eab8b905a10986d30bf0da3eada869155389c79d3e05ab1796a567a

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c276d0384abd928b596e67ff67b5693fc239b5b64d05ec5f3b345fc07d096fe8
MD5 e7bd276926d4fd5a00292bd1c7199789
BLAKE2b-256 53461b0492c432e0ba9d20c587cf0f3a31130bea5622a392b2a35887fdf1d7c5

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 62904bb278d96774c43c0f1473b7153897d5340c61a5dbdcb7ecd147d620bf45
MD5 04ea966c9b38a0e8c5cda3b5b717ff21
BLAKE2b-256 279da51f6ba52b56b0f11adfc442d5fc57e8e38eebcf1a668e52a0f7ad095cd8

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e0190ec271c92f5e6c54f6b82a100f86938d4b94db13f598ef8a6add89211c15
MD5 01a906e988410fddc749f68f370c0dd8
BLAKE2b-256 b431d8c71fe9f1fcafcfe300b9d0afaa66a22f468f172c0cf7a8c4c8dbb53623

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5d7f02895865cafd8554a487b559d037b54354f8da0d6fb89feb55035128cbae
MD5 47c2c611f04a0ef50b57fae6a4869caa
BLAKE2b-256 89cc61f128a35b92f38f9a2d42d50d432c8baad4f9d08d186de1981abe521151

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d4d66554eb0b14dd7c941dbf8a1438ffbee41b7a96c66d3cd840b9cfc559a289
MD5 cedc9d253db05624bf32ba145751061b
BLAKE2b-256 85cd0058ef9ed485538b9b42924bf5acd318cb6acb0a65e285c59f9db7339adb

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6bc24b3837e1e640c81f35af16fa6f71d12bea7de748fe371ced58576b086e33
MD5 b41d23af0afd76b34e3f681e8a17d47d
BLAKE2b-256 d8d1209f0cd90f4e9097ce6bf97739b2bccb67ddc8aa8b6afa841bf9eccb36af

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f345c8fcee208d4530d6a95a35a8685e3aec89d5de0e836e874f0678ef3286c8
MD5 beaa03087ef06336ea42d96a6135a840
BLAKE2b-256 f35a0050d16b646357cf012b2bdf9b985c4df05e2520f189ab86edea3c4928f6

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a12-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2686d7887ac1213d50add0396531488f4f4e6f233f2ece474736fa84ac9a5b7d
MD5 953289b7977516b4f8ebda3bbd10c46c
BLAKE2b-256 08bc4450fb6359579d04f1d190637cf63feed81feb808f903108f721e307948f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page