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.0a8-cp313-cp313-win_amd64.whl (851.8 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

memscope_fw-0.1.0a8-cp313-cp313-macosx_11_0_arm64.whl (871.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

memscope_fw-0.1.0a8-cp312-cp312-win_amd64.whl (853.9 kB view details)

Uploaded CPython 3.12Windows x86-64

memscope_fw-0.1.0a8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

memscope_fw-0.1.0a8-cp312-cp312-macosx_11_0_arm64.whl (874.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

memscope_fw-0.1.0a8-cp311-cp311-win_amd64.whl (867.3 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

memscope_fw-0.1.0a8-cp311-cp311-macosx_11_0_arm64.whl (876.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 225591bd13d88671101bbed372adc6ce6586bd38dbd3ec61aa886c171831e7f1
MD5 fc5a0fd451f1b108f3ec4ab6e4a0c481
BLAKE2b-256 b85de69ce9c204dca713a9f1b368e421be848b255878c2a0134def0db1cf12fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9af80a51c7b95ae0291b007dd6cd18fa92086aab8cf7b965bf8e5e68744cc178
MD5 3bcf8ad860c64ff7c52929b47af0e80f
BLAKE2b-256 dcc0391d6670ddd9b9d536c918e2217e9c5b68ae49f7a9aefde9ec54337d282c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f1cac6f034262ea9aa2c0d9602c3a92e3ba94793b225ec574962e05df6bd18ce
MD5 93d42c5d64c01c638bf4f675d4558837
BLAKE2b-256 66770dc2606833b4df9a3daad98530e51915c7f29c4566aceaffc7e5a9e7256b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 240a227413ec6a71c6117eb5d401acbc0346c5120738996318d213e98b64a1bf
MD5 bb8cafce21100b6d9b55ae126b1ba808
BLAKE2b-256 f93cdd73ce4e9d7a161a555ed60493f68cbf695222f7a446296bba819e32de50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 640d7267bae80b2a086ee13d04dceb7a1573632aa21868c6b140a24343d56e61
MD5 fd08f068ce6f0124579501fe66167498
BLAKE2b-256 df4a914908a64ebcacc2f31333ffc16e83f237ac34031cb750b4552014a322d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 82f2c986a2731e1d7362988b5a6cc6cea63561b29a7849e6ea77aef2c9ed4abe
MD5 f099df0dfd76b2912d5d1b75217917c2
BLAKE2b-256 442d97a6f9cb3374eac325e4ac6f747bc9b8b4cbb940f2e83559ffd4aae0ac76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 153d2b9a27c7b202370b1c672051db65249e07e6269b6a5b8a87e93e163b3825
MD5 7db8fa142d9bf975ccbd295b8bdfe855
BLAKE2b-256 50baaf8ab2e89ae9f45a6076a87615686c6bcf633871fe09af5f3e7057672f26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a863f154ffa8f5d71e2b2eb5506840ecac636557eaa201f4de4cdaa86f93560
MD5 73f029eac783e9c543ce30752884c8e3
BLAKE2b-256 9ee53e43d91402993167cb5930598cf528fb0787eb151e19c679d26de8296f10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c2aeb96f59a65c038b0a61278ab9586740dfc5edd0fd7b495e51b981daab197
MD5 fedf82d6f59ef5f61ef611eece2cca89
BLAKE2b-256 48c7ba8476fe130209fcbed52b7152889abe0f2f0e13383f393b65d5d856f2ba

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