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

License at a glance. MemScope is free — the memscope-fw distribution on PyPI is gratis for any use, including commercial use by companies of any size. No license key, no watermark, no time limit, no seat count, no procurement required. Run analyze, validate, diff, and --strict CI gating today, indefinitely. Optional commercial Bundles (PR/Slack notifications, SoC-family analysis extras, ISO 26262 / IEC 62304 / DO-178C compliance evidence packages, custom bespoke extensions) extend the tool for paying customers — those are delivered as Customer-Bound Wheels separately from the free PyPI core. Bundle licences are not yet for sale — the commercial entity is still being registered. Closed-source proprietary EULA — not OSI / FSF open source. Full text: LICENSE.


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. The free core makes no network calls. 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.

What's free vs what's paid

Free for everyone, forever (the memscope-fw distribution on PyPI):

  • analyze — full ELF/MAP/linker analysis, all reports
  • validate — JSON-schema sanity check, ideal as a CI-pipeline wedge
  • diff — baseline comparison + interactive visualization
  • --strict exit codes for CI gating
  • Custom [budgets] / [policies] / [suppressions] config sections
  • CSV export
  • HTML report with full Memory Layout Explorer
  • All current and future toolchain parsers (GNU, Keil, Clang/LLD, etc.)

Paid commercial Bundles (delivered as Customer-Bound Wheels, separately from PyPI):

  • PR / Slack / email notifications — auto-post footprint diffs as comments on GitHub / GitLab / Bitbucket pull requests. Subscription Bundle.
  • SoC-family analysis extras — STM32 dual-core partition awareness, NXP S32K safety regions, Nordic SoftDevice handling, ESP32 IRAM/DRAM/PSRAM separation, etc. Subscription Bundle.
  • Compliance evidence Bundles — ISO 26262 TCL evidence, IEC 62304 SOUP qualification, DO-178C tool qualification kit. One-Time fee + optional annual maintenance.
  • Custom toolchain support — IAR, Renesas RX/RH850, Microchip MPLAB, custom proprietary linker formats. One-Time engineering contract.
  • Bespoke per-customer features — internal symbol-renaming preprocessor support, custom HTML branding, internal-format adapters. One-Time engineering contract.

Bundle availability. Bundle licences are not yet on sale. The commercial entity that will issue them is being registered; until then, only the free core is operational and there is nothing to purchase. To be notified when Bundles become available, email dumitrescu.adrian121@gmail.com.

Documentation

Public documentation (CLI reference, CMake integration, CI tutorial, report interpretation guide, config schema, troubleshooting, privacy & GDPR posture, enterprise procurement Q&A) ships in docs/public/ and is also published at https://adrian-dumitrescu.github.io/memscope-docs/.

A condensed walkthrough is available via:

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

Every subcommand has built-in --help documentation.

Privacy posture

  • The free core makes no network calls of any kind. Your ELF / MAP files never leave your machine.
  • Optional Subscription Bundles (when purchased) contact the licensing backend (Keygen.sh) on first activation and on a periodic refresh interval, transmitting only the License Key, a machine fingerprint hash, and the Bundle version. No analysis content is ever transmitted.
  • Opt-in telemetry is OFF by default; if enabled in memscope.toml, the User specifies the recipient endpoint — the Licensor neither receives nor stores telemetry.
  • Full privacy policy: docs/public/privacy.md.

Support

For Bundle inquiries, custom engineering engagements, bug reports in the free core, and integration help:

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

License

Closed-source proprietary EULA — see LICENSE for the binding text and a Plain-English summary at the top.

In short:

  • Free core (the PyPI distribution) is gratis for any use, including commercial use inside a company. No license key, no seat count, no time limit, no payment, no contact with the maintainer required.
  • Optional commercial Bundles are delivered as Customer-Bound Wheels separately from PyPI, under either Subscription, One-Time, or Bespoke licensing models. Not yet generally available for sale — register interest at dumitrescu.adrian121@gmail.com.
  • Not open source. No rights are granted under any OSI-approved or FSF-recognised license. Source code is not distributed; you receive the binary wheel published on PyPI.

Project details


Download files

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

Source Distribution

memscope_fw-0.2.0a5.tar.gz (687.2 kB view details)

Uploaded Source

Built Distributions

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

memscope_fw-0.2.0a5-cp314-cp314-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.14Windows x86-64

memscope_fw-0.2.0a5-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (2.0 MB view details)

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

memscope_fw-0.2.0a5-cp314-cp314-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

memscope_fw-0.2.0a5-cp313-cp313-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.13Windows x86-64

memscope_fw-0.2.0a5-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (2.0 MB view details)

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

memscope_fw-0.2.0a5-cp313-cp313-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

memscope_fw-0.2.0a5-cp312-cp312-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.12Windows x86-64

memscope_fw-0.2.0a5-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (2.0 MB view details)

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

memscope_fw-0.2.0a5-cp312-cp312-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

memscope_fw-0.2.0a5-cp311-cp311-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.11Windows x86-64

memscope_fw-0.2.0a5-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (2.0 MB view details)

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

memscope_fw-0.2.0a5-cp311-cp311-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file memscope_fw-0.2.0a5.tar.gz.

File metadata

  • Download URL: memscope_fw-0.2.0a5.tar.gz
  • Upload date:
  • Size: 687.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for memscope_fw-0.2.0a5.tar.gz
Algorithm Hash digest
SHA256 1ed6002c97e7a67341478a4175612ff0efd7dda3ac0fd814618a0d8f0939fd10
MD5 d27304c151c37d8804c72a1293979cf7
BLAKE2b-256 55bd15b3a6f1524dfb22df18db99e4d6bf693b47ea28370c08b83f21f3820e02

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 326edeb6327d239be498bc42a09006e2a64c8b3c4c81622b1387dfa422a15c02
MD5 0c36f36a7a5c1713ea441a2999426511
BLAKE2b-256 d2cb063c8c0449b92cd200a90ff108e4978a6f20639e4d528dd6f48af2c8f0a0

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 a21cfb15f0d9c866aee804ca321e5281856ed4e6fe608a93dde5774c3cd26583
MD5 270ceafdd92d013c509f932975bcc282
BLAKE2b-256 f37df9b06bcdac10783e843c3514829ee027bcaaa97f4ebc5c54c75e984c9246

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2d0dd71643d7d693365bcd25a36394eb81a492be3bfc7397594b9db3f290793
MD5 cbd8141d3a689145443e3d2a570c635f
BLAKE2b-256 4cb3d9eb1965a82b7fec83ad97ad2e13943054a9522302164a9cfbf3040da1a3

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 59961fdd2a2923e666400aa923b2382c69f61e7907ea6a43a06f64da6bdf42ff
MD5 479ed4a13d32c0bb9f1eece28b7e20f3
BLAKE2b-256 cf95b7aa4cec4418ab93d7df222c2665055a27d1a57dbd98cdc1c1f0fe5381f0

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 8951e9dd5e825bf15dd24c5bda1e2a16190ae0748f3816764580460041782ebc
MD5 8fc5b8038a732ec2cd06c1d812b4a953
BLAKE2b-256 a1f87c19a1d0431d5c6cd0e00bd80bd1d2e73bac7e7105a0d6e610928a92f04f

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ebb327b09af5fe3ac53368ef0893e53fb357c9f3ba7209607d9ec8fbcf6f723a
MD5 39a94391ee6d80418d2fd653d5d1761f
BLAKE2b-256 716c7e626f50874562e5b5eab4315239b6533293d9e2f80a8589ddc90e73fdd5

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a8b9e1d66a7693ab285f5eafa0849ec2a9831a6a2192994df8603ab9ce042ff9
MD5 ac5e6fe2cf7db08009f3fa74189d4e0b
BLAKE2b-256 9b44f92d9e7bf5d5bc60f817f985645268c1166eb1be8100610310b79c376b5a

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 be4638482792fdebbc2d3a40a362e6bb8d859555275312f5e8ce832c96eb0e38
MD5 1ae9e775ddeb3f7450d4a7349e2de9d9
BLAKE2b-256 4768d557a071ae35ca942af1fd125c8b42433df7da114d0facdcd7cc9c1c09fb

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2612257deb3d0c1022345d32c302779c5060ba679c386ffb497e5ea8f6ed981
MD5 96dbaa985d44511b1c16e6e40368b841
BLAKE2b-256 0d1ed31caa74eda100426654fd7c1ad1ac73e6a35abb1a9847d893a73cda6739

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9ab95ee84fe94bb7813df8bc40fe89be9d3b608b2b956670fb592ed0115dc5e1
MD5 d51d0ee27bac72883f49d9fac6a69a79
BLAKE2b-256 6fb6ba86684532a7760b52e610ba315cb63b970556d2bc355e47cd26cf3299d9

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 81d9cb541bbce9a36647d17d898bcc648de458d87900291b8bc81c702be72467
MD5 bfe20a52ee8dfc6ce5f8c02c55c98ff1
BLAKE2b-256 1c4f9456fc2a4ecb6502b8ff06df93c464daa8c7785977d1d6f71efb9b76d148

See more details on using hashes here.

File details

Details for the file memscope_fw-0.2.0a5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.2.0a5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72f9232d32f66d17d5e6a0fa38b595869832880ca0087a9d1e92f487a513f6a5
MD5 1e75f9b81f7a7a00378c977b1416ab08
BLAKE2b-256 8aa917cb974c03079e172a575377bde9bcf953429ddf462ffe38903d5b62bd74

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