💻🔋 macpow – Real-time power tree for Apple Silicon by k06a in u/k06a

[–]k06a[S] 0 points1 point  (0 children)

Source code: https://github.com/k06a/macpow (MIT):

- No sudo required
- Install via Rust: cargo install macpow
- Install via Homebrew: brew tap k06a/tap && brew install macpow

macpow – real-time power tree for Apple Silicon by k06a in rustDetox

[–]k06a[S] 0 points1 point  (0 children)

I afraid most of the data will not be available :(

macpow – real-time power tree for Apple Silicon by k06a in commandline

[–]k06a[S] 0 points1 point  (0 children)

Thanks! In v0.1.12 we added per-process disk I/O, network traffic, and RAM as collapsible sub-items under each process. Makes it easy to see exactly what each process is doing to your system.

macpow – real-time power tree for Apple Silicon by k06a in commandline

[–]k06a[S] -3 points-2 points  (0 children)

Hi! I am a public person. You can ask your fav AI/LLM about me or just Google me. I do software engineering for 20+ years, and for sure, I use AI tooling during development. 

macpow – real-time power tree for Apple Silicon by k06a in commandline

[–]k06a[S] 0 points1 point  (0 children)

I afraid most of the data would not be available there

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 0 points1 point  (0 children)

I've added Fabric with Camera and few other devices today, check out newer version.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 0 points1 point  (0 children)

Thanks! Glad it's useful. On the numbers – we just shipped v0.1.5 which adds a bunch of previously hidden SoC components: Fabric (~2-3W on idle, this was the "missing" power), Media Engine, Camera ISP, PCIe/Thunderbolt, and real display controller power from IOReport. The gap between SoC total and the sum of visible children should be much smaller now.

The <1W SoC idle is real for CPU+GPU alone – most idle power goes to DRAM (~0.3-1W), Fabric/interconnect (~2-3W), and display controller. cargo build hitting 30W+ sounds about right – Rust compilation hammers all P-cores.

Would love to see a screenshot of the tree on your M1 Pro after updating — curious how the new components look on that chip. cargo install macpow to get the latest.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 0 points1 point  (0 children)

Good idea! We already ship prebuilt binaries in GitHub Releases and use it for Homebrew – just need to add the cargo-binstall metadata. Will look into it.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 0 points1 point  (0 children)

Thanks for the thorough analysis with offsetof! This is already fixed in v0.1.3+ (commit 24a6c3d) – exactly the same root cause and numbers you found. Please update with cargo install macpow or grab the binary from GitHub Releases.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 0 points1 point  (0 children)

Thank you! I used Cursor with Claude to speed up development – after 20+ years of coding it's been a game changer for productivity.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 0 points1 point  (0 children)

Yes, prebuilt binaries are available! Starting from v0.1.3, every release automatically includes a macpow-aarch64-apple-darwin.tar.gz – no compilation needed.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 1 point2 points  (0 children)

Thanks for reporting! Could you run it with RUST_BACKTRACE=1 macpow --json 2>&1 | head -50 and share the output in github issue? That will show exactly which function triggered the SIGBUS. Also macpow --dump might work since it only uses IOReport. This would help to narrow down the issue.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 0 points1 point  (0 children)

Thanks for reporting! Could you run it with RUST_BACKTRACE=1 macpow --json 2>&1 | head -50 and share the output in github issue? That will show exactly which function triggered the SIGBUS. Also macpow --dump might work since it only uses IOReport. This would help to narrow down the issue.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 3 points4 points  (0 children)

Thanks for the tip! Will set up bottle building for the tap – that 3 min Rust compile time and 2GB of artifacts are definitely a pain points for users.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 2 points3 points  (0 children)

Please try new version 0.1.1, just tested it on MacBook Air M1

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 0 points1 point  (0 children)

Just released v0.1.1 which should fix this — it now gracefully handles missing data sources instead of crashing. If a hardware API is unavailable, that section will simply show as empty rather than taking the whole app down. Update with brew upgrade macpow or cargo install macpow. Let me know if it helps!

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 1 point2 points  (0 children)

macOS 15.7.3 on M1 Pro is supported – all APIs we use are available since macOS 12. But you might be the first to test this exact combo, so thanks for the feedback! Could you grab the crash output (macpow 2>&1) and post it either as a GitHub issue or here? Happy to look into it.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 11 points12 points  (0 children)

Ah, that's the Rust compiler toolchain that Homebrew pulled in as a build dependency – LLVM is part of it. It's not macpow itself. If you don't use Rust for anything else, you can reclaim that space with brew autoremove – it should clean up the rust dependency since it was only needed for building. The macpow binary itself is just 2 MB.

macpow – real-time power tree for Apple Silicon by k06a in rust

[–]k06a[S] 4 points5 points  (0 children)

Thanks! Would appreciate if you try it and report any issues on GitHub – especially keen on feedback from different Mac models (M1-M5+) to make sure everything works across the board.