{"id":13711058,"url":"https://github.com/hinto-janai/gupax","last_synced_at":"2025-05-16T15:09:29.368Z","repository":{"id":60588091,"uuid":"544135508","full_name":"hinto-janai/gupax","owner":"hinto-janai","description":"GUI Uniting P2Pool And XMRig","archived":false,"fork":false,"pushed_at":"2024-12-08T14:00:16.000Z","size":7063,"stargazers_count":309,"open_issues_count":25,"forks_count":18,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-12T14:55:58.626Z","etag":null,"topics":["gui","linux","macos","mining","monero","p2pool","windows","xmrig"],"latest_commit_sha":null,"homepage":"https://gupax.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hinto-janai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-01T18:34:16.000Z","updated_at":"2025-04-10T15:47:49.000Z","dependencies_parsed_at":"2023-12-25T16:26:51.637Z","dependency_job_id":"da7260c3-5870-49ba-9d47-e804b3f2077c","html_url":"https://github.com/hinto-janai/gupax","commit_stats":{"total_commits":407,"total_committers":3,"mean_commits":"135.66666666666666","dds":"0.49140049140049136","last_synced_commit":"ab9912fccc41a97640cd50982ed1ad064e0d3fd3"},"previous_names":["hinto-janaiyo/gupax"],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hinto-janai%2Fgupax","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hinto-janai%2Fgupax/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hinto-janai%2Fgupax/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hinto-janai%2Fgupax/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hinto-janai","download_url":"https://codeload.github.com/hinto-janai/gupax/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254553958,"owners_count":22090417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","linux","macos","mining","monero","p2pool","windows","xmrig"],"created_at":"2024-08-02T23:01:04.012Z","updated_at":"2025-05-16T15:09:24.358Z","avatar_url":"https://github.com/hinto-janai.png","language":"Rust","funding_links":[],"categories":["Mining"],"sub_categories":["Other Wallets"],"readme":"\u003cdiv align=\"center\"\u003e\n\t\u003cimg src=\"images/banner.png\" width=\"50%\"/\u003e\n\nGupax is a GUI for mining [**Monero**](https://github.com/monero-project/monero) on [**P2Pool**](https://github.com/SChernykh/p2pool), using [**XMRig**](https://github.com/xmrig/xmrig).\n\nTo see a 3-minute video guide on how to set-up Gupax: [click here.](#Guide)\n\n[![CI](https://github.com/hinto-janai/gupax/actions/workflows/ci.yml/badge.svg)](https://github.com/hinto-janai/gupax/actions/workflows/ci.yml) [![gupax.io](https://github.com/hinto-janai/gupax/actions/workflows/download.yml/badge.svg)](https://github.com/hinto-janai/gupax/actions/workflows/download.yml)\n\n\u003c/div\u003e\n\n## Contents\n* [What is Monero/P2Pool/XMRig/Gupax?](#what-is-monerop2poolxmriggupax)\n* [Guide](#Guide)\n* [Simple](#Simple)\n\t- [Status](#Status)\n\t- [Gupax](#Gupax)\n\t- [P2Pool](#P2Pool)\n\t- [XMRig](#XMRig)\n* [Advanced](#Advanced)\n\t- [Verifying](#Verifying)\n\t- [Running a Local Monero node](#running-a-local-monero-node)\n\t- [Command Line](#Command-Line)\n\t- [Key Shortcuts](#Key-Shortcuts)\n\t- [Tor](#Tor)\n\t- [Logs](#Logs)\n\t- [Disk](#Disk)\n\t- [Swapping P2Pool/XMRig](#Swapping-P2PoolXMRig)\n\t- [Status](#Status-1)\n\t- [Gupax](#Gupax-1)\n\t- [P2Pool](#P2Pool-1)\n\t- [XMRig](#XMRig-1)\n* [Connections](#Connections)\n* [Remote Monero nodes](#remote-monero-nodes)\n* [Build](#Build)\n\t- [General Info](#General-Info)\n\t- [Linux](#Linux)\n\t\t- [Building for a distribution](#building-for-a-distribution)\n\t- [macOS](#macOS)\n\t- [Windows](#Windows)\n* [License](#License)\n* [FAQ](#FAQ)\n\t- [System requirements](#system-requirements)\n\t- [Gupax does not start](#gupax-does-not-start)\n\t- [Where are updates downloaded from?](#where-are-updates-downloaded-from)\n\t- [P2Pool connection errors](#p2pool-connection-errors)\n\t- [Can I quit mid-update?](#can-i-quit-mid-update)\n\t- [Bundled vs Standalone](#bundled-vs-standalone)\n\t- [How much memory does Gupax use?](#how-much-memory-does-gupax-use)\n\t- [How is sudo handled? (on macOS/Linux)](#how-is-sudo-handled-on-macoslinux)\n\t- [Why does Gupax need to be Admin? (on Windows)](#why-does-gupax-need-to-be-admin-on-windows)\n\n## What is Monero/P2Pool/XMRig/Gupax?\n[**`Monero`**](https://getmonero.org) is a secure, private, and untraceable cryptocurrency.\n\n[Monero GUI](https://github.com/monero-project/monero-gui) allows you to run a Monero node, among other things.\n\n---\n\n[**`P2Pool`**](https://github.com/SChernykh/p2pool) allows you to create/join decentralized peer-to-peer Monero mining pools.\n\nP2Pool as a concept was [first developed for Bitcoin](https://en.bitcoin.it/wiki/P2Pool) although [failed to stay relevant for various reasons](https://github.com/p2pool/p2pool).\n\nIn late 2021, [`SChernykh`](https://github.com/SChernykh) rewrote P2Pool from scratch for Monero.\n\nP2Pool combines the best of solo mining and traditional pool mining:\n\n* **It's decentralized:** There's no central server that can be shutdown or pool admin that controls your hashrate\n* **It's permissionless:** It's peer-to-peer so there's no one to decide who can and cannot mine on the pool\n* **It's trustless:** Funds are never in custody, all pool blocks pay out to miners directly and immediately\n* **0% transaction fee, 0 payout fee, immediate ~0.00027 XMR minimum payout**\n\n---\n\n[**`XMRig`**](https://github.com/xmrig/xmrig) is an optimized miner that can mine Monero.\n\nBoth Monero and P2Pool have built in miners but XMRig is faster than both of them. Due to issues like [anti-virus flagging](https://github.com/monero-project/monero-gui/pull/3829#issuecomment-1018191461), it is not feasible to integrate XMRig directly into Monero.\n\n---\n\n[**`Gupax`**](https://github.com/hinto-janai/gupax) is a GUI that helps manage P2Pool \u0026 XMRig which are both CLI-only.\n\n\u003cimg src=\"images/local.png\" align=\"left\" width=\"50%\"/\u003e\n\n**`XMRig`** mines to **`P2Pool`**\n\n**`P2Pool`** fetches blocks from a **`Monero node`**\n\n**`Monero GUI`** runs the **`Monero node`**\n\n**`Gupax`** runs **`P2Pool/XMRig`**\n\n\u003cbr clear=\"left\"/\u003e\n\n---\n\n\u003cimg src=\"images/remote.png\" align=\"left\" width=\"50%\"/\u003e\n\nBy default, Gupax will use a [Remote Monero node](#remote-monero-nodes) so you don't have to run [your own Monero node](#running-a-local-monero-node) to start mining on P2Pool.\n\n\u003cbr clear=\"left\"/\u003e\n\n## Guide\nhttps://user-images.githubusercontent.com/101352116/207978455-6ffdc0cc-204c-4594-9a2f-e10c505745bc.mp4\n\n\u003cdiv align=\"center\"\u003e\n\n1. [Download the bundled version of Gupax](https://github.com/hinto-janai/gupax/releases)\n2. Extract\n3. Launch Gupax\n4. Input your Monero address in the `P2Pool` tab\n5. Select a [`Remote Monero node`](#remote-monero-nodes) (or run your own local [Monero node](#running-a-local-monero-node))\n6. Start P2Pool\n7. Start XMRig\n\nYou are now mining to your own instance of P2Pool, welcome to the world of decentralized peer-to-peer mining!\n\n\u003c/div\u003e\n\n\n## Simple\nThe `Gupax/P2Pool/XMRig` tabs have two versions, `Simple` \u0026 `Advanced`.\n\n`Simple` is for a minimal \u0026 working out-of-the-box configuration.\n\n---\n\n### Status\nThis tab has 3 submenus.\n\n\u003cimg src=\"images/processes.png\" align=\"left\" width=\"50%\"/\u003e\n\n**Processes:**  \nThis submenu shows:\n- General PC stats\n- General P2Pool stats\n- General XMRig stats\n\n\u003cbr clear=\"left\"/\u003e\n\n\u003cimg src=\"images/payouts.png\" align=\"left\" width=\"50%\"/\u003e\n\n**P2Pool:**  \nThis submenu shows:\n- ***Permanent*** stats on all your payouts received via P2Pool \u0026 Gupax\n- Payout sorting options\n- Share/block time calculator\n\n\u003cbr clear=\"left\"/\u003e\n\n\u003cimg src=\"images/benchmarks.png\" align=\"left\" width=\"50%\"/\u003e\n\n**Benchmarks:**  \nThis submenu shows:\n- Your hashrate vs others with the same CPU\n- List of similar CPUs and their stats\n- Data source: [here](https://xmrig.com/benchmark)\n\n\u003cbr clear=\"left\"/\u003e\n\n---\n\n### Gupax\nThis tab has the updater and general Gupax settings.\n\nIf `Check for updates` is pressed, Gupax will update your `Gupax/P2Pool/XMRig` (if needed) using the [GitHub API](#where-are-updates-downloaded-from).\n\nBelow that, there are some general Gupax settings:\n| Setting            | What it does |\n|--------------------|--------------|\n| `Update via Tor`   | Causes updates to be fetched via the Tor network. Tor is embedded within Gupax; a Tor system proxy is not required\n| `Auto-Update`      | Gupax will automatically check for updates at startup\n| `Auto-P2Pool`      | Gupax will automatically start P2Pool at startup\n| `Auto-XMRig`       | Gupax will automatically start XMRig at startup\n| `Ask before quit`  | Gupax will ask before quitting (and notify if there are any updates/processes still alive)\n| `Save before quit` | Gupax will automatically saved any un-saved setting on quit\n\n---\n\n### P2Pool\nP2Pool Simple allows you to ping \u0026 connect to a [Remote Monero node](#remote-monero-nodes) and start your own local P2Pool instance on the `Mini` sidechain.\n\nTo start P2Pool, first input the Monero address you'd like to receive payouts from. You must use a primary Monero address to mine on P2Pool (starts with a 4). It is highly recommended to create a new wallet since addresses are public on P2Pool!\n\n**Warning: [There are negative privacy/security implications when using a Monero node not in your control.](https://www.getmonero.org/resources/moneropedia/remote-node.html)** Select a remote node that you trust, or better yet, run your own node. If you'd like to manually specify a node to connect to, see [Advanced.](#advanced)\n\n---\n\n### XMRig\nXMRig Simple has a log output box, a thread slider, and `Pause-on-active` setting.\n\nIf XMRig is started with `Pause-on-active` with a value greater than 0, XMRig will automatically pause for that many seconds if it detects any user activity (mouse movements, keyboard clicks). [This setting is only available on Windows/macOS.](https://xmrig.com/docs/miner/config/misc#pause-on-active)\n\n**Windows:**  \nGupax will automatically launch XMRig with administrator privileges to activate [mining optimizations.](https://xmrig.com/docs/miner/randomx-optimization-guide) XMRig also needs a [signed WinRing0 driver (© 2007-2009 OpenLibSys.org)](https://xmrig.com/docs/miner/randomx-optimization-guide/msr#manual-configuration) to access MSR registers. This is the file next to XMRig called `WinRing0x64.sys`. This comes in the bundled version of Gupax. If missing/deleted, a copy is packaged with all [Windows XMRig releases.](https://github.com/xmrig/xmrig/releases/) A direct standalone version is also provided, [here.](https://github.com/xmrig/xmrig/blob/master/bin/WinRing0/WinRing0x64.sys)\n\n**macOS/Linux:**  \nGupax will prompt for your `sudo` password to start XMRig with and do all the things above.\n\nXMRig Simple will always mine to your own local P2Pool (`127.0.0.1:3333`), if you'd like to manually specify a pool to mine to, see [Advanced](#advanced).\n\n## Advanced\n### Verifying\nIt is recommended to verify the hash and PGP signature of the download before using Gupax.\n\nDownload the [`SHA256SUMS`](https://github.com/hinto-janai/gupax/releases/latest) file, download and import this [`PGP key`](https://github.com/hinto-janai/gupax/blob/main/pgp/hinto-janai.asc), and verify:\n```bash\nsha256sum -c SHA256SUMS\ngpg --import hinto-janai.asc\ngpg --verify SHA256SUMS\n```\n\nYou can compare the hash of the `P2Pool/XMRig` binaries bundled with Gupax with the hashes of the binaries found here:\n- https://github.com/SChernykh/p2pool/releases\n- https://github.com/xmrig/xmrig/releases\n\nMake sure the _version_ you are comparing against is correct, and make sure you are comparing the _binary_ to the _binary_, not the `tar/zip`. If they match, they are the exact same. Verifying the PGP signature is also recommended:\n- P2Pool - [`SChernykh.asc`](https://github.com/monero-project/gitian.sigs/blob/master/gitian-pubkeys/SChernykh.asc)\n- XMRig - [`xmrig.asc`](https://github.com/xmrig/xmrig/blob/master/doc/gpg_keys/xmrig.asc)\n\n---\n\n### Running a Local Monero node\nRunning and using your own local Monero node improves privacy and security. It also means you won't be depending on one of the [Remote Monero nodes](#remote-monero-nodes) provided by Gupax. This comes at the cost of downloading and syncing Monero's blockchain yourself.\n\nTo run and use your own local Monero node for P2Pool, follow these steps:\n\n\u003cdiv align=\"center\"\u003e\n\t\u003cimg src=\"images/local_node.png\" width=\"66%\"/\u003e\n\n1. In the Monero GUI, go to `Settings`\n2. Go to the `Node` tab\n3. Enable `Local node`\n4. Enter `--zmq-pub=tcp://127.0.0.1:18083` into `Daemon startup flags`\n5. [(Optionally)](https://github.com/SChernykh/p2pool#windows) enter `--disable-dns-checkpoints --enable-dns-blocklist` into `Daemon startup flags`\n6. Start and fully sync node\n\n\u003c/div\u003e\n\nThe 4th step enables `ZMQ`, which is extra Monero node functionality that is needed for P2Pool to work correctly.\n\nThe 5th step:\n\n- `--disable-dns-checkpoints` avoids periodical lag when DNS is updated (it's not needed when mining)\n- `--enable-dns-blocklist` bans known bad nodes\n\n---\n\n### Command Line\nBy default, Gupax has `auto-update` \u0026 `auto-ping` enabled. This can only be turned off in the GUI. To get around this, start Gupax with `--no-startup`. This will disable all `auto` features for that instance.\n```\nUSAGE: ./gupax [--flag]\n\n    --help            Print this help message\n    --version         Print version and build info\n    --state           Print Gupax state\n    --nodes           Print the manual node list\n    --payouts         Print the P2Pool payout log, payout count, and total XMR mined\n    --no-startup      Disable all auto-startup settings for this instance (auto-update, auto-ping, etc)\n    --reset-state     Reset all Gupax state (your settings)\n    --reset-nodes     Reset the manual node list in the [P2Pool] tab\n    --reset-pools     Reset the manual pool list in the [XMRig] tab\n    --reset-payouts   Reset the permanent P2Pool stats that appear in the [Status] tab\n    --reset-all       Reset the state, manual node list, manual pool list, and P2Pool stats\n```\n\n---\n\n### Key Shortcuts\n```\n*---------------------------------------*\n|             Key shortcuts             |\n|---------------------------------------|\n|             F11 | Fullscreen          |\n|          Escape | Quit screen         |\n|              Up | Start/Restart       |\n|            Down | Stop                |\n|               Z | Left Tab            |\n|               X | Right Tab           |\n|               C | Left Submenu        |\n|               V | Right Submenu       |\n|               S | Save                |\n|               R | Reset               |\n*---------------------------------------*\n```\n\n---\n\n### Tor\nBy default, Gupax updates via Tor. In particular, it uses [`Arti`](https://gitlab.torproject.org/tpo/core/arti), the official Rust implementation of Tor.\n\nArti saves state/cache about the Tor network (circuits, guards, etc) for later reuse onto the disk:\n\nState:\n| OS       | Data Folder                                                   |\n|----------|---------------------------------------------------------------|\n| Windows  | `C:\\Users\\USER\\AppData\\Local\\torproject\\Arti\\data`            |\n| macOS    | `/Users/USER/Library/Application Support/org.torproject.Arti` |\n| Linux    | `/home/USER/.local/share/arti`                                |\n\nCache:\n| OS       | Data Folder                                                   |\n|----------|---------------------------------------------------------------|\n| Windows  | `C:\\Users\\USER\\AppData\\Local\\torproject\\Arti\\cache`           |\n| macOS    | `/Users/USER/Library/Caches/org.torproject.Arti`              |\n| Linux    | `/home/USER/.cache/arti`                                      |\n\n---\n\n### Disk\nLong-term state is saved onto the disk in the \"OS data folder\", using the [TOML](https://github.com/toml-lang/toml) format. If not found, default files will be created.\n\nGiven a slightly corrupted `state.toml` file, Gupax will attempt to merge it with a new default one. This will most likely happen if the internal data structure of `state.toml` is changed in the future (e.g: removing an outdated setting). The node/pool database cannot be merged.\n\nIf Gupax can't read/write to disk at all, or if there are any other big issues, it will show an unrecoverable error screen.\n\n| OS       | Data Folder                              | Example                                         |\n|----------|------------------------------------------|-------------------------------------------------|\n| Windows  | `{FOLDERID_RoamingAppData}`              | `C:\\Users\\USER\\AppData\\Roaming\\Gupax`           |\n| macOS    | `$HOME`/Library/Application Support      | `/Users/USER/Library/Application Support/Gupax` |\n| Linux    | `$XDG_DATA_HOME` or `$HOME`/.local/share | `/home/USER/.local/share/gupax`                 |\n\nThe current files saved to disk:\n* `state.toml` Gupax state/settings\n* `node.toml` The manual node database used for P2Pool advanced\n* `pool.toml` The manual pool database used for XMRig advanced\n* `p2pool/` The Gupax-P2Pool API files\n\n---\n\n### Logs\nThere are multiple log filter levels but by default, `INFO` and above are enabled.\nTo view more detailed console debug information, start Gupax with the environment variable `RUST_LOG` set to a log level:\n```bash\nRUST_LOG=(trace|debug|info|warn|error) ./gupax\n```\nFor example:\n```bash\nRUST_LOG=debug ./gupax\n```\n\n- `ERROR`: has gone wrong and that something will probably break\n- `WARN`: something has gone wrong, but things will be fine\n- `INFO`: general info about what Gupax (the GUI thread) is currently doing\n- `DEBUG`: much more verbose and include what EVERY thread is doing (not just the main GUI thread)\n- `TRACE`: insanely verbose and shows very low-level logs\n\n---\n\n### Swapping P2Pool/XMRig\nIf you want to use your own `P2Pool/XMRig` binaries you can:\n- Edit the PATH in `Gupax Advanced` to point at the new binaries\n- Change the binary itself\n\nBy default, Gupax will look for `P2Pool/XMRig` in folders next to itself:\n\nWindows:\n```\nGupax\\\n├─ Gupax.exe\n├─ P2Pool\\\n│  ├─ p2pool.exe\n├─ XMRig\\\n   ├─ xmrig.exe\n```\n\nmacOS (Gupax is packaged as an `.app` on macOS):\n```\nGupax.app/Contents/MacOS/\n├─ gupax\n├─ p2pool/\n│  ├─ p2pool\n├─ xmrig/\n   ├─ xmrig\n```\n\nLinux:\n```\ngupax/\n├─ gupax\n├─ p2pool/\n│  ├─ p2pool\n├─ xmrig/\n   ├─ xmrig\n```\n\n---\n\n### Status\nThe `[P2Pool]` submenu in this tab reads/writes to a file-based API in a folder called `p2pool` located in the [Gupax OS data directory:](#Disk)\n\n| File     | Purpose                                                 | Specific Data Type |\n|----------|---------------------------------------------------------|--------------------|\n| `log`    | Formatted payout lines extracted from P2Pool            | Basically a `String` that needs to be parsed correctly\n| `payout` | The total amount of payouts received via P2Pool \u0026 Gupax | `u64`\n| `xmr`    | The total amount of XMR mined via P2Pool \u0026 Gupax        | Atomic Units represented with a `u64`\n\nThe `log` file contains formatted payout lines extracted from your P2Pool:\n```\n\u003cDATE\u003e \u003cTIME\u003e | \u003c12_FLOATING_POINT\u003e XMR | Block \u003cHUMAN_READABLE_BLOCK\u003e\n```\ne.g:\n```\n2023-01-01 00:00:00.0000 | 0.600000000000 XMR | Block 2,123,123\n```\n\nThe `payout` file is just a simple count of how many payouts have been received.\n\nThe `xmr` file is the sum of XMR mined as [Atomic Units](https://web.getmonero.org/resources/moneropedia/atomic-units.html). The equation to represent this as XMR is:\n```rust\nXMR_ATOMIC_UNITS / 1,000,000,000,000\n```\ne.g:\n```rust\n600,000,000,000 / 1,000,000,000,000 = 0.6 XMR\n```\n\nGupax interacts with these files in two ways:\n- Reading the files when initially starting\n- Appending/overwriting new data to the files upon P2Pool payout\n\nThese files shouldn't be written to manually or Gupax will report wrong data.\n\nIf you want to reset these stats, you can run:\n```bash\n./gupax --reset-payouts\n```\nor just manually delete the `p2pool` folder in the [Gupax OS data directory.](#Disk)\n\n---\n\n### Gupax\nAlong with the updater and settings mentioned in [Simple](#simple), `Gupax Advanced` allows you to change:\n- The PATH of where Gupax looks for P2Pool/XMRig\n- The selected tab on startup\n- Gupax's resolution\n\n**Warning:** Gupax will use your custom PATH/binary and will replace them if you use `Check for updates` in the `[Gupax]` tab. Your PATH must end in a value that appears correct or else the updater will refuse to start:\n| Binary   | Accepted values                  | Good PATH       | Bad PATH |\n|----------|----------------------------------|-----------------|----------|\n| `P2Pool` | `P2POOL, P2Pool, P2pool, p2pool` | `P2pool/p2pool` | `Documents/important_file`\n| `XMRig`  | `XMRIG, XMRig, Xmrig, xmrig`     | `XMRig/XMRig`   | `Desktop/`\n\nIf using Windows, the PATH must end with `.exe`.\n\n---\n\n### P2Pool\nP2Pool Advanced has:\n- Terminal input\n- Overriding command arguments\n- Manual node list\n- P2Pool Main/Mini selection\n- Out/In peer setting\n- Log level setting\n\nThe overriding command arguments will completely override your Gupax settings and start P2Pool with those arguments. **Warning:** If using this setting, use `--no-color` and make sure to set `--data-api \u003cPATH\u003e` \u0026 `--local-api` so that the `[Status]` tab can work!\n\nThe manual node list allows you save and connect up-to 1000 custom Monero nodes:\n| Data Field | Purpose                                                       | Limits                                                 | Max Length     |\n|------------|---------------------------------------------------------------|--------------------------------------------------------|----------------|\n| `Name`     | A unique name to identify this node (only for Gupax purposes) | Only `[A-Za-z0-9-_.]` and spaces allowed               | 30 characters  |\n| `IP`       | The Monero node IP to connect to with P2Pool                  | It must be a valid IPv4 address or a valid domain name | 255 characters |\n| `RPC`      | The RPC port of the Monero node                               | `[1-65535]`                                            | 5 characters   |\n| `ZMQ`      | The ZMQ port of the Monero node                               | `[1-65535]`                                            | 5 characters   |\n\nThe `Main/Mini` selector allows you to change which P2Pool sidechain you mine on:\n| P2Pool Sidechain | Description                                                  | Use-case                                  |\n|------------------|--------------------------------------------------------------|-------------------------------------------|\n| `Main`           | More miners, finds blocks faster, has a higher difficulty    | Suitable for miners with MORE than 50kH/s |\n| `Mini`           | Less miners, finds blocks slower, has a lower difficulty     | Suitable for miners with LESS than 50kH/s |\n\nGiven enough time, both `Main` and `Mini` will result in the same reward (as will solo mining):\n| Mining Method    | Share Behavior                              | Payout/Output Behavior             | Example                                    | Total (it's the same) |\n|------------------|---------------------------------------------|------------------------------------|--------------------------------------------|-----------------------|\n| `P2Pool Main`    | LESS frequent shares that are MORE valuable | Results in MORE outputs worth LESS | 20 shares, 100 outputs worth `0.006 XMR`   | `0.6 XMR`             |\n| `P2Pool Mini`    | MORE frequent shares that are LESS valuable | Results in LESS outputs worth MORE | 100 shares, 20 outputs worth `0.03 XMR`    | `0.6 XMR`             |\n| `Solo mining`    | No shares, only payouts                     | 1 output                           | 1 output worth the block reward: `0.6 XMR` | `0.6 XMR`             |\n\nIn the end, it doesn't matter _too much_ which sidechain you pick, it will all average out. Getting LESS but more valuable outputs may be desired, however, since the transaction cost to combine all of them (`sweep_all`) will be cheaper due to being comprised of less outputs.\n\nThe remaining sliders control miscellaneous settings:\n| Slider      | Purpose                                                     | Default | Min/Max Range |\n|-------------|-------------------------------------------------------------|---------|---------------|\n| `Out peers` | How many out-bound peers P2Pool will connect to             | `10`    | `10..450`     |\n| `In peers`  | How many in-bound peers P2Pool will allow to connect to you | `10`    | `10..450`     |\n| `Log level` | Verbosity of the P2Pool console log                         | `3`     | `0..6`        |\n\n---\n\n### XMRig\nXMRig Advanced has:\n- Terminal input\n- Overriding command arguments\n- Custom payout address\n- CPU thread slider\n- Manual pool list\n- Custom HTTP API IP/Port\n- TLS setting\n- Keepalive setting\n\nThe overriding command arguments will completely override your Gupax settings and start XMRig with those arguments.\n\n**Warning:** If using this setting, use `[--no-color]` and make sure to set `[--http-host \u003cIP\u003e]` \u0026 `[--http-port \u003cPORT\u003e]` so that the `[Status]` tab can work!\n\nThe manual pool list allows you save and connect up-to 1000 custom Pools (regardless if P2Pool or not):\n| Data Field | Purpose                                                       | Limits                                                 | Max Length     |\n|------------|---------------------------------------------------------------|--------------------------------------------------------|----------------|\n| `Name`     | A unique name to identify this pool (only for Gupax purposes) | Only `[A-Za-z0-9-_.]` and spaces allowed               | 30 characters  |\n| `IP`       | The pool IP to connect to with XMRig                          | It must be a valid IPv4 address or a valid domain name | 255 characters |\n| `Port`     | The port of the pool                                          | `[1-65535]`                                            | 5 characters   |\n| `Rig`      | An optional rig ID; This will be the name shown on the pool   | Only `[A-Za-z0-9-_]` and spaces allowed                | 30 characters  |\n\nThe HTTP API textboxes allow you to change to IP/Port XMRig's HTTP API opens up on:\n| Data Field      | Purpose                                       | Default               | Limits                                                 | Max Length\n|-----------------|-----------------------------------------------|-----------------------|--------------------------------------------------------|----------------|\n| `HTTP API IP`   | The IP XMRig's HTTP API server will bind to   | `localhost/127.0.0.1` | It must be a valid IPv4 address or a valid domain name | 255 characters |\n| `HTTP API Port` | The port XMRig's HTTP API server will bind to | `18088`               | `[1-65535]`                                            | 5 characters   |\n\nThe remaining buttons control miscellaneous settings (both are disabled by default, as P2Pool does not require them):\n| Button           | Purpose                                                                   |\n|------------------|---------------------------------------------------------------------------|\n| `TLS Connection` | Enables SSL/TLS connections (needs pool support)                          |\n| `Keepalive`      | Enables sending keepalive packets to prevent timeout (needs pool support) |\n\n## Connections\nFor transparency, here's all the connections Gupax makes:\n\n| Domain             | Why                                                   | When | Where |\n|--------------------|-------------------------------------------------------|------|-------|\n| https://github.com | Fetching metadata information on packages + download  | `[Gupax]` tab -\u003e `Check for updates` | [`update.rs`](https://github.com/hinto-janai/gupax/blob/main/src/update.rs) |\n| Remote Monero nodes | Connecting to with P2Pool, measuring ping latency | `[P2Pool Simple]` tab | [`node.rs`](https://github.com/hinto-janai/gupax/blob/main/src/node.rs) |\n| DNS | DNS connections will usually be handled by your OS (or whatever custom DNS setup you have). If using Tor, DNS requests for updates [*should*](https://tpo.pages.torproject.net/core/doc/rust/arti/) be routed through the Tor network automatically | All of the above | All of the above |\n\n## Remote Monero nodes\nThese are the remote nodes used by Gupax in the `[P2Pool Simple]` tab.\n\n| IP/Domain               | Location          | RPC Port | ZMQ Port |\n|-------------------------|-------------------|----------|----------|\n| monero.10z.com.ar       | 🇦🇷 Argentina      | 18089    | 18084    |\n| node.monerodevs.org     | 🇨🇦 Canada         | 18089    | 18084    |\n| p2pmd.xmrvsbeast.com    | 🇩🇪 Germany        | 18081    | 18083    |\n| node2.monerodevs.org    | 🇫🇷 France         | 18089    | 18084    |\n| p2pool.uk               | 🇬🇧 United Kingdom | 18089    | 18084    |\n| xmr.support             | 🇺🇸 United States  | 18081    | 18083    |\n| xmrbandwagon.hopto.org  | 🇺🇸 United States  | 18081    | 18084    |\n| xmr.spotlightsound.com  | 🇺🇸 United States  | 18081    | 18084    |\n| node.richfowler.net     | 🇺🇸 United States  | 18089    | 18084    |\n\n## Build\n### General Info\nYou need [`cargo`](https://www.rust-lang.org/learn/get-started), Rust's build tool and package manager.\n\n---\n\n### Linux\nThe pre-compiled Linux binaries are built on Ubuntu 20.04, you'll need these packages to build:\n```\nsudo apt install build-essential cmake libgtk-3-dev\n```\n\nAfter that, run:\n```\ncargo build --release\n```\n\nThe Linux release tars come with another file next to the Gupax binary: `Gupax.AppImage`.\n\n***This is not an actual [AppImage](https://en.wikipedia.org/wiki/AppImage)***, it is just a text file that contains: `./gupax`. This allows users to double-click and execute Gupax in file explorers like `Nautilus` in Ubuntu/Debian.\n\n### Building for a distribution\nGupax has a build flag for use as a package in a Linux distribution:\n```\ncargo build --release --features distro\n```\nThis is the same as the `--release` profile, but with some changes:\n| Change                                     | Reason |\n|--------------------------------------------|--------|\n| Built-in `Update` feature is disabled      | Updates should be handled by the native package manager\n| Default `P2Pool/XMRig` path is `/usr/bin/` | `P2Pool/XMRig` exist in _[some](https://aur.archlinux.org)_ repositories, which means they'll be installed in `/usr/bin/`\n\n---\n\n### macOS\nYou'll need [`Xcode`](https://developer.apple.com/xcode/) and [`brew`](https://brew.sh).\n\nDue to an issue with some [TLS code](https://gitlab.torproject.org/tpo/core/arti/-/issues/715), Arti (Tor) needs to fall back to using OpenSSL instead of the native TLS.\n\nThese are statically linked into Gupax, so you'll need to have them on your system:\n```bash\nbrew install pkg-config openssl xz\n```\n\nIf you want the binary to have an icon, you must use [`cargo-bundle`](https://github.com/burtonageo/cargo-bundle):\n```\ncargo install cargo-bundle\ncargo bundle --release\n```\nThis bundles Gupax into a `Gupax.app`, the way it comes in the pre-built tars for macOS.\n\nTo build only the binary:\n```\ncargo build --release\n```\n\n---\n\n### Windows\nYou'll need [`Visual Studio`](https://learn.microsoft.com/en-us/windows/dev-environment/rust/setup).\n\nThere is a `build.rs` file in the repo solely for Windows-specific things:\n1. It sets the icon in `File Explorer`\n2. It statically links `VCRUNTIME140.dll` into Gupax (the binary will not be portable without this)\n\nAfter installing the development tools, run:\n```\ncargo build --release\n```\n\nThis will build Gupax with the MSVC toolchain (`x86_64-pc-windows-msvc`). This is the recommended method and is how the pre-compiled release binaries are built.\n\n## License\nThe GUI library Gupax uses is [egui](https://github.com/emilk/egui). It is licensed under [MIT](https://github.com/emilk/egui/blob/master/LICENSE-MIT) \u0026 [Apache 2.0.](https://github.com/emilk/egui/blob/master/LICENSE-APACHE)\n\n[Many other libraries are used that have various licenses.](https://github.com/hinto-janai/gupax/blob/master/Cargo.toml)\n\n[Gupax](https://github.com/hinto-janai/gupax/blob/master/LICENSE), [P2Pool](https://github.com/SChernykh/p2pool/blob/master/LICENSE), and [XMRig](https://github.com/xmrig/xmrig/blob/master/LICENSE) are licensed under the GNU General Public License v3.0.\n\n## FAQ\n### System requirements\nGupax may not run on machines with:\n- a deprecated OS (Windows 7, Ubuntu 18.04, etc)\n- an older CPU (\u003c2010)\n\nAnything more recent than this should be okay.\n\n### Gupax does not start\n\n#### Windows\nGupax may have issues with machines with older CPUs (~14 years old, \u003c3.3 OpenGL) on Windows.\n\nGupax may also be flagged by antivirus, adding an exception to the Gupax folder should fix this.\n\n#### macOS\nGupax may fail to start on macOS due to Apple's security features. Apps downloaded from the internet may be flagged as 'unsafe' if they lack proper notarization by Apple.\n\nAs a workaround you can remove the quarantine flag on the .app file by running the following command in your terminal:\n\n```bash\nxattr -d com.apple.quarantine Gupax.app\n```\n\n#### Linux ARM\nGupax only supports ARM for macOS, not Linux.\n\nLinux ARM is not supported as `XMRig` does not provide official binaries. This means machines like Raspberry Pis will not work.\n\n### Where are updates downloaded from?\nThe latest versions are downloaded using GitHub's API.\n* Gupax [`https://github.com/hinto-janai/gupax`](https://github.com/hinto-janai/gupax)\n* P2Pool [`https://github.com/SChernykh/p2pool`](https://github.com/SChernykh/p2pool)\n* XMRig [`https://github.com/xmrig/xmrig`](https://github.com/xmrig/xmrig)\n\nGitHub's API blocks request that do not have an HTTP `User-Agent` header.\n\n[Gupax uses a random recent version of a `Wget/Curl` user-agent.](https://github.com/hinto-janai/gupax/blob/2c5bd0d7f6a39415353769427d60c0ca57f29710/src/update.rs#L178)\n\n### P2Pool connection errors\n**TL;DR: Run \u0026 use your own Monero node.**\n\nIf you are using the [default P2Pool settings](#P2Pool) then you are using a [Remote Monero node](#remote-monero-nodes). Using a remote node is convenient but comes at the cost of privacy and reliability. You may encounter connections issues with these nodes that look like this:\n```\n2023-01-05 12:27:37.7962 P2PServer peer 23.233.96.72:37888 is ahead on mainchain (height 2792939, your height 2792936). Is your monerod stuck or lagging?\n```\nTo fix this you can select a different remote node, or better yet: [Run your own local Monero node](#running-a-local-monero-node).\n\nRunning and using your own local Monero node improves privacy and ensures your connection is as stable as your own internet connection. This comes at the cost of downloading and syncing Monero's blockchain yourself (currently 155GB). If you have the disk space, consider using the [P2Pool Advanced](#p2pool-1) tab and connecting to your own Monero node.\n\nFor a simple guide, see the [Running a Local Monero node](#running-a-local-monero-node) section.\n\n### Can I quit mid-update?\nIf you started an update, you should let it finish. If the update has been stuck for a *long* time, quitting Gupax is probably okay. The worst that can happen is that your `Gupax/P2Pool/XMRig` binaries may be moved/deleted. Those can be easily redownloaded. Your actual `Gupax` user data (settings, custom nodes, pools, etc) is never touched.\n\nAlthough Gupax uses a temporary folder (`gupax_update_[A-Za-z0-9]`) to store temporary downloaded files, there aren't measures in place to revert an upgrade once the file swapping has actually started. If you quit Gupax anytime before the `Upgrading packages` phase (after metadata, download, extraction), you will technically be safe but this is not recommended as it is risky, especially since these updates can be very fast.\n\n### Bundled vs Standalone\n`Bundled` Gupax comes with the latest version of P2Pool/XMRig already in the `zip/tar`.\n\n`Standalone` only contains the Gupax executable.\n\n### How much memory does Gupax use?\nGupax itself uses around 100-400 megabytes of memory.\n\nGupax also holds up to [500,000 bytes](https://github.com/hinto-janai/gupax/blob/2c5bd0d7f6a39415353769427d60c0ca57f29710/src/helper.rs#L61) of log data from `P2Pool/XMRig` to display in the GUI terminals. These logs are reset once over capacity which takes around 1-4 hours.\n\nMemory usage should *never* be above 500~ megabytes. If you see Gupax using more than this, please send a bug report.\n\n### How is sudo handled? (on macOS/Linux)\n[See here for more info.](https://github.com/hinto-janai/gupax/tree/main/src#sudo)\n\n### Why does Gupax need to be Admin? (on Windows)\n[See here for more info.](https://github.com/hinto-janai/gupax/tree/main/src#why-does-gupax-need-to-be-admin-on-windows)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhinto-janai%2Fgupax","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhinto-janai%2Fgupax","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhinto-janai%2Fgupax/lists"}