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

# Node environment variables

> Every PANOFX_* variable the node reads.

## Secrets

The node reads `NAME_FILE` first (a path to a file holding the value) and `NAME` second. Prefer the file form.

| Variable                                                                | Meaning                                               |
| ----------------------------------------------------------------------- | ----------------------------------------------------- |
| `PANOFX_KEY_PASSPHRASE_FILE`, `PANOFX_KEY_PASSPHRASE`                   | The keyfile passphrase. Also opens the Solana keyfile |
| `PANOFX_TURNKEY_API_PRIVATE_KEY_FILE`, `PANOFX_TURNKEY_API_PRIVATE_KEY` | Turnkey API private key                               |
| `PANOFX_MPCVAULT_API_TOKEN_FILE`, `PANOFX_MPCVAULT_API_TOKEN`           | MPCVault API token                                    |

## Policy overrides

| Variable                     | Meaning                                                                |
| ---------------------------- | ---------------------------------------------------------------------- |
| `PANOFX_EXECUTOR`            | Replaces `contracts.executor` when the policy has one EVM chain        |
| `PANOFX_EXECUTOR_<chain id>` | The same, per chain, when it has several                               |
| `${NAME}` in the policy      | Any variable, expanded at start; an unset one fails with its file line |

## The app

| Variable                                                                        | Meaning                                                                                              |
| ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `PANOFX_DATA_DIR`                                                               | Data directory (default per platform; `/data` in the container)                                      |
| `PANOFX_REMOTE`                                                                 | Default for `--remote`: `auto`, `on` or `off`                                                        |
| `PANOFX_REMOTE_PAIR_SECRET`                                                     | A pairing secret from your secret store, at least 20 characters, valid until the first browser pairs |
| `PANOFX_SECRETS`                                                                | `file` keeps the wallet passphrase in `secrets.json` instead of the keychain (set by the container)  |
| `PANOFX_REQUIRE_VOLUME`                                                         | `1` refuses to create a wallet unless the data directory is a mounted volume (set by the container)  |
| `PANOFX_CONSOLE_URL`, `PANOFX_WEB_URL`, `PANOFX_RELAY_URL`, `PANOFX_REMOTE_URL` | Override the network catalogue's URLs, for local stacks                                              |

## The container entrypoint

| Variable                     | Meaning                                                   |
| ---------------------------- | --------------------------------------------------------- |
| `PANOFX_MODE`                | `app` runs the app instead of `start`                     |
| `PANOFX_RUNTIME_DIR`         | Where injected files are written (default `/tmp/panofx`)  |
| `PANOFX_POLICY_YAML`         | The policy's contents                                     |
| `PANOFX_KEYFILE_JSON`        | The encrypted keyfile's contents                          |
| `PANOFX_SOLANA_KEYFILE_JSON` | The encrypted Solana keyfile's contents (0.10.0 or later) |
| `PANOFX_REGISTER_ON_START`   | `true` re-sends the registration before every start       |

See [Containers](/resolvers/runbook/containers) for how they fit together.

## Output the Mac app reads

`panofx-node app` prints `PANOFX_APP_URL=` and `PANOFX_APP_TOKEN=` on stdout; the Mac app starts the
process and reads them. `PANOFX_HOST_APP` is set by the Mac app so the node exits if the app is force-quit.

Variables named `PANOFX_ANVIL_*`, `PANOFX_TEST_*`, `PANOFX_SOLANA_DEPLOYMENT`, `PANOFX_SOLANA_KEYS` and
`PANOFX_REMOTE_E2E_*` are read by tests and the gate scripts only.
