Skip to main content

memprobe

memprobe

Firmware memory budgets and size-regression checks for CI, from the command line.

memprobe demo

memprobe reads the section and symbol table from your ELF and sends only that metadata to the memprobe API. It sends the same sizes and symbol names readelf and nm print, nothing else.

pip install memprobe

Quick start

  1. Create an API key at https://memprobe.dev (Account, then API keys).

  2. Point the CLI at it:

    memprobe config set --key mp_live_xxxxxxxx
    
  3. Check a build against budgets:

    memprobe init            # writes a memprobe.toml with flash/ram budgets
    memprobe check build/firmware.elf
    

    check exits non-zero when a budget is exceeded, so it gates a CI job.

Commands

Command What it does
memprobe analyze <elf> Size summary: flash/ram totals, biggest sections and symbols.
memprobe check <elf> Fail (exit 1) if a budget or watched symbol limit in memprobe.toml is exceeded. The CI gate.
memprobe diff <old> <new> Size change between two builds, with per-file and per-symbol deltas. --format markdown for PR comments.
memprobe diff <elf> --project <name> Diff against the project's saved baseline build, no second file needed.
memprobe init Scaffold memprobe.toml with flash/ram budgets. --from-ld <script.ld> fills part capacity from the linker script.
memprobe account Show your plan and this month's usage.
memprobe config set --key <key> [--server <url>] Store your API key (in ~/.memprobe/config.json).
memprobe config show Show the current key (masked) and server.

MEMPROBE_API_KEY and MEMPROBE_SERVER override the stored config, for use in CI.

CI

Because memprobe check exits non-zero when a budget is exceeded, it works as a gate in any CI system. Run it as a build step with MEMPROBE_API_KEY set as a secret:

pip install memprobe
memprobe check build/firmware.elf

On GitHub, memprobe-action wraps this and also posts a size report with symbol-level changes as a PR comment:

- uses: memprobe-dev/memprobe-action@v1
  with:
    file: build/firmware.elf
    api-key: ${{ secrets.MEMPROBE_API_KEY }}

What runs where

Local (this tool) memprobe API
Reads your ELF yes never sees the binary
Extracts sections/symbols yes (via pyelftools) no
Budget / diff / bloat analysis no yes

This is a thin open-source client with no analysis logic of its own. The deeper analysis (call graph, dead code, stack usage, source attribution) runs in the web app at https://memprobe.dev.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memprobe-0.1.3.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

memprobe-0.1.3-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file memprobe-0.1.3.tar.gz.

File metadata

  • Download URL: memprobe-0.1.3.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memprobe-0.1.3.tar.gz
Algorithm Hash digest
SHA256 7e348e9a4e557d8d7f3c5a8b76bf674226e76f7f0129a620730f9a462d89b96c
MD5 fcc0b0413869c0bd9d55ae06e24d6cec
BLAKE2b-256 51003daf16b152d0d0320fafbec70a36732cc10e1810b9384b4e2ffa5e380c5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for memprobe-0.1.3.tar.gz:

Publisher: publish.yml on memprobe-dev/memprobe_api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file memprobe-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: memprobe-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memprobe-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6d1344d84a481e9b2c6f1ff72ff1882c50e05565965977bf53de82f6a9f4dcce
MD5 f975d66e612fdc8edffd8b898bee686a
BLAKE2b-256 a90d975d16fce335d1805d83551687f32d18e5e233425c1504c664d551da4fa4

See more details on using hashes here.

Provenance

The following attestation bundles were made for memprobe-0.1.3-py3-none-any.whl:

Publisher: publish.yml on memprobe-dev/memprobe_api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page