NVIDIA/Personal-AI-Router
Go
Captured source
source ↗NVIDIA/Personal-AI-Router
Description: Router that virtually distributes inference across connected devices in the home.
Language: Go
License: Apache-2.0
Stars: 1069
Forks: 178
Open issues: 51
Created: 2026-07-02T20:03:57Z
Pushed: 2026-09-09T01:01:49Z
Default branch: main
Fork: no
Archived: no
README:
NVIDIA Personal AI Router (PAIR)
NVIDIA Personal AI Router (PAIR) is a local inference router for a group of compatible computers on the same network. It discovers participating nodes, manages supported inference engines, and presents Ollama-compatible and OpenAI-compatible proxy endpoints to applications and agents. Independent requests can be routed to eligible nodes according to engine availability, model availability, and current workload.
PAIR is useful for concurrent local workloads such as multi-agent applications. Prompts and responses are intended to remain on the local network when every configured client, model source, engine, and node is local.
> PAIR routes each independent request to one node. It does not pool GPU > memory, combine GPUs into a larger logical GPU, shard one model across > machines, or split an in-flight inference request between nodes.

*Two paired machines: requests arrive on one, run on whichever node suits each one, and both report live GPU and memory use throughout. [Watch the full clip](assets/pair-demo.mp4).*
What is supported
| | | | --- | --- | | Operating systems | Windows 11; Linux; macOS | | Architectures | x64 and arm64 on all three. Windows on ARM is experimental. | | Installers | Windows .exe; Linux .deb; macOS .dmg. On other Linux distributions, [build from source](docs/building.mdx). | | Mixing nodes | Windows, Linux, and macOS nodes can all be paired with each other | | Inference engines | Ollama and LM Studio |
PAIR running on a machine does not mean an engine will. PAIR itself runs on any supported Windows, Linux, or macOS machine. Each engine sets its own requirements for the operating system, GPU, and drivers, and each model needs enough memory to load. Whether a particular engine and model work on a particular machine is between that engine and that machine, so check the engine's own documentation before assuming a node can serve a model. A node only becomes a candidate for a request once it is actually running a compatible engine, and PAIR prefers the nodes it already knows hold the model.
Quick start
Download a released build and use the desktop application. That is the path we recommend and the one the rest of this guide assumes. Building from source and the terminal interface both exist for good reasons — changing PAIR, and machines with no desktop — but neither is the ordinary way in. Those are covered in [Building and running PAIR from source](docs/building.mdx) and [Terminal interface](docs/terminal-interface.mdx).
Download a release
A released installer is signed, sets up the background services and the desktop application together, and adds the firewall rules PAIR needs on Windows. It also tells you when a newer release exists and installs it on your say-so from Settings → Service. A build you make yourself is unsigned and checks no update feed, so you would upgrade it by pulling and rebuilding.
Download PAIR from the GitHub releases page. Release downloads include:
- a Windows installer;
- a Debian package for Linux; and
- a macOS disk image.
On Windows and macOS, double-click the download and follow the installer's usual prompts — on macOS that means dragging NVIDIA Personal AI Router to your Applications folder.
On Linux, install the package from the directory you downloaded it into:
sudo apt install ./NVPAIR-Setup-*.deb
If you have kept more than one PAIR package in that directory, install the one you want by its full filename instead.
Run it
- Open PAIR the way you would any application — the Start menu on Windows,
Launchpad or the Applications folder on macOS, your applications list on Linux. On a machine with no desktop environment, drive it from the [terminal interface](docs/terminal-interface.mdx) instead, which starts the same background services and gives you a full-screen view in the terminal.
- Let it finish starting. Overview shows this machine once the services
are up. If it stays on Loading..., open Settings → Service and read the status there.
- Get an engine running. On the node's card, open Engine settings and
select Install next to Ollama or LM Studio. PAIR downloads and sets the engine up for you, so nothing needs to be in place beforehand. If PAIR already found an engine you installed yourself, start that one instead.

- Add a model. Select Add model on the same card and download one.
qwen4:12b is used for this example; it can be replaced with a model of your choice.

- Send a request. Two equally good options:
- Let PAIR generate the traffic. Select Test on
Settings → Service and PAIR sends a minute of inference through the same path, so you can watch the jobs appear without writing anything.

- Send one yourself. Use the
curlcall below. The job then appears under
Jobs, naming the node that served it.
With Ollama on its default port, this runs as written:
curl http://127.0.0.1:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"qwen4:12b","messages":[{"role":"user","content":"In one sentence, what does a router do?"}]}'The reply is ordinary OpenAI-shaped JSON, abbreviated here:
{
"object": "chat.completion",
"model": "qwen4:12b",
"choices": [
{
"message": {
"role": "assistant",
"content": "A router decides where each incoming message should go and forwards it there."
},
"finish_reason":...Excerpt shown — open the source for the full document.