> ## 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.

# Run a resolver

> What a resolver is, what you need, and the two ways to run one.

A resolver is a small program that answers requests for quote on the cNGN corridors with signed, binding
offers from inventory you hold. There is no application and no approval: anyone who can sign can register
and quote.

<CardGroup cols={2}>
  <Card title="The Panofx Node app" icon="window" href="/resolvers/install">
    Point and click. Creates the wallet, writes the settings, sends the one-time approvals, registers your node, runs it, and tells you when it needs you. About ten minutes.
  </Card>

  <Card title="The command line" icon="terminal" href="/resolvers/runbook/command-line">
    The same node driven by a YAML policy file, for servers and people who prefer it. About twenty minutes.
  </Card>
</CardGroup>

Both run the identical node. The app is the Mac menu-bar app, or `panofx-node app` in a browser on Linux
and Windows. A node on a server with no screen is set up from a [paired browser](/resolvers/headless).

## What you need

* **A machine that stays online.** Linux, macOS or Windows, or any container host. 1 vCPU and 256 MB of RAM is plenty.
* **A Base Sepolia RPC URL.** The public `https://sepolia.base.org` works. A keyed provider is steadier.
* **About 0.001 Base Sepolia ETH** for two one-time approvals. Your node never spends gas after that.
* **Inventory in the tokens you want to sell.** Testnet USDC from [Circle's faucet](https://faucet.circle.com) (choose Base Sepolia), and testnet cNGN from the Panofx team during the pilot.
* **For Solana devnet,** a little SOL for token-account rent, and devnet test cNGN and USDC from the Panofx team.

## What your node does

Every few seconds the relay sends your node a request: a pair, a side, a size, and the taker's address.
Your node prices it from the reference band plus your spread, checks its balances, and either signs an
offer or declines with a reason. If your offer is the best price, the taker's signature and the keeper's
transaction settle it. Your tokens leave your wallet only at that moment, and only in exchange for the
taker's.

Your node never sends a transaction after the one-time approvals. It holds nothing but its own inventory.
It fails closed: no offer is signed on a chain while that chain's RPC, its clock or the signer is unhealthy.

## What it costs you

|              |                                                                               |
| ------------ | ----------------------------------------------------------------------------- |
| Protocol fee | Paid by the taker, not by you. 5 bps of the fee token to the treasury.        |
| Gas          | Paid by the keeper, repaid by the taker. You pay gas once, for the approvals. |
| Your margin  | Your `spread_bps` either side of the reference rate.                          |

## Where to next

<Steps>
  <Step title="Install the node">
    [Install](/resolvers/install) has the steps for Windows, macOS, Linux and Docker.
  </Step>

  <Step title="Set it up">
    [In the app](/resolvers/app-setup) or [from the command line](/resolvers/runbook/command-line).
  </Step>

  <Step title="Operate it">
    [Day to day](/resolvers/operate/day-to-day), and [why your node declined](/resolvers/operate/declines) when it does.
  </Step>
</Steps>
