Skip to main content

For LLMs

Everything on this site, condensed into one Markdown file you can hand to an AI assistant so it sets up your host for you.

Paste it into ChatGPT, Claude, Copilot — anything — and ask it to walk you through the install. It is written to be read by a model rather than skimmed by a person: complete, self-contained, and ending with the mistakes assistants actually make here, so it corrects them before they reach you.

If your assistant can browse, this is enough:

Read https://docs.neurogrid.cc/llms-full.txt and help me set up
a NeuroGrid host on this machine.

Otherwise copy the canvas below.

llms-full.txt
# NeuroGrid — complete host reference

> Self-contained. An assistant reading this file has everything needed to walk
> someone through installing, updating and debugging a NeuroGrid host.

NeuroGrid is a marketplace for GPU time. A host runs one Docker container that
registers their NVIDIA GPU, waits for work, serves an open-weight LLM when a
client deploys one, and reports back. The host is paid per hour of serving time.

---

## Before anything else

Two things the host needs, both from the console at https://console.neurogrid.cc

1. **A machine token** (`ng_live_…`), shown once when they add a GPU. It claims
one specific card and cannot be reused on a second machine.
2. **An encryption password they choose themselves.** This is not issued by
NeuroGrid. It encrypts the token on their disk.

The password rule matters and is easy to get wrong:

- The host picks it and keeps it. NeuroGrid never sees it.
- The **same** password is required every time the container is recreated,
including every update.
- A different password cannot decrypt the stored token, and the machine must
then be registered again with a fresh token.
- It cannot be recovered or reset.

Tell the host to save it somewhere durable **before** running anything.

---

## Requirements

| | Minimum | Recommended |
|---|---|---|
| OS | 64-bit Linux (kernel 5.x+), or Windows 11 + WSL2 | Ubuntu 22.04 / 24.04 LTS |
| GPU | NVIDIA, 6 GB VRAM | 16–24 GB+ VRAM |
| NVIDIA driver | 575+ (CUDA 12.9) | Latest stable |
| CPU | 4 cores | 8+ cores |
| RAM | 8 GB | 32 GB+ |
| Free disk | 50 GB SSD | 100 GB+ NVMe SSD |
| Network | 25 Mbps down, stable | 100 Mbps+ symmetric |

**NVIDIA only.** AMD, Intel and Apple silicon are not supported — the inference
engine is CUDA-only. Laptop GPUs are fine and count as real hosts.

VRAM tiers, which set the hourly rate:

| Tier | VRAM | Examples |
|---|---|---|
| Entry | 6–8 GB | RTX 2060, 3050/3060, 4060/4060 Ti, 5060 |
| Standard | 10–12 GB | RTX 3080, 2080 Ti, 4070/4070 Ti, 5070 |
| High | 16 GB | RTX 4070 Ti Super, 4080/4080 Super, 5070 Ti/5080 |
| Premium | 24–32 GB | RTX 3090/3090 Ti, 4090, 5090, RTX 4000–5000 Ada, A10 |
| Pro / Datacenter | 48 GB+ | A40, RTX 6000 Ada, RTX PRO Blackwell, A100, H100, H200 |

Network: outbound only. No inbound ports, no port forwarding — the inference
tunnel is outbound, so consumer NAT is fine.

The host installs exactly two things themselves: **Docker** and the **NVIDIA
driver**. Everything else is inside the image.

---

## Verify the machine first

```bash
docker run hello-world
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
```

The second must print the GPU. If it does not, the NVIDIA Container Toolkit is
missing (Linux) or Docker Desktop is not on the WSL2 backend (Windows). Do not
continue until it works.

---

## Install — Linux

```bash
# 1. Password. Save the output before continuing.
export AGENT_ENCRYPTION_PASSWORD="$(openssl rand -base64 32)"
echo "$AGENT_ENCRYPTION_PASSWORD"

# 2. Run
docker run -d --name neurogrid-agent \
--gpus all --restart unless-stopped \
--dns 1.1.1.1 --dns 8.8.8.8 \
-v neurogrid-data:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/neurogrid/workloads:/var/lib/neurogrid/workloads \
-e AGENT_ENCRYPTION_PASSWORD="$AGENT_ENCRYPTION_PASSWORD" \
ghcr.io/neurogrid-ai-exchange/neurogrid-agent:latest --token ng_live_xxxxxxxx

# 3. Watch it register
docker logs -f neurogrid-agent
```

Success looks like `Bootstrap sent successfully`, then `Heartbeat sent
successfully` every 30 seconds. The GPU flips to confirmed in the console.

---

## Install — Windows (PowerShell)

Backtick `` ` `` is the line continuation, not `\`.

```powershell
# Windows has no openssl; borrow one from a container
$pw = docker run --rm alpine sh -c "head -c 32 /dev/urandom | base64 -w0"
echo $pw

docker run -d --name neurogrid-agent `
--gpus all --restart unless-stopped `
--dns 1.1.1.1 --dns 8.8.8.8 `
-v neurogrid-data:/data `
-v /var/run/docker.sock:/var/run/docker.sock `
-v /var/lib/neurogrid/workloads:/var/lib/neurogrid/workloads `
-e AGENT_ENCRYPTION_PASSWORD="$pw" `
ghcr.io/neurogrid-ai-exchange/neurogrid-agent:latest --token ng_live_xxxxxxxx
```

`/var/run/docker.sock` and `/var/lib/neurogrid/workloads` are **not** Windows
paths and must not be translated. They resolve inside Docker Desktop's Linux VM.
The host does not need to create them.

Windows hosts should also disable sleep, or the machine stops serving and any
running job fails.

---

## What each flag does

- `--gpus all` — without it there is no `nvidia-smi` in the container and the
agent cannot measure VRAM or size a model.
- `--dns 1.1.1.1 --dns 8.8.8.8` — Docker fixes a container's DNS when it is
**created** and never updates it. Without resolvers that exist on every
network, moving the machine between networks silently breaks it.
- `-v neurogrid-data:/data` — the encrypted token and config. Losing this volume
means re-registering.
- `-v /var/run/docker.sock:/var/run/docker.sock` — how the agent starts job
containers. This is root-equivalent access to the host; the container is
packaging, not a security boundary. Say so if the host asks.
- `-v /var/lib/neurogrid/workloads:/var/lib/neurogrid/workloads` — must be the
**same path on both sides**. The agent hands this path to the Docker daemon,
which resolves it on the host.
- `--restart unless-stopped` — comes back after a crash or reboot, stays down if
stopped deliberately.

---

## Updating

The agent **never updates itself**.

```bash
docker pull ghcr.io/neurogrid-ai-exchange/neurogrid-agent:latest
docker stop neurogrid-agent && docker rm neurogrid-agent
# then the same docker run as above, WITHOUT --token, and with the SAME password
```

Two things to check before updating:

1. **The same password**, or the stored token becomes unreadable.
2. **No job running**, or it dies and counts as a failure:
```bash
docker ps --filter "name=neurogrid-job" --format '{{.Names}}'
```
Empty output means it is safe.

---

## Managing

```bash
docker logs -f neurogrid-agent # follow logs
docker restart neurogrid-agent # restart
docker stop neurogrid-agent # stop serving, stay registered
docker ps --filter "name=neurogrid-job" # is a job running
```

Stopping is not unregistering. To take a planned break, pause the listing in the
console instead — jobs already running then finish normally rather than failing.

---

## Troubleshooting

### Heartbeats fail, or jobs die right after the model loads

Most common real-world failure. **Cause:** the machine changed networks. Docker
gives a container its DNS at creation and never updates it, so it keeps querying
a resolver that no longer exists. Routing still works, so nothing looks offline
— only name lookups fail, each hanging until timeout.

**Fix:** `docker restart neurogrid-agent`. Reconnecting Wi-Fi does not help.

**Prevention:** the `--dns` flags above.

The agent detects this itself and logs `Cannot resolve the backend's hostname`.

### nvidia-smi works on the host but not in Docker

```bash
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
```

On Windows this means Docker Desktop is not on WSL2, or the driver is below 575.

### Invalid token

Truncated when copied, already used by another machine, or the listing was
cancelled in the console. Tokens claim one GPU each.

### Refuses to start: config file is writable

Deliberate — that file sets which server the agent talks to.

```bash
docker exec neurogrid-agent chmod 600 /data/config/config.yaml
docker restart neurogrid-agent
```

### Disk full

```bash
docker system df
docker image prune -f
docker volume rm neurogrid-hf-cache # model cache, only while idle
```

Never remove `neurogrid-data` — that is the registration.

---

## Payments

**The cycle:** a payout is attempted per host every **15 days**. If the pending
balance is **$10 (1000 cents) or more**, it is transferred in full. Below that,
it rolls into the next cycle. Nothing expires.

**NeuroGrid absorbs the Stripe payout fee** — the host receives their whole
balance, not the balance minus a charge.

**Metering is per hour of serving time, never per token.** A busy client and an
idle one pay the same for the same wall-clock hour.

**The billing clock starts at first serving**, not at deployment creation. Queue
time, image pull and model load are unpaid — that can be ten minutes or more on
a large model, and it is not billed to the client either.

**Rate** comes from the card's VRAM tier. The client pays the host's rate plus a
20% platform commission; the console shows the host the amount they receive.

**Stripe Connect is required before money can move.** Earnings accrue from the
first job regardless, and go out on the first cycle after Stripe verifies the
account. Transfers are in USD.

**Gaps:** if monitoring loses sight of the agent but the job container never
restarted, that time still counts as served and is billable.

**Failed jobs earn nothing** and make future matching less likely. The avoidable
causes are recreating the container mid-job, letting the machine sleep, running
out of disk, and the DNS issue above.

---

## Things assistants get wrong

- Do not look for a download link, installer, `.deb`, `.exe` or binary release.
There is only the Docker image.
- Do not generate the encryption password and move on — make sure the host has
actually saved it. It is unrecoverable.
- Do not translate the Unix container paths on Windows. They are correct as
written.
- Do not suggest `--network host`. The agent creates its own user-defined
network and does not need it; Docker Desktop's support for it is limited.
- Do not omit `--dns`. It is the difference between a host that survives moving
networks and one that silently dies.
- Do not promise payment for uptime. Hosts earn for time actually spent serving
a deployment, not for being available.

---

## Links

- Console: https://console.neurogrid.cc
- Docs: https://docs.neurogrid.cc
- Image: `ghcr.io/neurogrid-ai-exchange/neurogrid-agent:latest`
- GitHub: https://github.com/NeuroGrid-AI-exchange

Also available raw, if you prefer to link rather than paste: llms-full.txt · llms.txt (short index, llms.txt convention)