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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

memscope_fw-0.1.0a15-cp313-cp313-win_amd64.whl (864.3 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

memscope_fw-0.1.0a15-cp312-cp312-win_amd64.whl (866.4 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

memscope_fw-0.1.0a15-cp311-cp311-win_amd64.whl (879.8 kB view details)

Uploaded CPython 3.11Windows x86-64

memscope_fw-0.1.0a15-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.0a15-cp311-cp311-macosx_11_0_arm64.whl (889.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file memscope_fw-0.1.0a15-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for memscope_fw-0.1.0a15-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d820dab7756f970232d44e77b61255365195951ed4127f4825ae40b9303aadfb
MD5 87eb60538f21efbd4d28973b733bd6f9
BLAKE2b-256 0e30ef0d22636f3eae6b52542b197643db923e3d76c68a09c35f87dac2a7f158

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a15-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.0a15-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 10068ee20c17ece0fe7ead9b0bebd332f48bfbb52844bec789c1f2c53669bfd4
MD5 3fe4f591a0eb21f7a4bd647fdf4b5d3c
BLAKE2b-256 6ce7cd4ae397f084b77ab1d0023cf5e952994204b5e3185c71ab0c3f599fe7c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a15-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 24b303ccd554414124f1ac6d2287546b530ccbd65d3ad6219a8accb66b396c44
MD5 a4cc9a1548c0b4cba5fb852d7e70d545
BLAKE2b-256 fbd6c734439617925fb9035367b604b54a500c64c9e635610a7f78b6d5abefa9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a15-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e86fb42546223405845eb5fd2b7532436fde3f6fa0f70da79ed35aae0327d7f2
MD5 43fa2520bb9239146a6dd01a70277f78
BLAKE2b-256 7492818e40d10077231de6982a46ac0dc1b4910b1b688b4a43fd2367da81a717

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a15-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.0a15-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 60cc866db3d828081eea9e3e04d0b205b32bb538c17a041fa750f9692379e91e
MD5 e9c3b086458d73d4f5b655753c02645f
BLAKE2b-256 df7156734cac5e74de757a42bd05038931c35f0bb19f216e489c711292b2b5b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a15-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0374823de0202d37191b9a851b295732174bc7f7e08d65eb291c397644b05373
MD5 42a24fc0f40dbadd660deab1b06284f2
BLAKE2b-256 861b392cc2bf75a6f77c2165b5f9f1554105aad62ba95a675403903560a82f0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a15-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 22a28807a1e6e1197b052ad056bbbcf1d07281202fa505064630481650223374
MD5 baa8fac7949fd9356abd5220c52d62a4
BLAKE2b-256 386f1cbe1299a269765bd9b767197612cd52d22cd5c93739224f52ab30d51f02

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a15-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.0a15-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eb3a5d91406d54280fefeaf247d551ae92ae2ad59dbbf0d6389ae2f0cd22f94c
MD5 73ffc7b3ab5697224bc4f83c485e1e82
BLAKE2b-256 1766d844ecd6c6a701756fc61ccce1697499b48bcf211662a6a5b1d141fba6bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a15-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 46e73105ddc0901f904456c46f6d691c2f8197a93a422dd926fcbb20357239bf
MD5 cf255a3d133699189c6b7aec73e5c508
BLAKE2b-256 3c88f5eb2f3bd3afaf5a043fe069ca816aeb9068ba69a9afd3f896dab216f195

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a15-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5a0e5535d27bca5f6aa93b6c46ad3f62f4543c93deb74400ac1bf735c0e87041
MD5 763aa96c1e1afc4c966f7f08fb11f9b6
BLAKE2b-256 3d563e8ab158cefd5b6efd14b9e1526943cae9cda87295e62af0973f706ef21e

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a15-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.0a15-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0bd23df411387d46001fa19ccb7d8a6d934d590861fcd6026c8e6221d681dee2
MD5 ea903962884b8c5011afee0aed0fcc2a
BLAKE2b-256 23a4e7a9d52049f036594b5dffa00e08a13ece228dedb6b707cf90c1859eba20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a15-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ad238346299a8cb0992b5d523bb0a92802a3900f0cfb7caed2fce01529929e3
MD5 14577dc5e7932c033b5383300162bad7
BLAKE2b-256 5b1d27388de1499d80dbead679d3cfc86a8bd0a3e8d8eae5a3defdc4ade73f86

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