A POSIX-compliant real-time operating system (RTOS) for embedded devices, scaling from 8-bit to 64-bit microcontrollers.
membrowse/membrowse-action
A GitHub Action and Python CLI that tracks flash and RAM footprint of embedded firmware from ELF files and comments memory diffs on pull requests.
- Stars
- 50
- Forks
- 2
- Open issues
- 0
- Last commit
- yesterday
What is it?
MemBrowse measures how much flash and RAM an embedded firmware image uses. It reads the ELF file and linker script, maps symbols back to their source files, and reports usage per memory region, along with the largest symbols. The CLI can run locally with no account, which makes it useful for checking a build on a developer's own machine.
In CI, the GitHub Action uploads each analysis to the MemBrowse service, where it keeps history across commits. Pull requests can receive a comment showing the memory diff, and the build can fail when a configured budget is exceeded. Those cloud features require a free API key.
The tool supports any toolchain that emits ELF files with DWARF debug info, including ARM, Xtensa and RISC-V. It parses GNU LD scripts, IAR ICF files and SEGGER Embedded Studio project files, detecting the format from file content.
Key features
- 01Reports flash and RAM usage per memory region from ELF files
- 02Maps symbols to their definition source files
- 03Reads memory layouts from GNU LD, IAR ICF and SEGGER emProject files
- 04Posts memory diffs as pull request comments through a GitHub Action
- 05Can fail CI builds when memory budgets are exceeded
Use cases
- Catching firmware size regressions during code review
- Checking whether a new feature still fits in a microcontroller's flash
- Comparing memory usage across commits for an embedded project
- Running local memory analysis without creating an account
Quick start
- 1
Install the MemBrowse CLI from PyPI
pip install membrowse - 2
Analyze your firmware ELF file with its linker script locally
membrowse report build/firmware.elf "src/linker.ld" - 3
Optionally add the GitHub Action workflow to track memory in CI
Things to know
- PR comments, historical tracking and CI budget gating require a free MemBrowse API key and account.
- Licensed under GPL-3.0, a copyleft license that may restrict some proprietary uses.
In collections
Topics
FAQ
- What is membrowse-action?
- A GitHub Action and Python CLI that tracks flash and RAM footprint of embedded firmware from ELF files and comments memory diffs on pull requests. MemBrowse measures how much flash and RAM an embedded firmware image uses. It reads the ELF file and linker script, maps symbols back to their source files, and reports usage per memory region, along with the largest symbols. The CLI can run locally with no account, which makes it useful for checking a build on a developer's own machine.
- Is membrowse-action free to use? What license does it have?
- membrowse-action is open source under the GPL-3.0 license. Check the license terms before using it in commercial products.
- Is membrowse-action still maintained?
- Actively maintained. The last commit to membrowse-action was on Nov 6, 2026.
- What can I use membrowse-action for?
- Catching firmware size regressions during code review Checking whether a new feature still fits in a microcontroller's flash Comparing memory usage across commits for an embedded project Running local memory analysis without creating an account
- How do I install membrowse-action?
- Install the MemBrowse CLI from PyPI: pip install membrowse Analyze your firmware ELF file with its linker script locally: membrowse report build/firmware.elf "src/linker.ld" Optionally add the GitHub Action workflow to track memory in CI
- Where can I get membrowse-action?
- The source code and installation instructions are on GitHub: https://github.com/membrowse/membrowse-action
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A lean Python 3 implementation that runs on microcontrollers and other resource-constrained devices, with hardware access modules.
Official development framework from Espressif for building firmware on ESP32 and other Espressif SoCs, on Windows, Linux and macOS.
Cross-platform command-line tool and build system for embedded development, covering library management, multiple boards and frameworks, debugging and unit testing.
Open-source cross-platform USB Host and Device stack for embedded systems, designed for memory and thread safety across 50+ MCU families.
A toolbox for building embedded applications in Zig, providing a hardware abstraction layer and board/chip support.