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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

memscope_fw-0.1.0a16-cp313-cp313-win_amd64.whl (878.5 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

memscope_fw-0.1.0a16-cp312-cp312-win_amd64.whl (880.6 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

memscope_fw-0.1.0a16-cp311-cp311-win_amd64.whl (894.0 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a16-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ffffd91450af87e8f02ae197a82840784d7a295190974d2724ce05a384e47b86
MD5 e8f7600c2f7ad1b71e705346285f74d7
BLAKE2b-256 68f023fbc1929e5513e112a62bed88db6f941697e0d956e77a3e2a0e98447ae6

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a16-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.0a16-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1008dd934ecd92f943cc51b952fa151bb1d016c591887c964cd66d669b1d67c1
MD5 f1ad896eca5ec1060e5d530e1634f5fb
BLAKE2b-256 d0d22708ebd3f1d93c2c8f3132d8ea3967de119f82f4f292b9048a9b97c63c52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a16-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9b542e5573ccbdfaf3a508676198a0447bd9d321634e7b332c3e9a2e8e92707f
MD5 b38db801543f5375f46700c997759199
BLAKE2b-256 0d32e91ba3b8f19c614d7bc41815d9e9a65b31eec7d6d818622f5fa1f3cb089c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a16-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 61d09281b01ea909bbac44399b21c446bff407669b996aabade513ef73bfb666
MD5 6aa12ffa19f340123abeec0f71471542
BLAKE2b-256 a5c8da9a4e32b4beb7b58ad74443bc9eac61d9e0140c258ed0a9de8624800624

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a16-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.0a16-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 93bb6c48bd0011ab89232f299f960bd4f85028c02f57b113a982ece2a7b187a4
MD5 942015cd4ea94f828b29c123359c4244
BLAKE2b-256 70af1efefcf5f81d8b6f464c51cb6f6a579cf3e94386a6123d2a6772b3de0416

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a16-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9cc2d2a494fe98d712991b179ccfb69aab6e446200959065393404d736d91212
MD5 bc88bc60f897e4de4e72d6bee33b2176
BLAKE2b-256 5e45374da326dbbe01a0f3344692e9ac5a0f091c618a31781db5e7c8720e3606

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a16-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8fd775bdd4aa0e4c617821a7c75c5f7c08063e4d6c4036f4ba8b391196beed29
MD5 3584157e7d10cdbc477c9ae6f8afd04e
BLAKE2b-256 1b7590f4e570bac4c0dd26fe45e3b526e5df8cf78ec1606da45ccc2992a78714

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a16-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.0a16-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c7ebac7163354075787ef2d819b65278e14eee38a4d031c46cba897df9edc06a
MD5 45c3c3e3e12bcfd3b9e284b3fac627ed
BLAKE2b-256 2bf36f669f5a03fe12af2e6594a9ba79bde7abc0d2f5bf97f873e3360e6b1ecc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a16-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 48ca3c13ac014ceddb2316fab6e0950786b40b74f18a7d3f6eef19216501f55a
MD5 860a8b66dabcb998f96bd48a7a08815c
BLAKE2b-256 f9c4d355c7071ad316a4ce358853a63ebf6bdcf5d7269c950a36d544e3847497

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a16-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f3b889f9906db3e3d2e016451948c59856b6b455e37afda11d645c160d281bf6
MD5 1deda57bfbd77dac86541be43ae873ca
BLAKE2b-256 afdbbc03a4419ed770423e9a13ed60fcfb5591b0d64334e9d2c9e9dab5fdd1ba

See more details on using hashes here.

File details

Details for the file memscope_fw-0.1.0a16-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.0a16-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 59ea00254258dbad1ff638d90824a5d8f467aa7ed022c1c8fba3ef28b9716e8f
MD5 b555e35d5b5b27d8b07d59c1931b6315
BLAKE2b-256 7a46b732f9eec79130eb6bc1689b1642529d481e6a700d11c89195d3a7a49d74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memscope_fw-0.1.0a16-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 18be65988750239f5c5329bcbd544cac75f419ecde028c7efa41b168f79801d0
MD5 5be9917413bbce851763a153e7db2afe
BLAKE2b-256 1efec8195fc1a14ee08280aca8efa4f203c0a2c8dbd5554dc5c2d06e018e817a

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