> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parallaxprotocol.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Configure Hashwarp with the first-run wizard, a JSON configuration file or command line options.

Hashwarp takes its settings from the command line, from a JSON configuration file, or both. Every option has the same name in both places. The [option reference](/hashwarp/options) lists them all.

***

## The first-run wizard

Run `hashwarp` without options and without a configuration file, in a terminal. It asks:

1. Whether you mine on a pool or solo, on your own node.
2. On a pool: which one, from a list of known Parallax pools, or another pool's address and whether it uses TLS. Then your Parallax address and a name for the rig (the computer's name by default).
3. Solo: your node's URL (`http://127.0.0.1:8545` by default).
4. Whether to save the answers to `hashwarp.json`, and whether to start mining now.

When the [Parallax status page](https://status.parallaxprotocol.org) can be reached, the pool list shows each pool's share of the network's blocks, and a pool with the majority comes last.

On Windows, double-clicking `hashwarp.exe` starts the wizard too, and the window stays open when Hashwarp exits so you can read why.

***

## The configuration file

Run without options, Hashwarp reads `hashwarp.json` from the folder of the executable, or else from the current folder. Run with options, it reads a configuration file only when given one with `--config`:

```bash theme={null}
hashwarp --config /path/to/hashwarp.json
```

The keys are the option names without the leading dashes. The download has a commented example, `hashwarp.json.example`:

```json theme={null}
// Hashwarp configuration. Comments are allowed.
{
    // Pools in failover order: host:port, or URLs
    "pool": ["pool.example.com:3333"],

    // Your Parallax address and a name for this rig
    "wallet": "0x0000000000000000000000000000000000000000",
    "worker": "rig1",

    // Pause a GPU at 85°C and resume it at 70°C (lists hold one value per GPU)
    "temp-stop": [85],
    "temp-resume": [70],

    // Log to a file as well (rotated at 20 MB)
    "log-file": "hashwarp.log",

    // Dashboard and JSON API on http://127.0.0.1:21550
    "api-bind": "127.0.0.1:21550"
}
```

* An option that takes a value is a string or a number: `"worker": "rig1"`, `"retry-delay": 10`.
* An option that takes a list is an array: `"pool": ["a.example.com:3333", "b.example.com:3333"]`.
* A flag (an option without a value) is `true`: `"tls": true`.
* A key Hashwarp doesn't know stops it with an error, so a typo doesn't go unnoticed.

Options given on the command line override the file's: `hashwarp --config hashwarp.json --worker rig2` mines with the file's settings as `rig2`.

### Writing a configuration file

`--save-config` writes the options you give to a file, then exits:

```bash theme={null}
hashwarp --pool pool.example.com:3333 --wallet <YOUR_ADDRESS> --worker rig1 --temp-stop 85 --save-config hashwarp.json
```

***

## Lists per GPU

Tuning, temperature and overclocking options take one value per GPU, separated by commas, in the order of `--gpu-id` (or of `hashwarp --list-devices` when all GPUs mine). A single value applies to every GPU:

```bash theme={null}
hashwarp ... --temp-stop 85            # every GPU at 85°C
hashwarp ... --temp-stop 85,80,80      # GPU 0 at 85°C, GPUs 1 and 2 at 80°C
```

In the configuration file these are arrays: `"temp-stop": [85, 80, 80]`. Overclocking options also accept `x` for a GPU to leave alone: `--oc-mem-offset 2000,x,1500`.

***

## Start scripts

The download has start scripts to edit and double-click (`start.bat`, `start-solo.bat` on Windows) or run (`start.sh`, `start-solo.sh` on Linux). Each sets the pool or node and your address at its top, and passes on any extra options.

***

## Running as a service (Linux)

To start Hashwarp with the computer and restart it after a [watchdog](/hashwarp/safety#the-watchdog) exit, run it as a systemd service. Save as `/etc/systemd/system/hashwarp.service`, with your paths:

```ini theme={null}
[Unit]
Description=Hashwarp
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/opt/hashwarp/hashwarp --config /opt/hashwarp/hashwarp.json --no-hotkeys --syslog
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
```

Then:

```bash theme={null}
sudo systemctl daemon-reload
sudo systemctl enable --now hashwarp
journalctl -u hashwarp -f
```

`--syslog` leaves out the time, which journald adds, and marks each line's level so `journalctl -p warning` shows only the warnings and errors. The service runs as root, which [overclocking](/hashwarp/overclocking) needs; without overclocking, add `User=` with an ordinary user.

***

## Environment variables

| Variable | Meaning |
| - | - |
| `HASHWARP_WALLET` | Your Parallax address, when `--wallet` isn't given |
| `NO_COLOR` | Log without colors, like `--no-color` |
| `SSL_CERT_FILE` | The CA certificates file for TLS pools, when Hashwarp can't find the system's |
| `SSL_NOVERIFY` | Don't check TLS pools' certificates. Anyone between you and the pool could then steal your shares |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.