Skip to content

Commit bf97597

Browse files
authored
Add release notes and an upgrade guide to the docs (#157)
## Description Adds two pages to the public docs: **Release Notes**, starting with 1.0.0, and an **Upgrade Guide** for updating from a version before 1.0.0. People who read the docs rather than GitHub had no release notes to look at. The 1.0.0 notes are adapted from the release notes master doc. The Upgrade Guide starts from the fact that most machines need nothing extra, then covers the few setups that need a small step: - tidying up the old `PAIR.app` on macOS; - an LM Studio that an earlier PAIR installed; - browser clients affected by the CORS change. <!-- pair-release-intent:v1 --> ### Changelog title n/a ### Changelog body n/a ### Bumps - services: none - nvpair-cluster-manager: none - nvpair-engine-manager: none - nvpair-errors: none - nvpair-job-scheduler: none - nvpair-manual-nodes: none - nvpair-node-info: none - nvpair-node-scanner: none - nvpair-node-settings: none - nvpair-proxy: none - nvpair-tui: none - nvpair-ui-broker: none - nvpair-workload-manager: none <!-- /pair-release-intent:v1 --> ## Scope - `docs/release-notes.mdx` (new): the 1.0.0 notes, covering what's new, compatibility notes, targeted bug fixes, community contributions with PR links, and special thanks. Notes before 1.0.0 are linked on GitHub Releases. - `docs/upgrade-guide.mdx` (new). It opens by saying an update keeps settings, cluster membership, and models, and that every machine in a cluster should run the same version. Each section then says who it applies to: - **On macOS, tidy up the old app:** run the old app's `uninstall-macos.sh` without `--purge`, then install `NVIDIA PAIR.app`. 0.1.0 and 0.1.1 both ship that script, and both keep data without `--purge`. - **If an earlier PAIR installed LM Studio for you:** it keeps working, but it has no install marker (`installed-by-pair.json`), so Uninstall, Reset app data, and uninstalling PAIR leave it. Steps to remove it while keeping `models`, or to reinstall it so PAIR manages it. - **If you use PAIR from a web page or browser extension:** which launch option allows a site for each engine. - **Checking everything is working.** - `fern/docs.yml`: both pages under Guides, after Getting Started. - `README.md`, `docs/getting-started.mdx` ("Keeping PAIR Up to Date" and "Learn More"), and `docs/known-issues.mdx`: link to the new pages. `known-issues` gains an entry for the LM Studio limitation. ## Validation - Each upgrade step was checked against the code: `desktop/scripts/build/macos/uninstall.sh` at HEAD, `v0.1.0`, and `v0.1.1`; `services/nvpair-engine-manager/install.go` and `provenance.go`; `manifests/lmstudio.json`; `desktop/docs/macos-privileged-helper.md`; and `docs/engine-settings.mdx` for the CORS controls. - Contributor PRs #27, #34, #37, #62, #80, #95, #120, #122, and #126 were checked for merge state and author. - `node scripts/spdx-headers.mjs` - `python3 scripts/release-intent/validate_pr.py --description-file <this description> --skip-owned-files-check` ## Risk Documentation only. No code, build, or versioned file changes. Left for the product owner to confirm against the master doc: - The app is named **NVIDIA PAIR** (`NVIDIA PAIR.app`). - The macOS note does not say models could be lost, because models never live inside the app. - The bug-fix line names LM Studio only, because llama.cpp never shipped publicly. - `README.md` and `known-issues.mdx` still call Windows on ARM experimental, beside the RTX Spark validation note. ## Checklist - [x] I have read the [Contributing Guidelines](https://github.com/NVIDIA/Personal-AI-Router/blob/main/CONTRIBUTING.md). - [x] Every commit is signed off (`git commit -s`), certifying the [Developer Certificate of Origin](https://developercertificate.org/). - [ ] New or existing tests cover the change. (Documentation only.) - [x] Relevant documentation is updated. - [x] I checked the diff, changed filenames, and commit messages for credentials, private data, internal URLs, internal issue identifiers, and generated artifacts. - [x] I recorded the validation commands and results above. - [x] I declared version bumps in the release-intent block above. `services/versions.json` is written by automation — do not edit it by hand. --------- Signed-off-by: Chris Kelsey <ckelsey@nvidia.com>
1 parent 6417419 commit bf97597

6 files changed

Lines changed: 255 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 That It Installed Before Version 1.0.0
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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/XxSilentStormIxX), [@agenticocho](https://github.com/agenticocho), [@Mayimbe07](https://github.com/Mayimbe07), [@cruzanstx](https://github.com/cruzanstx), [@pettersandvand](https://github.com/pettersandvand),
99+
[@cguldogan](https://github.com/cguldogan), [@mkalkere](https://github.com/mkalkere), [@CryptoJones](https://github.com/CryptoJones), [@woodsonl](https://github.com/woodsonl), [@stevbev](https://github.com/stevbev), [@habakan](https://github.com/habakan), [@arcaven](https://github.com/arcaven),
100+
[@somtri](https://github.com/somtri), [@imluffy000](https://github.com/imluffy000), [@ndizazzo](https://github.com/ndizazzo), and [@fpvo](https://github.com/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: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
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+
PAIR finds its files and data from wherever the app is, not by its name, so
50+
there is nothing more to do unless you also install `NVIDIA PAIR.app` from the
51+
disk image, in which case remove `PAIR.app` as above. If PAIR does not reopen
52+
after **Restart & install**, open it from **Applications**.
53+
54+
## If an Earlier PAIR Installed LM Studio for You
55+
56+
This applies only if you used an earlier version of PAIR to install LM Studio.
57+
That LM Studio keeps working with PAIR 1.0.0 exactly as before.
58+
59+
What is different is how PAIR cleans up. PAIR now keeps a record of the engines
60+
it installs, so that removing PAIR, or resetting its data, only ever removes
61+
engines PAIR put there itself. Earlier versions did not keep that record, so
62+
PAIR treats an LM Studio they installed as one you installed yourself, and
63+
leaves it in place. **Uninstall** in LM Studio's **Engine settings** says so,
64+
and **Reset app data** and uninstalling PAIR skip it.
65+
66+
If you are happy to keep LM Studio, you do not need to do anything. If you would
67+
rather remove it, or have PAIR manage it from now on, follow these steps. They
68+
keep the models you downloaded.
69+
70+
1. If you also use the LM Studio desktop application, remove LM Studio through
71+
that application instead, since it shares the same `.lmstudio` folder.
72+
2. Quit PAIR, which stops the LM Studio server it started.
73+
3. Stop LM Studio and delete everything in `.lmstudio` except the `models`
74+
folder.
75+
76+
On macOS or Linux:
77+
78+
```bash
79+
~/.lmstudio/bin/lms server stop
80+
find ~/.lmstudio -mindepth 1 -maxdepth 1 ! -name models -exec rm -rf {} +
81+
```
82+
83+
On Windows, in PowerShell:
84+
85+
```powershell
86+
& "$env:USERPROFILE\.lmstudio\bin\lms.exe" server stop
87+
Get-ChildItem "$env:USERPROFILE\.lmstudio" -Force |
88+
Where-Object Name -ne 'models' |
89+
Remove-Item -Recurse -Force
90+
```
91+
92+
To remove your downloaded LM Studio models too, delete the whole `.lmstudio`
93+
folder instead.
94+
95+
To have PAIR manage LM Studio from now on, install it again from
96+
**Engine settings** after these steps. PAIR keeps a record of that install, and
97+
your kept `models` folder is still there for it to use.
98+
99+
## If You Use PAIR from a Web Page or Browser Extension
100+
101+
This applies only to browser-based clients. Command-line tools, IDEs, agents,
102+
and desktop applications are not affected.
103+
104+
PAIR's local endpoints now use each engine's own browser access setting, known
105+
as CORS, rather than allowing every website. That means a web page can reach
106+
your models through PAIR only if you have allowed it in the engine. If a
107+
browser-based client stopped connecting after the update, add its address in
108+
the engine's launch options:
109+
110+
| Engine | Setting |
111+
| --- | --- |
112+
| Ollama | `OLLAMA_ORIGINS`, for example `OLLAMA_ORIGINS="https://example.com"` |
113+
| LM Studio | The `--cors` switch |
114+
| llama.cpp | `--cors-origins` |
115+
116+
Make the change on the machine that runs the engine. Include the address's
117+
scheme, such as `https://`; a wildcard on its own (`*`) or a bare `localhost`
118+
is not accepted. If requests can be routed to other machines in your cluster,
119+
allow the address on each of them. [Engine Settings](engine-settings.mdx) has
120+
the details.
121+
122+
## Checking Everything Is Working
123+
124+
After updating each machine, you can confirm that **Settings → Service** shows
125+
the new version, its engines are running in **Overview**, and its paired
126+
machines are still listed. If anything looks wrong,
127+
[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)