XMManager is an easy way to manage XMRig on your Mac. It currently allows you to toggle XMRig for easy use of the miner.
- Download from releases and drag
XMManager.appto/Applications - Install XMRig somewhere XMManager can find it. The easiest way is
brew install xmrig, which puts it at/opt/homebrew/bin/xmrig(Apple Silicon) or/usr/local/bin/xmrig(Intel). Other places XMManager checks automatically:$XMRIG_PATHenvironment variable (highest priority, useful for custom installs)/opt/homebrew/bin/xmrig,/usr/local/bin/xmrig,/opt/local/bin/xmrig(Homebrew / MacPorts)~/.local/bin/xmrig- The same folder as
XMManager.app(legacy "sidecar" install) - Warning - XMRig can get flagged by your antivirus due to malicious programs using it to mine without permission. XMRig is a safe program.
- Create a config.json and save it as
~/.xmrig.json(in your home directory). XMManager passes--config=$HOME/.xmrig.jsonto xmrig automatically, since a menu bar app can't ship a config inside the.appbundle. (Other command line arguments are not yet supported.) - Run XMManager and have fun mining!
If XMManager can't find xmrig at startup, it shows a notification and quits instead of staying open with a dead toggle. Set XMRIG_PATH=/full/path/to/xmrig in your shell profile if you installed it somewhere unusual.
I don't even remember at this point, too much debugging. I'll add CI soon so I'll update this part once I understand how I built it.
Start the app first, then look at your menu bar. You should see a new entry called "XMManager".
Click on it to open the menu.
Quit does as you would expect, it quits the program and also quits XMRig. Toggle XMRig, when you click it, either starts XMRig or kills it. When you click it, it changes to this:
The check mark signifies that XMRig is running. You can click it again and XMRig will be killed.
Watch the video here to see XMManager in action.
And that is it! Have fun mining!
AI was used in this repository for the GitHub Actions runner, a function flagged for later replacement, CI debugging, and a critical bugfix that turned into a full rewrite (my code sucks apparently). The rest is human-written.
- @rocklake (rocklake's GitHub) - Helped get the code into a usable state since the whole codebase was crumbling


