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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

memscope_fw-0.1.0a13-cp313-cp313-win_amd64.whl (861.6 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

memscope_fw-0.1.0a13-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.0a13-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.0a13-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a13-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0325f1368ba7928ed6f819f99d10b9b231e5b969563ba60b2b7f954af55cfecc
MD5 c188f15dfd24b5dd49b8fc68433e6e46
BLAKE2b-256 0ceed2751fee2eccc3e5e2719415a4365f289f983bea66fc4bc5bfa4b87db139

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a13-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.0a13-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7797ec6b7e5bf74c9d6e07bfcb76f998ffe09d26738658b20cfa9bc0fa93c032
MD5 7a830c3b7a2530882bad6d6694a55b0d
BLAKE2b-256 32807b368f239311c4705a2f2e642fc0b087b95a8dcdd9ceb3dcbfb00d27bc06

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a13-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0387523129a293314ee3d8efd27dd56496edf52711e91a2cc3eab9142fadf17
MD5 41e4e9c31fdb357e97f2fc22625bc27d
BLAKE2b-256 4f1aedb14dc1d9a91cfd363d358c5a35e24273d0802d3c25748bc43a8d4ea99b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a13-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 461f1db198cf16bca4215745fe1cbf47f53d3d36a9ce01c095797e4824c42f9e
MD5 f509c26851d93a8c5ed2d8daccecb085
BLAKE2b-256 a5c7a6f4446d82f8a6c769638f5e2a3e4031016af4d3e2a4fdd93e96b9dd671c

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a13-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.0a13-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fabdcf07e7a2ea8635d8749925a34f730e10a0f54064cd12d819c95bd480dfc0
MD5 67dd38100dbab8c7d18d090d34e8275d
BLAKE2b-256 2193c157add19afaa503ff1eef7d72903f2da004096d41332216331f16cf1a9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a13-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1e3ddddda8e4956393534554ad23a2b2a303568838c7d6dd82eec4f9788e228
MD5 3e9fc110284508870f47f1d099642846
BLAKE2b-256 351dd34cff479f76e36dc2eb94e66e8252cc1a68846e6c12a7f57813239bf7e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a13-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 127f808f9977707288e5b633e12c3f95e7ce7149c57925a71aa6cdf130bae814
MD5 5e3ff3e3cf4153d29bc646fee7661dac
BLAKE2b-256 ccdd74e8aef70494fb347368e53445e57dcfb77779cacee44c02983c0c538eeb

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a13-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.0a13-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 24c54efa1027e6ccd9e102f8b80a8c3369913838bba0c3813bae267a92132778
MD5 64631379ab82ae14b454e441c786a3e8
BLAKE2b-256 7a9a3907921dba26063aedb2c17c6f6c572463cd5076b84c9d93845705f17094

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a13-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 924f61c76ae49f38a1c3a30ad21dfb3a9211a64ae83edc8ae9c4aa97cfa6cf44
MD5 8ee5a7efc641e089b36941005a605280
BLAKE2b-256 872ca957a20e807805d28a8d8ee6821d358159da931ec8d228ca7e2249b63cd6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9d07223d4916548ffd1ad46676d0c788f3d6e5d67de48a010f85376540af98e9
MD5 48ec6d582ad0236b1dc8d4731120b0e3
BLAKE2b-256 a7d8033b578e177a2e1174b4a85642d5837e8c86910216289504a7e51d24379b

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a13-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.0a13-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 40cf49df3a01b7839034bcb547fa6a0b8b155feac7d98503efb5bd42ceff7131
MD5 198fdaf3fa830ee9006010ac84584251
BLAKE2b-256 c00cb39f32bcec8f4617c316378075740d28820dfadb902803a4c406d4f00e55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a13-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 acaae036d241af2858c03dcf274b2c3aeea7947297c4cc49575962c19cfede85
MD5 c21c7898260626208670ad62d726b81d
BLAKE2b-256 7153f0d1be12ef7b7c095482a3b4631bec4333522078af77cc70fb5285744317

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