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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

memscope_fw-0.1.0a9-cp312-cp312-win_amd64.whl (853.9 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

memscope_fw-0.1.0a9-cp311-cp311-win_amd64.whl (867.3 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9798409042d25030ddec9fc557f576fe97c010e2126e65d731adc435645090fe
MD5 d3cd905ab6cda18bdde9098901b1dd73
BLAKE2b-256 203927fb8a98c32cd47146d874faec6d158ef70a467eb92843f5ab9c4f8b3eb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 27273b0843c37d5c36d1c25004b549263504e3673b9341e1aeb7b485823e9676
MD5 6279575854eb3b9bc64ceb6840c089c0
BLAKE2b-256 31cbef6e73de0dbf5d373f857f2f27d9c1bee2aa5ca4fc717a2d9ab3f0b51112

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a9-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 78148629c34f7243955e54dd60e923c021a39d8518816efba863be16e3bcbcf3
MD5 2cc24aeac2222bd4f49de0790255bbae
BLAKE2b-256 3945a570011a5a957ba9db80053e1f2d75e6ceb9b90de1f6d0134d79195a2b51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e89d6b8e0fec203a5c0d24fcf25e4e881c13dc19c6193361b10c05fe8900e9ce
MD5 85cd178e5c088bb07b20aa881986a674
BLAKE2b-256 91cdec6dbc343b46c8c819dfe41dff3bbe881362ca47ceebf8ccc84f3cd7eb2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 39a117fe95cd5ce2ec8ca72660168385f92114d88bbed34e173cb5fa6731449e
MD5 238bd4e1b3b536e1a4eaf1edadc480fa
BLAKE2b-256 17cc0343bcad6e8db1eadc1bc22bc6d05ad98ddc94eb78d9d48754930464324c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d3cd259e1b600a5b723b00c45e890d0dd9e9224c18abe4ddde3d91bffae63bf0
MD5 fb57b095d570a460641280be36425f0c
BLAKE2b-256 45229781a281d39f021b6f9452784c546cabe14fe40f3efcee3b3453cc1d495a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7200e03a24056d218b29b30e3927750b843d4999df24c4a5dd64fdef5ab9a872
MD5 8361de3082747768d403d94c0fbd3329
BLAKE2b-256 8b05e7f3f0bc7ccae632c395a5a6366c4ee787f6add5d12287765b5142766bbb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8822a91add40395e6ceccfa599b1cd4a3f77f79139384b800dc1b625793f950a
MD5 f367416bdf6bb1fd26bfdb69e834fa98
BLAKE2b-256 5c19544984d218c2758cd3de668ddba732d317ba6461f20ba7aa3ae2b05a750a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 986bd68e78cb74c5d9399512ad5962561ac181af682f69d6e3bf4a90d76f10f5
MD5 2b7fb144153a6ed22118628940013c4a
BLAKE2b-256 e1a702350f90aa3845dceb97dd899e7d35594d252ed1844bda9408f51d609b96

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