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.0a14-cp314-cp314-win_amd64.whl (871.4 kB view details)

Uploaded CPython 3.14Windows x86-64

memscope_fw-0.1.0a14-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.0a14-cp314-cp314-macosx_11_0_arm64.whl (883.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

memscope_fw-0.1.0a14-cp313-cp313-win_amd64.whl (861.5 kB view details)

Uploaded CPython 3.13Windows x86-64

memscope_fw-0.1.0a14-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.0a14-cp313-cp313-macosx_11_0_arm64.whl (881.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

memscope_fw-0.1.0a14-cp312-cp312-win_amd64.whl (863.6 kB view details)

Uploaded CPython 3.12Windows x86-64

memscope_fw-0.1.0a14-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.0a14-cp312-cp312-macosx_11_0_arm64.whl (884.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

memscope_fw-0.1.0a14-cp311-cp311-win_amd64.whl (877.0 kB view details)

Uploaded CPython 3.11Windows x86-64

memscope_fw-0.1.0a14-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.0a14-cp311-cp311-macosx_11_0_arm64.whl (886.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a14-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 410870636f6bb58da290d9add16704fd72e35cc05cffe16dfa18311b27524c04
MD5 028932a217bb56f461ffba7ed53e48fe
BLAKE2b-256 a4b8e8936b2298be498a526be017728b6750a8bc52b48c0351d59e5cd57b321a

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a14-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.0a14-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f336ca4dac9727c9afdc2aec0c9afa97624c2f5bd75849af354305a8c431e2af
MD5 d9ff6834df4c9568f75c06e9e5217bdf
BLAKE2b-256 19cc09543b071379bc3fa108eb6339f394dd30710b86e34eaaf20b894b47c47d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a14-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9e96566feba54828406288613e851b2679e8f009af87389d0450a54c32d5945
MD5 197c3981d76ce7851e1119c7d7945334
BLAKE2b-256 82260351f17b4ba21ef8a4daab4ae011e9d074000ff182122111351abbcb3b93

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a14-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a5ec5eb21d2b897fc54ffb410aaa7cc197aa71238ba8343c2031dd73646b1d0f
MD5 b8f19d39095a5b81aef389357c289eb9
BLAKE2b-256 e19b54ec2adb38f7088e2d64c5fed29e3197977f5406a4e72cff2f7a0df7fb2c

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a14-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.0a14-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3eaa3c5e91a046a5fd80f639e184b67d4e72d1df21231598be2a62c57c12ff6a
MD5 216ee54eccdb6b3545124f04c7f7d8df
BLAKE2b-256 0da5bad27b0ca2153137ab8b7c1f9676757ada4162113d47c544626f4ed89372

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a14-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1a31b960d912c5288be1bace33cd6286716a59764d339d1f7b45c7e79bd6a4b8
MD5 8be681420d93e8fc2f586c051b42e328
BLAKE2b-256 45d07439f13b296a94f643357c2d392044c9a1574aece769f906d2064780b490

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a14-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 90ff39e2fbf594fd6aaf917a31821c312cd0e97c42911a294fb52704776a7486
MD5 740a52702d51146b1cc8f0fb700f5e47
BLAKE2b-256 e6750033aeafdee034255201a29d057333400f5893b7dfde36a31c6908b05d75

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a14-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.0a14-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b4a451777a5941d6d16e8d3d682e963131aca81b679a61dae0c30d8860855bbc
MD5 a9a5a5affe0fdc86f54035d32aa03196
BLAKE2b-256 137baa9330cd7c55b253d95636065e9dffc514f85fe8c1366ae402a0fd53237d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a14-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76d9c44ce89127c76e9826b64c4eb81a8e6edb0ba4396bbd3f903875936f1c1f
MD5 1f22cea4fcfdbd91887340260a48fa11
BLAKE2b-256 49c4c066b20405a3b0c1329af2f517e3071ecba3470cf7c52d3ee4142e0346e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a14-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 55980e75535c2c84944dbc4dbbf7144ed6446baa5180ba809000f53a54a57386
MD5 7203d3c8db1b1dfaad8761014a01550b
BLAKE2b-256 b70bce98b00757afad4f467a36e6468df7f78428fa14d8c27e8d56c2a238a8d2

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a14-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.0a14-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8c97ea599b7c76ed350145c7a173345f7fa15aa6f7a0d853041f76b6c0f8e4c8
MD5 2415c907c3ada19f9294a3111cdfde1e
BLAKE2b-256 c7174372b0b78bd27641db9fc74fe5a91e506b2ce3b7eded5bd6088c06bd9fa3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a14-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b48df24a0d5d8baee476c3fb9ade853bd1764af136e54566859105eca0b30744
MD5 d2ae4f96d8d29875487a9a92ce115a6a
BLAKE2b-256 16163055a5f94e6da71cc5f29b060abc1c50aadf8cb9b76dd1ebd5ea871e4e2d

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