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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file memscope_fw-0.1.0a9-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: memscope_fw-0.1.0a9-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 851.8 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9798409042d25030ddec9fc557f576fe97c010e2126e65d731adc435645090fe
|
|
| MD5 |
d3cd905ab6cda18bdde9098901b1dd73
|
|
| BLAKE2b-256 |
203927fb8a98c32cd47146d874faec6d158ef70a467eb92843f5ab9c4f8b3eb8
|
File details
Details for the file memscope_fw-0.1.0a9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: memscope_fw-0.1.0a9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27273b0843c37d5c36d1c25004b549263504e3673b9341e1aeb7b485823e9676
|
|
| MD5 |
6279575854eb3b9bc64ceb6840c089c0
|
|
| BLAKE2b-256 |
31cbef6e73de0dbf5d373f857f2f27d9c1bee2aa5ca4fc717a2d9ab3f0b51112
|
File details
Details for the file memscope_fw-0.1.0a9-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: memscope_fw-0.1.0a9-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 871.7 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78148629c34f7243955e54dd60e923c021a39d8518816efba863be16e3bcbcf3
|
|
| MD5 |
2cc24aeac2222bd4f49de0790255bbae
|
|
| BLAKE2b-256 |
3945a570011a5a957ba9db80053e1f2d75e6ceb9b90de1f6d0134d79195a2b51
|
File details
Details for the file memscope_fw-0.1.0a9-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: memscope_fw-0.1.0a9-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 853.9 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e89d6b8e0fec203a5c0d24fcf25e4e881c13dc19c6193361b10c05fe8900e9ce
|
|
| MD5 |
85cd178e5c088bb07b20aa881986a674
|
|
| BLAKE2b-256 |
91cdec6dbc343b46c8c819dfe41dff3bbe881362ca47ceebf8ccc84f3cd7eb2d
|
File details
Details for the file memscope_fw-0.1.0a9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: memscope_fw-0.1.0a9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39a117fe95cd5ce2ec8ca72660168385f92114d88bbed34e173cb5fa6731449e
|
|
| MD5 |
238bd4e1b3b536e1a4eaf1edadc480fa
|
|
| BLAKE2b-256 |
17cc0343bcad6e8db1eadc1bc22bc6d05ad98ddc94eb78d9d48754930464324c
|
File details
Details for the file memscope_fw-0.1.0a9-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: memscope_fw-0.1.0a9-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 874.4 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3cd259e1b600a5b723b00c45e890d0dd9e9224c18abe4ddde3d91bffae63bf0
|
|
| MD5 |
fb57b095d570a460641280be36425f0c
|
|
| BLAKE2b-256 |
45229781a281d39f021b6f9452784c546cabe14fe40f3efcee3b3453cc1d495a
|
File details
Details for the file memscope_fw-0.1.0a9-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: memscope_fw-0.1.0a9-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 867.3 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7200e03a24056d218b29b30e3927750b843d4999df24c4a5dd64fdef5ab9a872
|
|
| MD5 |
8361de3082747768d403d94c0fbd3329
|
|
| BLAKE2b-256 |
8b05e7f3f0bc7ccae632c395a5a6366c4ee787f6add5d12287765b5142766bbb
|
File details
Details for the file memscope_fw-0.1.0a9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: memscope_fw-0.1.0a9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8822a91add40395e6ceccfa599b1cd4a3f77f79139384b800dc1b625793f950a
|
|
| MD5 |
f367416bdf6bb1fd26bfdb69e834fa98
|
|
| BLAKE2b-256 |
5c19544984d218c2758cd3de668ddba732d317ba6461f20ba7aa3ae2b05a750a
|
File details
Details for the file memscope_fw-0.1.0a9-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: memscope_fw-0.1.0a9-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 876.7 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
986bd68e78cb74c5d9399512ad5962561ac181af682f69d6e3bf4a90d76f10f5
|
|
| MD5 |
2b7fb144153a6ed22118628940013c4a
|
|
| BLAKE2b-256 |
e1a702350f90aa3845dceb97dd899e7d35594d252ed1844bda9408f51d609b96
|