membrowse/Binary Size & Memory Footprint Tracking

Track and analyze firmware memory footprint across commits and PRs to catch memory regressions.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 7, 2026
License
GPL 3.0

Pinned Snippet

workflow.ymlSHA-pinned
uses: membrowse/membrowse-action@3f23ea562abaa6614855d6be5ec83b3cd1d274dd # v1.2.9

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
elfPath to ELF file (not required when identical=true)no
ldSpace-separated list of linker script paths (optional - if omitted, uses default Code/Data regions)no
target_nameTarget name like esp32, stm32f4yes
api_keyAPI key for MemBrowseno
api_urlMemBrowse API base URL (/upload appended automatically)nohttps://api.membrowse.com
dont_fail_on_alertsContinue even if budget alerts are detected (default: fail on alerts)nofalse
linker_varsSpace-separated linker variable definitions (e.g., "__micropy_flash_size__=4096K RAM_START=0x20000000")no""
verboseEnable verbose output including full API responses (default: WARNING)noWARNING
pr_author_namePR author name (auto-detected from GitHub event if not provided)no""
pr_author_emailPR author email (auto-detected from GitHub event if not provided)no""
identicalMark this commit as having identical memory footprint to previous (metadata-only upload)nofalse
map_filePath to linker map file for archive/object file attribution (supports GNU LD and IAR formats)no""
limitsOptional. Linker script supplying the real LENGTH per MEMORY region. Use this when the primary `ld` script is built with inflated region sizes so the link succeeds even when the binary exceeds the real target capacity (e.g. PX4 flash-analysis builds). Section attribution still uses `ld` (the wider ranges); utilization and overflow are then reported against the real LENGTH values from this script. Omit when the binary fits — the primary `ld` is already the real limit. no""
skip_sectionsSpace-separated list of ELF section names to exclude from the report (exact match), e.g. ".noinit .user_data". Skipped sections do not contribute to any region's used_size, and symbols inside them are removed from the report. no""
namedescription
report_pathPath to the generated JSON report file