servers.md: the eighth machine, and the port that is not 9000

two facts that each cost time today and neither was written down.

macbruno was missing entirely — 100.64.0.22, login
brunoalcadapadezmonteirodaconceicao, ~/officerdev/platform, pm2 under Homebrew.
nothing on the fleet knew it existed.

and THE PORT IS NOT ALWAYS 9000. macbookpro and production-pertento-bridge run
on 9010. a health check against 9000 on production hit one of Pertento's own
apps, which answered 403, and that was read as officer failing after a deploy.

while there: production runs eight processes that are NOT officer — Dashboard,
Tracking, Uptime and five Crons. they are production-critical and belong to
Pertento. anything sweeping pm2 list must filter to officer and officer-*.

added a section on pm2 not being on the PATH of a non-interactive shell, because
that read as "pm2 is not installed" three times in one day and twice sent
someone diagnosing a healthy machine. zsh reads ~/.zshenv for non-interactive
shells and neither .zshrc nor .zprofile, so an nvm or Homebrew install is
invisible to an orchestrator. fixed at the source on the two hosts it bit; the
section says how to check rather than assume.

every row verified by reading the machine rather than recalling it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
This commit is contained in:
2026-08-27 08:45:14 +00:00
co-authored by Claude Opus 5
parent b4cf1c6427
commit 0d5c2c0083
+39 -10
View File
@@ -21,21 +21,50 @@ ssh br@deadpool-rezio-bridge # not implied
## Officer platforms
Seven, all running.
Eight, all running. **Verified 2026-08-27** — every row below was read off the machine, not recalled.
| Host | Tailnet IP | Login | Checkout | Domain |
| ---------------------------- | ----------- | ----------- | ----------------------------------- | --------------------------------- |
| `officer-dev` | 100.64.0.13 | `pastilhas` | `~/officer-dev/platform` | `platform.officer.dev` |
| `alpha` | 100.64.0.1 | `pastilhas` | `~/officerdev/platform` | `officer.pastilhas.dev` |
| `fofos` | 100.64.0.17 | `pastilhas` | `~/officerdev/platform` | `officer.fofosfluffybastards.com` |
| `macbookpro` | 100.64.0.9 | `pastilhas` | `~/projects/officer-suite/platform` | `macbookpro.pastilhas.dev` |
| `production-pertento-bridge` | 100.64.0.12 | `pastilhas` | `~/officerdev/platform` | `officer.pertento.ai` |
| `edge-pertento-bridge` | 100.64.0.15 | `pastilhas` | `~/officerdev/platform` | `edge.pertento.ai` |
| `deadpool-rezio-bridge` | 100.64.0.21 | **`br`** | `/home/br/officerdev/platform` | `officer.rezio.dev` `[pending]` |
| Host | Tailnet IP | Login | Port | Checkout | Domain |
| ---------------------------- | ----------- | ----------------------------------------- | -------- | ----------------------------------- | --------------------------------- |
| `officer-dev` | 100.64.0.13 | `pastilhas` | 9000 | `~/officer-dev/platform` | `platform.officer.dev` |
| `alpha` | 100.64.0.1 | `pastilhas` | 9000 | `~/officerdev/platform` | `officer.pastilhas.dev` |
| `fofos` | 100.64.0.17 | `pastilhas` | 9000 | `~/officerdev/platform` | `officer.fofosfluffybastards.com` |
| `macbookpro` | 100.64.0.9 | `pastilhas` | **9010** | `~/projects/officer-suite/platform` | `macbookpro.pastilhas.dev` |
| `macbruno` | 100.64.0.22 | **`brunoalcadapadezmonteirodaconceicao`** | 9000 | `~/officerdev/platform` | — (none yet) |
| `production-pertento-bridge` | 100.64.0.12 | `pastilhas` | **9010** | `~/officerdev/platform` | `officer.pertento.ai` |
| `edge-pertento-bridge` | 100.64.0.15 | `pastilhas` | 9000 | `~/officerdev/platform` | `edge.pertento.ai` |
| `deadpool-rezio-bridge` | 100.64.0.21 | **`br`** | 9000 | `/home/br/officerdev/platform` | `officer.rezio.dev` `[pending]` |
**THE PORT IS NOT ALWAYS 9000.** Two hosts run on 9010 and it is in `OFFICERDEV_PORT` in each checkout's
`.env`. This is not a footnote: on 2026-08-27 a health check against 9000 on `production-pertento-bridge`
hit one of Pertento's own apps, which answered `403`, and that was read as Officer failing after a
deploy. Take the port from the `.env`, never from habit.
**`production-pertento-bridge` also runs eight processes that are NOT Officer** — `Dashboard`, `Tracking`,
`Uptime` and five `Crons *`. They are production-critical and belong to Pertento. Anything sweeping over
`pm2 list` must filter to `officer` and `officer-*`, and a restart there must name its target.
Only `platform.officer.dev` is public (77.42.39.155). The rest resolve to tailnet addresses and are
reachable from inside only.
## `pm2` is not on the PATH of a non-interactive shell
`ssh host 'pm2 jlist'` runs a NON-interactive, NON-login shell. zsh reads `~/.zshenv` for those and reads
neither `~/.zshrc` nor `~/.zprofile` — so a pm2 installed by nvm or Homebrew is invisible to an
orchestrator even though the daemon is running and healthy.
**This read as "pm2 is not installed" three times on 2026-08-27**, and twice sent someone diagnosing a
machine with nothing wrong with it. `claude` on a fresh install has the same shape.
Fixed at the source on the two hosts where it bit — `production-pertento-bridge` (nvm) and `macbruno`
(Homebrew at `/opt/homebrew`, which is on no default PATH on Apple Silicon) — by appending a
marker-guarded block to `~/.zshenv`. Everything else already worked.
If a command comes back empty over SSH, look for the binary on disk before concluding it is absent:
```bash
ssh host 'ls /opt/homebrew/bin/pm2 /usr/local/bin/pm2 ~/.nvm/versions/node/*/bin/pm2 2>/dev/null'
```
## Deliberately skipped
A host here is NOT a deploy target. A rollout names it as skipped and moves on — it is not a failure,