Skip to content

Commit c1f53e7

Browse files
authored
Merge pull request #68 from TrentBrown/tb-portreeve-public-install-docs
Document public PortReeve installation paths
2 parents 4beb801 + 235ce57 commit c1f53e7

5 files changed

Lines changed: 96 additions & 52 deletions

File tree

README.md

Lines changed: 52 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,38 @@
33
> [!WARNING]
44
>
55
> **Alpha Preview** — PortReeve is evolving quickly. Breaking changes remain possible,
6-
> and the first macOS preview downloads will be unsigned until Apple Developer ID
7-
> signing and notarization are configured. No public preview has been published yet;
8-
> current users should build from source. See the
9-
> [preview installation and removal guide](docs/installation.md) before installing a
10-
> future preview.
6+
> and the current macOS preview is unsigned until Apple Developer ID signing and
7+
> notarization are configured. Review the
8+
> [installation and removal guide](docs/installation.md), including the scoped macOS
9+
> **Open Anyway** procedure, before installing it.
1110
1211
<p align="center">
1312
<img src="apps/desktop/assets/branding/portreeve-lockup.svg" width="570" alt="PortReeve, Local Port Authority">
1413
</p>
1514

15+
## Install the alpha preview
16+
17+
The current public alpha preview is available on
18+
[GitHub Releases](https://github.com/TrentBrown/portreeve/releases). On macOS, install
19+
the graphical application with Homebrew after reviewing and narrowly trusting its cask:
20+
21+
```sh
22+
brew tap TrentBrown/portreeve
23+
brew trust --cask trentbrown/portreeve/portreeve-app
24+
brew install --cask trentbrown/portreeve/portreeve-app
25+
```
26+
27+
For terminal and MCP use, install the standalone CLI independently:
28+
29+
```sh
30+
brew trust --formula trentbrown/portreeve/portreeve
31+
brew install trentbrown/portreeve/portreeve
32+
```
33+
34+
Homebrew does not silently install or start the supervised service. Direct macOS DMGs,
35+
Linux executables, checksum verification, unsigned-app guidance, and removal procedures
36+
are covered in the [installation guide](docs/installation.md).
37+
1638
<!-- product-overview:identity-problem -->
1739

1840
## Localhost port conflicts, solved
@@ -29,10 +51,9 @@ copy naturally reaches for the same ports.
2951
PortReeve replaces duplicated startup-time probing and remapping with one shared,
3052
inspectable source of truth.
3153

32-
> **Want to try it?**
33-
> [Build and open PortReeve Desktop](#build-and-open-portreeve-desktop). Desktop is the
34-
> primary visual experience; CLI, MCP, and JavaScript clients remain independent
35-
> first-class ways to use the same authority.
54+
> **Want to try it?** [Install the alpha preview](#install-the-alpha-preview) and open
55+
> PortReeve from Applications. Desktop is the primary visual experience; CLI, MCP, and
56+
> JavaScript clients remain independent first-class ways to use the same authority.
3657
3758
![PortReeve Desktop open to Overview, showing the product header and “What is PortReeve?” introduction](docs/assets/portreeve-desktop-overview.png)
3859

@@ -262,11 +283,18 @@ Sandbox orchestration or integration.
262283

263284
PortReeve sends no telemetry and does not load project `.env` files.
264285

265-
### Build and open PortReeve Desktop
286+
### Open PortReeve Desktop
266287

267-
PortReeve has not published its first npm package, Homebrew release, GitHub Release, or
268-
packaged macOS download yet. Until then, build on macOS from the public source
269-
repository with the pinned Bun 1.3.14 toolchain:
288+
Install the current preview through [Homebrew](#install-the-alpha-preview) or download
289+
the architecture-specific DMG from the
290+
[GitHub Releases page](https://github.com/TrentBrown/portreeve/releases), then open
291+
**PortReeve** from Applications. In Desktop, open **Service** and choose **Install and
292+
Start PortReeve** to place the verified bundled CLI in its managed per-user location and
293+
configure `launchd`. Then use **Quick Start** to try one existing project or
294+
**Integrations** to connect a stack.
295+
296+
To build Desktop from source instead, use the public repository and pinned Bun 1.3.14
297+
toolchain:
270298

271299
```sh
272300
git clone https://github.com/TrentBrown/portreeve.git
@@ -277,28 +305,29 @@ bun run build
277305
PORTREEVE_DESKTOP_CLI_PATH="$PWD/dist/portreeve" bun run desktop:start
278306
```
279307

280-
In Desktop, open **Service** and choose **Install and Start PortReeve** to place the
281-
verified executable in its managed per-user location and configure `launchd`. Then use
282-
**Quick Start** to try one existing project or **Integrations** to connect a stack.
283-
284308
### Use PortReeve without Desktop
285309

286-
The same build provides a foreground server and the complete CLI:
310+
The Homebrew formula, direct macOS/Linux downloads, and source build all provide the
311+
same complete CLI. Run a temporary foreground server with:
287312

288313
```sh
289-
./dist/portreeve serve
314+
portreeve serve
290315
```
291316

292317
Or install the supervised per-user service directly:
293318

294319
```sh
295-
./dist/portreeve install
296-
./dist/portreeve start
297-
./dist/portreeve status --json
320+
portreeve install
321+
portreeve start
322+
portreeve status --json
298323
```
299324

325+
For a source build, substitute `./dist/portreeve`; for example,
326+
`./dist/portreeve status --json`.
327+
300328
Installation does not require root. PortReeve uses `launchd` on macOS and
301-
`systemd --user` on Linux.
329+
`systemd --user` on Linux. The JavaScript client archive is retained in the release
330+
evidence, but npm publication remains deferred.
302331

303332
## Documentation
304333

docs/installation.md

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
> **Alpha Preview**
44
>
5-
> PortReeve is evolving quickly and may make breaking changes. No public preview has
6-
> been published yet. When the first preview is published, its macOS application will
7-
> be unsigned until Apple Developer ID signing and notarization are configured. Product
8-
> maturity (`alpha`), release channel (`preview`), and macOS trust (`unsigned`) are
9-
> separate facts.
5+
> PortReeve is evolving quickly and may make breaking changes. The current public alpha
6+
> preview is available on
7+
> [GitHub Releases](https://github.com/TrentBrown/portreeve/releases), and its macOS
8+
> application is unsigned until Apple Developer ID signing and notarization are
9+
> configured. Product maturity (`alpha`), release channel (`preview`), and macOS trust
10+
> (`unsigned`) are separate facts.
1011
11-
Until a preview appears on [GitHub Releases](https://github.com/TrentBrown/portreeve/releases),
12-
use the [source build](#build-from-source). The commands in the download sections below
13-
describe the prepared public-preview paths; they are not evidence that those downloads
14-
already exist.
12+
Use [GitHub Releases](https://github.com/TrentBrown/portreeve/releases) to identify the
13+
newest preview and verify its assets. The commands below install the currently published
14+
Homebrew, DMG, and direct-download artifacts.
1515

1616
## Choose an installation path
1717

@@ -20,7 +20,7 @@ already exist.
2020
| macOS graphical application | Homebrew cask | `PortReeve.app`; service setup remains explicit in Desktop |
2121
| macOS graphical application without Homebrew | Architecture-specific DMG | `PortReeve.app`; service setup remains explicit in Desktop |
2222
| macOS or Linux terminal/MCP use | Homebrew formula on macOS or direct CLI download | One standalone `portreeve` executable |
23-
| Current development before the first preview | Source build | Local development CLI and Desktop |
23+
| Contributor development or an unreleased change | Source build | Local development CLI and Desktop |
2424

2525
There is one PortReeve installation and one per-user registry. Desktop, CLI, MCP, and
2626
the JavaScript client are peer clients of the same server; installing Desktop does not
@@ -32,22 +32,28 @@ If Homebrew is not installed, follow [Homebrew's maintained installation
3232
instructions](https://docs.brew.sh/Installation). Review Homebrew's installer and its
3333
requested filesystem changes before running it.
3434

35-
After a PortReeve preview is published, add the personal tap and install either or both
36-
artifacts:
35+
Add the personal tap, review the requested artifact, and trust only the formula or cask
36+
you intend to install. Current Homebrew releases require explicit trust for third-party
37+
taps and otherwise refuse to load PortReeve. Specific-artifact trust is narrower than
38+
trusting every current and future artifact in the tap.
3739

3840
```sh
3941
brew tap TrentBrown/portreeve
4042

4143
# Graphical application
42-
brew install --cask portreeve-app
44+
brew trust --cask trentbrown/portreeve/portreeve-app
45+
brew install --cask trentbrown/portreeve/portreeve-app
4346

4447
# Standalone CLI and MCP bridge
45-
brew install portreeve
48+
brew trust --formula trentbrown/portreeve/portreeve
49+
brew install trentbrown/portreeve/portreeve
4650
```
4751

4852
The cask moves `PortReeve.app` into Applications. The formula installs the CLI. Neither
4953
one silently installs or starts the PortReeve supervised service, and neither one
50-
deletes PortReeve data during routine uninstall.
54+
deletes PortReeve data during routine uninstall. See Homebrew's
55+
[Tap Trust](https://docs.brew.sh/Tap-Trust) documentation before choosing broader
56+
whole-tap trust.
5157

5258
## Direct macOS DMG
5359

@@ -56,9 +62,10 @@ GitHub Releases provides separate images:
5662
- `PortReeve-VERSION-macos-arm64.dmg` for Apple Silicon;
5763
- `PortReeve-VERSION-macos-x64.dmg` for Intel Macs.
5864

59-
Download the matching DMG and `SHA256SUMS-DISTRIBUTION`, compare the recorded checksum,
60-
open the DMG, and drag **PortReeve** to Applications. The DMG installs no daemon and
61-
runs no package script.
65+
Download the matching DMG and `SHA256SUMS-DISTRIBUTION` from the
66+
[GitHub Releases page](https://github.com/TrentBrown/portreeve/releases),
67+
compare the recorded checksum, open the DMG, and drag **PortReeve** to Applications. The
68+
DMG installs no daemon and runs no package script.
6269

6370
```sh
6471
shasum -a 256 PortReeve-VERSION-macos-ARCH.dmg

docs/product-overview-contract.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ order, diagrams, interaction, and layout to their respective surfaces.
88

99
- **README** serves repository discovery and evaluation. It gives a complete
1010
product introduction, makes Desktop tangible, provides a truthful primary
11-
path to build and open Desktop, and preserves visible CLI, MCP, and JavaScript
12-
alternatives.
11+
path to install and open the current Desktop preview, retains a contributor
12+
source-build path, and preserves visible CLI, MCP, and JavaScript alternatives.
1313
- **Desktop Overview** serves in-application orientation and continued use. It
1414
presents the same product model through native interaction and links users to
1515
the installed application's client and workflow destinations.
@@ -88,9 +88,9 @@ evidence- and ownership-bound.
8888
### `boundaries-next-step`
8989

9090
State what PortReeve deliberately does not own. Continue with the
91-
surface-appropriate action: README truthfully builds and opens Desktop from
92-
source until a package exists; Desktop leads into installed workflows. Preserve
93-
CLI, MCP, and JavaScript alternatives on both surfaces.
91+
surface-appropriate action: README truthfully installs and opens the published
92+
Desktop preview while retaining a source-build path; Desktop leads into installed
93+
workflows. Preserve CLI, MCP, and JavaScript alternatives on both surfaces.
9494

9595
- README landmark: `<!-- product-overview:boundaries-next-step -->`
9696
- Desktop landmark: `data-product-overview-topic="boundaries-next-step"`

test/docs/product-overview-parity.test.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,9 @@ test('README keeps truthful Desktop and peer-client continuation paths', async (
101101
]) {
102102
expect(readme).toContain(command);
103103
}
104-
expect(readme).toContain('packaged macOS download yet');
105-
expect(readme).not.toContain('Download PortReeve for macOS');
104+
expect(readme).toContain('Install the alpha preview');
105+
expect(readme).toContain('brew install --cask trentbrown/portreeve/portreeve-app');
106+
expect(readme).toContain('current public alpha preview');
106107
expect(readme).not.toContain('npm install portreeve');
107108
for (const client of ['Desktop', 'MCP', 'CLI', 'JavaScript client']) {
108109
expect(readme).toContain(client);

test/release/documentation.test.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ test('README is a truthful product landing page for the four peer clients', asyn
9696
}
9797
expect(readme).toContain('bun install --frozen-lockfile');
9898
expect(readme).toContain('./dist/portreeve status --json');
99-
expect(readme).toContain('has not published its first npm package');
99+
expect(readme).toContain('brew install --cask trentbrown/portreeve/portreeve-app');
100+
expect(readme).toContain('npm publication remains deferred');
100101
expect(readme).toMatch(/does not currently\s+provide Docker\s+Sandbox/u);
101102
expect(readme).not.toContain('npm install portreeve');
102103
});
@@ -149,8 +150,8 @@ test('README and every Desktop view carry a persistent truthful Alpha Preview no
149150
const alpha = readme.indexOf('**Alpha Preview**');
150151
expect(alpha).toBeGreaterThan(0);
151152
expect(alpha).toBeLessThan(readme.indexOf('portreeve-lockup.svg'));
152-
expect(readme).toContain('No public preview has been published yet');
153-
expect(readme).toContain('macOS preview downloads will be unsigned');
153+
expect(readme).toContain('current macOS preview is unsigned');
154+
expect(readme).toContain('current public alpha preview');
154155
expect(desktop).toMatch(
155156
/<header class="app-header">[\s\S]*class="alpha-preview"[\s\S]*Alpha Preview[\s\S]*Product maturity is alpha[\s\S]*<\/header>/u,
156157
);
@@ -168,7 +169,13 @@ test('preview installation guidance is safe, scoped, and lifecycle explicit', as
168169
readFile(resolve('scripts/desktop-release-lib.js'), 'utf8'),
169170
]);
170171
const combined = [readme, installation, releasing, caskSource].join('\n');
171-
expect(installation).toContain('brew install --cask portreeve-app');
172+
expect(installation).toContain(
173+
'brew trust --cask trentbrown/portreeve/portreeve-app',
174+
);
175+
expect(installation).toContain(
176+
'brew install --cask trentbrown/portreeve/portreeve-app',
177+
);
178+
expect(installation).toContain('brew trust --formula trentbrown/portreeve/portreeve');
172179
expect(installation).toContain('PortReeve-VERSION-macos-arm64.dmg');
173180
expect(installation).toContain('System Settings');
174181
expect(installation).toContain('Privacy & Security');

0 commit comments

Comments
 (0)