npx claudepluginhub membrowse/membrowse-actionMemBrowse memory tracking integration for embedded firmware projects. Automatically sets up GitHub workflows for RAM/Flash analysis.
Share bugs, ideas, or general feedback.
A tool for analyzing binary size and memory footprint of embedded firmware. MemBrowse extracts detailed memory information from ELF files and linker scripts, providing symbol-level analysis with source file mapping for multiple architectures. Use it standalone for local analysis or integrate with MemBrowse for historical analysis and CI integration.
MemBrowse provides GitHub Actions for CI integration.
Create a Github action for PR analysis that will call membrowse/membrowse-action:
name: Memory Analysis
on: [push, pull_request]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build firmware
run: make all # your build commands
- name: Analyze memory
id: analyze
uses: membrowse/membrowse-action@v1
with:
elf: build/firmware.elf # your elf
ld: "src/linker.ld" # your ld scripts
target_name: stm32f4 # the target name will be recognized by MemBrowse
api_key: ${{ secrets.MEMBROWSE_API_KEY }}
- name: Post PR comment
if: github.event_name == 'pull_request'
uses: membrowse/membrowse-action/comment-action@v1
with:
json_files: ${{ steps.analyze.outputs.report_path }}
# Optional: use a custom Jinja2 template for the comment
# comment_template: .github/membrowse-comment.j2
The comment action posts a memory report to the PR showing changes between the PR branch and the base branch. The report includes memory region utilization changes (e.g. FLASH, RAM), section-level deltas (e.g. .text, .bss, .data), and symbol-level changes — added, removed, modified, and moved symbols. If budget alerts are configured on MemBrowse, any exceeded budgets are highlighted in the comment.
You can customize the comment format by providing a Jinja2 template via the comment_template input. Your template receives a targets list (each with regions, sections, symbols, and alerts) and a top-level has_alerts boolean. See the default template for reference.
For getting historical build data from day one upload the last N commits by
Creating an Onboard Github action in your repo that will call membrowse/membrowse-action/onboard-action:
name: Onboard to MemBrowse
on: workflow_dispatch
jobs:
onboard:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Historical analysis
uses: membrowse/membrowse-action/onboard-action@v1
with:
num_commits: 100
build_script: "make clean && make" # your build commands
elf: build/firmware.elf # your elf file
ld: "components.ld memory.ld" #your ld scripts
target_name: my-target # the target name will be recognized by MemBrowse
api_key: ${{ secrets.MEMBROWSE_API_KEY }}
If you use Claude Code, you can automatically set up MemBrowse integration using the membrowse-integrate skill.
First, add the MemBrowse plugin to Claude Code:
/plugin marketplace add membrowse@membrowse-action
Then run the skill in your project:
/membrowse-integrate
This will:
membrowse-targets.json configurationpip install membrowse
# Clone and install in editable mode
git clone https://github.com/membrowse/membrowse-action.git
cd membrowse-action
pip install -e .
The simplest way to analyze your firmware (local mode - no upload):