# Pair a machine

> Link a machine to your provider account with the Node Lodge agent on Linux or Windows: get it, check it, pair it, keep it reporting.

Pairing links a machine to your organization. The agent then reports the machine's hardware and a heartbeat every 30 seconds, and the machine appears in your console under **Machines**. About 5 minutes.

## Before you start

- A provider account with a verified email address.
- Node.js 22.12 or later on the machine.
- A terminal on the machine as a **standard user**: not root, not administrator.
- To host Community sessions: a machine that meets the [Provider requirements](https://nodelodge.com/docs/provider-requirements).

Windows and other Linux systems pair and report their hardware. Community listings need an Ubuntu Server 24.04 machine that meets the [Provider requirements](https://nodelodge.com/docs/provider-requirements); the steps from pairing to listing are in [Providers](https://nodelodge.com/docs/providers).

## 1. Generate a pairing code

1. In the console, open **Setup**, then go to **Install**.
2. Name the machine. Renters see the name: avoid personal details.
3. Select **Generate pairing code**. The code works once and expires after 15 minutes.

The console then shows the commands for your machine. Pick **Linux** or **Windows** above the first one.

## 2. Get the agent

The first command creates a `ComputeHost` folder in your home directory, downloads the agent and its signature, and checks the signature against the Node Lodge release keys. If the check fails, both files are removed and nothing runs.

- **Linux**: paste it in a terminal (bash).
- **Windows**: paste it in PowerShell, not as administrator.

## 3. Pair

```bash
node compute-host.mjs enroll --api <console address> --code <your code>
```

The console fills in both values. The agent generates a key pair on the machine and sends only the public half. The private key never leaves the machine.

## 4. Keep it reporting

```bash
node compute-host.mjs run
```

Heartbeats go out every 30 seconds over HTTPS. The machine opens no port. Keep the command running: in a terminal that stays open, or under a service manager (systemd on Linux, Task Scheduler on Windows) as the same standard user.

As soon as the machine pairs, the console opens its page with the first heartbeat.

## What the agent reports

| Reports | Never reports |
|---|---|
| CPU model, cores and threads | Hostname or user names |
| Memory size | IP or MAC addresses |
| GPU model, count, VRAM, driver, CUDA version, PCIe link, temperature and power limit | Serial numbers |
| Disk type, model, size and free space | File names or file contents |
| Motherboard vendor and model | Network interface names |
| Network link speed and type | Anything you type or run |
| Internet speed, measured weekly when the machine is idle | |
| System, distribution and agent version | |

Each GPU is identified by a one-way hash of its ID, so a card paired twice is detected.

## Internet speed test

When the machine is paired, then once a week, when no session runs or starts within 15 minutes, the agent measures the machine's internet speed against `speedtest.nodelodge.com`: about 8 seconds each way on parallel connections, up to a few GB at high speeds. The test server runs on Cloudflare's network, at the edge nearest the machine, so Cloudflare sees the machine's public IP address, as for any connection; the console receives only the speeds, the latency and the time of the test. It never runs during a rental.

Run it yourself at any time, nothing is sent to the console:

```bash
node compute-host.mjs speedtest
```

To turn the weekly test off, start the agent with `node compute-host.mjs run --no-speedtest`.

## 5. Check the machine

```bash
node compute-host.mjs doctor
```

A read-only self-test: Node version, privileges, hardware, the link to the console and the clock. It prints **pass**, **warn** or **fail** for each check, and the pairing state. Add `--community` on Linux for the session checks listed in [Provider requirements](https://nodelodge.com/docs/provider-requirements#the-self-test).

## After pairing

1. **Review.** The Node Lodge team checks the reported hardware against the requirements, and the machine's heartbeats. The machine page shows **awaiting review**, then **approved** or **rejected**.
2. **Price.** Set your hourly price on the machine page. You can prepare it during the review.
3. **List.** Once approved, list the offer in the catalog. Unlist it at any time.

## Troubleshooting

| You see | Do this |
|---|---|
| `Signature check failed` | Run the download command again. If it fails twice, contact support. |
| `node` is not recognized | Install Node.js 22.12 or later, open a new terminal, run the command again. |
| Code expired | Generate a new code in **Setup**. Each code works once, for 15 minutes. |
| Paired, then offline | `run` stopped. Start it again on the machine. |
| `privileges: fail` | Close the administrator or root terminal and use a standard user. |

## Unpair a machine

On the machine page, open **Settings** and select **Revoke key**. The machine can no longer connect and its offer is unlisted. On the machine, `node compute-host.mjs forget` deletes the local identity. To use the machine again, pair it with a new code.
