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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

memscope_fw-0.1.0a11-cp312-cp312-win_amd64.whl (862.7 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

memscope_fw-0.1.0a11-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.0a11-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.0a11-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7aac3866359056cbf4617a5a7808ffff7f714936bd1a4a1807c75d7544f6f414
MD5 3fc71e489748f60096837be20f784e6f
BLAKE2b-256 3df1f651fdb2ecc943a05b1279ff64b609d22fdc9f443e94137ad98ac5f07fb4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad3b13e1f95268d800c2ccc2c18ad19a283ebe60bc63190b3f3d09758771ffee
MD5 af0f4d6dc1d652f0180ff2a31f631caa
BLAKE2b-256 8d710b5347ef52859f29d1a0cddd161455660b0ad0980ea78c5bde262c9aa3c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a11-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 46c885c3df42443e19a55eb37db621791be628286da2105c7927971cf8d85903
MD5 dc108f01ba6d47d46e941b5e737a6430
BLAKE2b-256 49b106d681b99ea4c8ec8e6f801b8caa2d864e4d8f8e0e7332a5f4143b556a8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f6b2217221f3030e770c81a32d7b64ad530c6a0b87dfa6c519e1acb3803a2089
MD5 f9cc606ae184f89f32747dfcb7d71104
BLAKE2b-256 ab27f1654bf64b4dd7eebb9533bd70fcce5c4907f2b469c41ceea884edf19b66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 03f621bed84c1c1e97138491fbfcf4b240490cbae4e8e25393fb199286f8a127
MD5 820590a5213df31cc4fd53e5a371e60a
BLAKE2b-256 251ea21934d9205a48a031f4e03fb6c81120ddfa6b20c64e86655b7222a4c436

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a11-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5404c98553df3df2226fa4b09ab6a5c4be007cf07657d3f2f8c2698725f737bf
MD5 b7ae666c240c9fec1bb765adb9d34349
BLAKE2b-256 f6b273e40462bf5733a7298de652e52a3f8fed329e1ceefe1598452c3b46239a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fc0b1d8e2ff51f771da02906d04732391edf8f83aa79639b2a0b03c82e87dcd5
MD5 bd63e9910e62fa7e5bd0f81a4f8bf02b
BLAKE2b-256 2aa974e4137cfa9785a32a3d011cc936c8fabe6198dec25c9f397b69f64a2985

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce84f95f976d33a1b8569a806f0d4171f4936739b3f0ae8bf5f4fc3c55d507dc
MD5 59c91a0a4a1b4c840611423433f164ff
BLAKE2b-256 2403bcf83969f88ff5b3be77c51323ceb376b63c3b6e467423f0323d5b44bd15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a11-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f90002d07bf3d961f173a33f12c8a7547ce7c4a6dede36ea81f5609323331a7
MD5 54448e5f72bc5e8ed27e270a8284b813
BLAKE2b-256 b32eb22688ba90bbfab9c1c8990796e6902fe4ee0daf0c2d4afca34b8b790cb2

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