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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

memscope_fw-0.1.0a10-cp312-cp312-win_amd64.whl (854.6 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

memscope_fw-0.1.0a10-cp311-cp311-win_amd64.whl (868.0 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2b80554e6565504ebf31669542754a587dab9f513ba1f810cd499820b1d7884e
MD5 d43aa2e4deec573852a9fa7ebb4ba483
BLAKE2b-256 288a86d82a6596cb25a14077bf9c2a34b988030ed57932d04b3afd88b00e5e13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0262eff081a1a30330a1e2f35be92ef811d17acbc44f5e279eae4ea55366b4d2
MD5 7d9f8af24806a2d82c6e2cb6300c422b
BLAKE2b-256 0850fb14168e0aba3c0ab28645a33a484ce926ac5f92741a45e1645ee50afc23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ffb4160d0d2fb0db0c0989578e4602078270a47b4d19182fdd7a3c65dd152de0
MD5 77dda0d50d517f4cb0e8426b9f8168bf
BLAKE2b-256 27ccd52d3bd3b963a287d8af2d1b9adabc56ce93a39044b4690bd43a7bf623e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d142ad5f60a0b6923eaf41472b7ef5570e04b32dd0dc8f37040c4708e1e16dab
MD5 7a2e95a30f007fd8b515021ee7d3c56f
BLAKE2b-256 6f33b4c96f0055a76acce14dd5e8c5efd43230ac5922a83f9eac7ba34c59a284

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0f726cf5474bc938bc3ebf7cb109f20c20f2c4451f9c00e2ce87a5b619c9c416
MD5 7fe43d3ab16bf9467724ade56af9df9b
BLAKE2b-256 e47103a2ec68ec7de82c2636a09c0cae7b2f3ecc94e81d0937fc694d56cc73be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3167eae22f938627c9b1352f58877cf4d6d4d5aee14d09c294ada4c4cbe22a6c
MD5 e6caa07a169d50b310e5e9651fff44c0
BLAKE2b-256 d16b97d0b0f97c2a5da379b64c81ecbd8e367a3fdc675a070288f315dd5ed91a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0b64929671c612ac882e795cc4cce373307947d64495d5097bce56151308bf07
MD5 f76e4cbbf50e9f56230eabd7170cbb55
BLAKE2b-256 f74c9334d5c8d9f3655bf832e1597da46cbb62ee1f6d3c6ee5aa6769227762ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c97ba9eedb19f2498fbfcc1bd0b578886bdae2ddbf89318163dde5041551406b
MD5 a33aaf5ab556b1a7eb2b499348fd19e5
BLAKE2b-256 79b3e58a7e465855c5838a371cee3f75adcfd0ddc37f84e2ce91ba7128ac98b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc7e1facb9590bc4fbb9a32a6fe6174f11f74e33054206512ac88e1ab9350544
MD5 7bc5ba63f6850d923e61a49a94742a82
BLAKE2b-256 be04b9db5ecaabc2c5739833eba2adb5b8dab797dbcff76af3ca399bae9fc3c0

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