Skip to content

Commit 32aa4bd

Browse files
committed
docs: add release notes and an upgrade guide
Add a Release Notes page, starting with 1.0.0, and an Upgrade Guide for updating from an earlier version. The guide notes that most machines need nothing extra, then covers tidying up the old PAIR.app on macOS, an LM Studio installed by an earlier PAIR that has no install marker, and browser clients affected by the CORS change. Link both from the docs navigation, the README, Getting Started, and Known Issues. Signed-off-by: Chris Kelsey <ckelsey@nvidia.com>
1 parent e4d2b09 commit 32aa4bd

6 files changed

Lines changed: 254 additions & 1 deletion

File tree

‎README.md‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,9 @@ Each entry assumes the ones before it.
230230
together. Start here so the vocabulary in every other document makes sense.
231231
2. **[Getting started](docs/getting-started.mdx)** — install it, pair two
232232
machines, prepare a model, and send a first request. This is the only document
233-
most users need.
233+
most users need. When you update, **[Release notes](docs/release-notes.mdx)**
234+
lists what changed and the **[Upgrade guide](docs/upgrade-guide.mdx)** covers
235+
any steps the update needs.
234236
3. **[Managing engines](docs/engine-lifecycle.mdx)** — install, start, stop,
235237
update, and uninstall engines; what PAIR restores after you quit or relaunch.
236238
4. **[Engine settings](docs/engine-settings.mdx)** — change an engine's ports and

‎docs/getting-started.mdx‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -598,6 +598,11 @@ because they belong to the engine rather than to PAIR. Updating PAIR does not
598598
update its inference engines — engines are updated separately from **Engine
599599
settings**, described in [Managing engines](engine-lifecycle.mdx).
600600

601+
If you are updating from a version before 1.0.0, a few setups have a small extra
602+
step, such as tidying up the old app on macOS. The
603+
[Upgrade Guide](upgrade-guide.mdx) walks through them, and
604+
[Release Notes](release-notes.mdx) lists what changed.
605+
601606
You update each machine from that machine. PAIR never updates a peer for you,
602607
and it cannot be driven remotely, so a cluster is updated one node at a time.
603608

@@ -624,6 +629,8 @@ endpoint, routing, and service-startup issues.
624629

625630
Refer to these resources for related information:
626631

632+
- [Release notes](release-notes.mdx)
633+
- [Upgrade guide](upgrade-guide.mdx)
627634
- [Troubleshooting](troubleshooting.mdx)
628635
- [Project overview](overview.mdx)
629636
- [Architecture, data flow, and trust boundaries](architecture.mdx)

‎docs/known-issues.mdx‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,15 @@ This matters most for a genuinely headless deployment, where those operations ha
8080
no other route on that machine. Refer to
8181
[What the Terminal Interface Cannot Do](terminal-interface.mdx#what-the-terminal-interface-cannot-do).
8282

83+
## PAIR Does Not Remove an LM Studio an Earlier Version Installed
84+
85+
PAIR removes only the engines it has a record of installing, and versions before
86+
1.0.0 kept no record. An LM Studio installed by one of those versions is treated
87+
as your own: **Uninstall**, **Reset app data**, and uninstalling PAIR all leave
88+
it and `~/.lmstudio` in place. It keeps working with PAIR. To remove it, or to
89+
let PAIR manage it from now on, refer to
90+
[If an Earlier PAIR Installed LM Studio for You](upgrade-guide.mdx#if-an-earlier-pair-installed-lm-studio-for-you).
91+
8392
## Engine Binaries Are Not on Your PATH
8493

8594
PAIR does not add the engines it installs to your `PATH`, so running an engine's

‎docs/release-notes.mdx‎

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
{/*
2+
SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3+
SPDX-License-Identifier: Apache-2.0
4+
*/}
5+
6+
# Release Notes
7+
8+
What changed in each release of PAIR. If you are updating from an earlier
9+
version, read the [Upgrade Guide](upgrade-guide.mdx) as well: it covers the
10+
steps some machines need.
11+
12+
Notes for releases before 1.0.0 are on
13+
[GitHub Releases](https://github.com/NVIDIA/Personal-AI-Router/releases).
14+
15+
## 1.0.0
16+
17+
This release brings llama.cpp and RTX Spark support to PAIR, and establishes
18+
its public development and contribution workflow on GitHub.
19+
20+
### What's New
21+
22+
- **llama.cpp support.** Install and manage llama.cpp directly from PAIR,
23+
download compatible GGUF models from Hugging Face, and route inference
24+
requests across paired devices. Refer to
25+
[Managing Engines](engine-lifecycle.mdx).
26+
- **Engine launch options.** Customize the launch arguments and environment
27+
variables of PAIR-managed engines, on this device or a paired one. Tune
28+
settings such as context size where the engine supports them. Refer to
29+
[Engine Settings](engine-settings.mdx).
30+
- **RTX Spark support.** PAIR's Windows on ARM build has been validated with
31+
llama.cpp and CUDA on RTX Spark N1X hardware.
32+
- **Improved terminal experience.** The terminal interface has a redesigned
33+
layout organized around each device, so you can manage engines, download
34+
models, and pair devices from one place. A new **Jobs** tab follows inference
35+
work across paired devices and runs the Inference Demo, giving headless
36+
machines the same core tools as the desktop app. Refer to
37+
[Terminal Interface](terminal-interface.mdx).
38+
39+
### Compatibility Notes
40+
41+
- **Browser clients.** PAIR's local endpoints now follow each engine's CORS
42+
policy instead of allowing every browser origin. A browser-based client may
43+
need the engine configured to allow it — for Ollama, set `OLLAMA_ORIGINS` in
44+
the engine's launch options.
45+
- **The macOS app is now NVIDIA PAIR.** The new `NVIDIA PAIR.app` installs
46+
beside the old `PAIR.app`, so remove the old one to keep just one copy. Your
47+
settings, cluster membership, and downloaded models carry over.
48+
- **LM Studio installed by an earlier PAIR.** It keeps working as before. PAIR
49+
now removes only engines it has a record of installing, and earlier versions
50+
kept no record, so uninstalling or resetting PAIR leaves that LM Studio in
51+
place. You can remove it from `~/.lmstudio` yourself if you no longer want it.
52+
53+
The [Upgrade Guide](upgrade-guide.mdx) walks through each of these.
54+
55+
### Targeted Bug Fixes
56+
57+
- Uninstalling LM Studio from PAIR, or uninstalling PAIR with its data, no
58+
longer deletes the models you downloaded. They stay in `~/.lmstudio/models`,
59+
just as Ollama's stay in `~/.ollama` and llama.cpp's in `~/.llamacpp`.
60+
61+
### Community Contributions
62+
63+
- Added Anthropic Messages API routing through Ollama and LM Studio, so
64+
compatible clients such as Claude Code can use PAIR's model-aware routing and
65+
failover. Thanks @Ratherrayees!
66+
([#27](https://github.com/NVIDIA/Personal-AI-Router/pull/27))
67+
- Made engine monitoring more efficient by reusing HTTP connections for health
68+
checks. Thanks @Psych0h3ad!
69+
([#37](https://github.com/NVIDIA/Personal-AI-Router/pull/37))
70+
- Fixed unnecessary cluster trust refreshes: notifications are now sent only
71+
after new peer endorsements are saved. Thanks @RecursiveIntell!
72+
([#62](https://github.com/NVIDIA/Personal-AI-Router/pull/62))
73+
- Fixed workload synchronization between nodes: broadcasts preserve event
74+
order, and a failed broker notification stays eligible for retry. Thanks
75+
@mkalkere! ([#80](https://github.com/NVIDIA/Personal-AI-Router/pull/80))
76+
- Fixed scheduler priority updates being marked as delivered after a failed
77+
notification, so they are retried and the status stays accurate. Thanks
78+
@sylvesterkaczmarek!
79+
([#122](https://github.com/NVIDIA/Personal-AI-Router/pull/122))
80+
- Isolated the service integration and proxy failover tests from local PAIR
81+
settings, so tests no longer read or overwrite a developer's configuration.
82+
Thanks @somtri! ([#95](https://github.com/NVIDIA/Personal-AI-Router/pull/95))
83+
- Corrected the release-intent examples to use the required services version
84+
key. Thanks @somtri!
85+
([#120](https://github.com/NVIDIA/Personal-AI-Router/pull/120))
86+
- Updated the contributor instructions to branch from and rebase onto
87+
`develop`. Thanks @somtri!
88+
([#126](https://github.com/NVIDIA/Personal-AI-Router/pull/126))
89+
- Fixed node cards showing only the first GPU on multi-GPU systems; they now
90+
show every GPU. Thanks @CryptoJones!
91+
([#34](https://github.com/NVIDIA/Personal-AI-Router/pull/34))
92+
93+
### Special Thanks
94+
95+
Thank you to these community members for sharing ideas, submitting proposals
96+
and fixes, investigating issues, and testing PAIR:
97+
98+
@XxSilentStormIxX, @agenticocho, @Mayimbe07, @cruzanstx, @pettersandvand,
99+
@cguldogan, @mkalkere, @CryptoJones, @woodsonl, @stevbev, @habakan, @arcaven,
100+
@somtri, @imluffy000, @ndizazzo, and @fpvo.
101+
102+
We are grateful for every contribution, and for the warm welcome from the local
103+
AI community.

‎docs/upgrade-guide.mdx‎

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
{/*
2+
SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3+
SPDX-License-Identifier: Apache-2.0
4+
*/}
5+
6+
# Upgrade Guide
7+
8+
Updating to PAIR 1.0.0 works the same way as any other update. Your settings,
9+
cluster membership, and downloaded models all carry over, so for most machines
10+
there is nothing extra to do. Install the update as described in
11+
[Keeping PAIR Up to Date](getting-started.mdx#keeping-pair-up-to-date), and
12+
update each machine in your cluster so they all run the same version.
13+
14+
A few situations call for a small extra step. Each section below says who it
15+
applies to, so you can skip the ones that do not:
16+
17+
- [On macOS, tidy up the old app](#on-macos-tidy-up-the-old-app)
18+
- [If an earlier PAIR installed LM Studio for you](#if-an-earlier-pair-installed-lm-studio-for-you)
19+
- [If you use PAIR from a web page or browser extension](#if-you-use-pair-from-a-web-page-or-browser-extension)
20+
21+
For everything that is new in this release, refer to
22+
[Release Notes](release-notes.mdx).
23+
24+
## On macOS, Tidy Up the Old App
25+
26+
The macOS application is now called **NVIDIA PAIR**. Earlier versions were
27+
installed as `PAIR.app`, and because the name changed, the new disk image adds
28+
`NVIDIA PAIR.app` beside the old app instead of replacing it. Keep just one by
29+
removing the old app with the uninstaller it includes. The uninstaller keeps
30+
your settings, cluster membership, engines, and models.
31+
32+
1. Quit PAIR.
33+
2. In Terminal, run the old app's uninstaller:
34+
35+
```bash
36+
sudo /Applications/PAIR.app/Contents/Resources/installer-tools/uninstall-macos.sh
37+
```
38+
39+
It finishes with `User data preserved`. Leave off the `--purge` option, which
40+
is only for removing PAIR's data as well.
41+
3. Open the new disk image, drag **NVIDIA PAIR** to **Applications**, and launch
42+
it from there.
43+
44+
The uninstaller is a better choice than dragging the old app to the Trash,
45+
because it also removes PAIR's firewall rules and the helper that manages them.
46+
47+
If you updated from within PAIR using **Restart & install**, the update was
48+
applied to your existing app, which keeps working under the `PAIR.app` name.
49+
There is nothing more to do unless you also install `NVIDIA PAIR.app` from the
50+
disk image, in which case remove `PAIR.app` as above. If PAIR does not reopen
51+
after **Restart & install**, open it from **Applications**.
52+
53+
## If an Earlier PAIR Installed LM Studio for You
54+
55+
This applies only if you used an earlier version of PAIR to install LM Studio.
56+
That LM Studio keeps working with PAIR 1.0.0 exactly as before.
57+
58+
What is different is how PAIR cleans up. PAIR now keeps a record of the engines
59+
it installs, so that removing PAIR, or resetting its data, only ever removes
60+
engines PAIR put there itself. Earlier versions did not keep that record, so
61+
PAIR treats an LM Studio they installed as one you installed yourself, and
62+
leaves it in place. **Uninstall** in LM Studio's **Engine settings** says so,
63+
and **Reset app data** and uninstalling PAIR skip it.
64+
65+
If you are happy to keep LM Studio, you do not need to do anything. If you would
66+
rather remove it, or have PAIR manage it from now on, follow these steps. They
67+
keep the models you downloaded.
68+
69+
1. If you also use the LM Studio desktop application, remove LM Studio through
70+
that application instead, since it shares the same `.lmstudio` folder.
71+
2. Quit PAIR, which stops the LM Studio server it started.
72+
3. Stop LM Studio and delete everything in `.lmstudio` except the `models`
73+
folder.
74+
75+
On macOS or Linux:
76+
77+
```bash
78+
~/.lmstudio/bin/lms server stop
79+
find ~/.lmstudio -mindepth 1 -maxdepth 1 ! -name models -exec rm -rf {} +
80+
```
81+
82+
On Windows, in PowerShell:
83+
84+
```powershell
85+
& "$env:USERPROFILE\.lmstudio\bin\lms.exe" server stop
86+
Get-ChildItem "$env:USERPROFILE\.lmstudio" -Force |
87+
Where-Object Name -ne 'models' |
88+
Remove-Item -Recurse -Force
89+
```
90+
91+
To remove your downloaded LM Studio models too, delete the whole `.lmstudio`
92+
folder instead.
93+
94+
To have PAIR manage LM Studio from now on, install it again from
95+
**Engine settings** after these steps. PAIR keeps a record of that install, and
96+
your kept `models` folder is still there for it to use.
97+
98+
## If You Use PAIR from a Web Page or Browser Extension
99+
100+
This applies only to browser-based clients. Command-line tools, IDEs, agents,
101+
and desktop applications are not affected.
102+
103+
PAIR's local endpoints now use each engine's own browser access setting, known
104+
as CORS, rather than allowing every website. That means a web page can reach
105+
your models through PAIR only if you have allowed it in the engine. If a
106+
browser-based client stopped connecting after the update, add its address in
107+
the engine's launch options:
108+
109+
| Engine | Setting |
110+
| --- | --- |
111+
| Ollama | `OLLAMA_ORIGINS`, for example `OLLAMA_ORIGINS="https://example.com"` |
112+
| LM Studio | The `--cors` switch |
113+
| llama.cpp | `--cors-origins` |
114+
115+
Make the change on the machine that runs the engine. Include the address's
116+
scheme, such as `https://`; a wildcard on its own (`*`) or a bare `localhost`
117+
is not accepted. If requests can be routed to other machines in your cluster,
118+
allow the address on each of them. [Engine Settings](engine-settings.mdx) has
119+
the details.
120+
121+
## Checking Everything Is Working
122+
123+
After updating each machine, you can confirm that **Settings → Service** shows
124+
the new version, its engines are running in **Overview**, and its paired
125+
machines are still listed. If anything looks wrong,
126+
[Troubleshooting](troubleshooting.mdx) can help.

‎fern/docs.yml‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ navigation:
2828
- page: Getting Started
2929
path: ../docs/getting-started.mdx
3030
slug: getting-started
31+
- page: Release Notes
32+
path: ../docs/release-notes.mdx
33+
slug: release-notes
34+
- page: Upgrade Guide
35+
path: ../docs/upgrade-guide.mdx
36+
slug: upgrade-guide
3137
- page: Managing Engines
3238
path: ../docs/engine-lifecycle.mdx
3339
slug: engine-lifecycle

0 commit comments

Comments
 (0)