- Pluto memory/wiki/machine notes: Unraid VM "Claude-Builder" == hostname PLUTO == 172.16.3.36 (same box); RMM-agent access path when SSH key unauthorized; now also builds the GuruConnect Windows agent + hosts a Gitea Actions runner. - New feedback memories: post #bot-alerts only for client/ticket-affecting RMM commands; proceed autonomously through routine infra/build prerequisites. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
109 lines
5.6 KiB
Markdown
109 lines
5.6 KiB
Markdown
---
|
|
type: system
|
|
name: pluto
|
|
display_name: Pluto (Claude-Builder)
|
|
last_compiled: 2026-05-24
|
|
compiled_by: DESKTOP-0O8A1RL/claude-main
|
|
sources:
|
|
- .claude/machines/pluto.md
|
|
- credentials.md
|
|
- wiki/projects/gururmm.md
|
|
backlinks:
|
|
- projects/gururmm
|
|
- systems/jupiter
|
|
- systems/gururmm-build
|
|
---
|
|
|
|
# Pluto (Claude-Builder)
|
|
|
|
## Identity
|
|
- **Hostname:** Pluto / Claude-Builder
|
|
- **IP:** 172.16.3.36
|
|
- **Role:** Windows MSVC build server — produces GuruRMM Windows agent binaries + WiX MSI, and (2026-05-29) the **GuruConnect** Windows agent. Hosts a Gitea Actions runner for guru-connect's native MSVC builds.
|
|
- **RMM agent identity:** enrolled in GuruRMM as hostname **PLUTO** (client "AZ Computer Guru"). Drive it via `/rmm` (resolve PLUTO → agent id at runtime) when a workstation SSH key isn't authorized. There is **no dedicated `pluto` vault entry** — don't search for one.
|
|
- **Location:** VM on Jupiter (172.16.3.20), Unraid/virsh **VM name "Claude-Builder"** (= PLUTO = 172.16.3.36, same machine)
|
|
- **OS:** Windows Server 2019 Standard
|
|
- **SSH user:** Administrator
|
|
|
|
## Specs
|
|
|
|
Windows Server 2019 VM. Exact vCPU/vRAM allocation managed via virsh on Jupiter — not documented separately.
|
|
|
|
## Services
|
|
|
|
Pluto is not a general-purpose server. It has no web services, no Claude Code, no vault, no coord API. It exists solely to run builds when `build-windows.sh` SSHes in.
|
|
|
|
## Access
|
|
- **SSH from gururmm-build (172.16.3.30):**
|
|
```bash
|
|
ssh -o StrictHostKeyChecking=yes \
|
|
-o UserKnownHostsFile=/opt/gururmm/pluto_known_hosts \
|
|
Administrator@172.16.3.36
|
|
```
|
|
- **Known-hosts file:** `/opt/gururmm/pluto_known_hosts` — three pinned keys (RSA, ECDSA, ED25519) for 172.16.3.36. **Never use `StrictHostKeyChecking=no`** — a MITM would inject malicious binaries into MSI artifacts.
|
|
- **To update pinned keys** (e.g. after OS reinstall): `ssh-keyscan 172.16.3.36 > /opt/gururmm/pluto_known_hosts`
|
|
- **SSH from DESKTOP-0O8A1RL:** Uses a different network path than from gururmm-build — one failing does not imply the other fails.
|
|
- **From a workstation with no authorized key (e.g. GURU-5070):** SSH will be refused (`Permission denied (publickey)`). Use the **GuruRMM agent** instead — `/rmm` → run PowerShell on PLUTO — to inspect or configure the box, or to add a workstation pubkey to `administrators_authorized_keys`.
|
|
|
|
## Build Tools
|
|
|
|
| Tool | Path |
|
|
|---|---|
|
|
| cargo (Rust stable 1.95.0) | `C:\Users\Administrator\.cargo\bin\cargo.exe` |
|
|
| cargo (Rust 1.77, legacy) | Pinned for legacy Windows 7/Vista targets; used with `--ignore-rust-version` |
|
|
| rustup | `C:\Users\Administrator\.cargo\bin\rustup.exe` |
|
|
| WiX 4 | `C:\Users\Administrator\.dotnet\tools\wix.exe` |
|
|
| sccache | `C:\sccache\` — compiler cache; near-instant rebuilds when source unchanged |
|
|
| Git | Standard PATH |
|
|
| Gitea clone | `C:\gururmm\` — pulled from `https://azcomputerguru@git.azcomputerguru.com/azcomputerguru/gururmm.git` |
|
|
|
|
## What Pluto Builds (in order, per trigger)
|
|
|
|
```
|
|
1. git pull (build-windows.sh does this via SSH before cargo)
|
|
2. cargo build --release --target x86_64-pc-windows-msvc → stable x64
|
|
3. cargo build --features debug-agent --target x86_64-pc-windows-msvc → debug x64
|
|
4. cargo build --release --target i686-pc-windows-msvc → stable x86
|
|
5. cargo build --release --target x86_64-pc-windows-msvc (legacy profile, --ignore-rust-version) → legacy x64
|
|
6. cargo build --release --target i686-pc-windows-msvc (legacy profile, --ignore-rust-version) → legacy x86
|
|
7. wix build → GuruRMM-<version>-x64.msi
|
|
```
|
|
|
|
All five cargo runs are sequential. MSI is built after all binaries complete.
|
|
|
|
## Output Artifacts (on Pluto)
|
|
|
|
| Artifact | Path |
|
|
|---|---|
|
|
| Agent EXE (x64) | `C:\gururmm\target\x86_64-pc-windows-msvc\release\gururmm-agent.exe` |
|
|
| Agent EXE (x86) | `C:\gururmm\target\i686-pc-windows-msvc\release\gururmm-agent.exe` |
|
|
| Tray EXE | `C:\gururmm\target\x86_64-pc-windows-msvc\release\gururmm-tray.exe` |
|
|
| MSI | `C:\gururmm\target\wix\GuruRMM-<version>-x64.msi` |
|
|
|
|
`build-windows.sh` SCPs these to gururmm-build's `/var/www/gururmm/downloads/` after build completes.
|
|
|
|
## Build Trigger Rules
|
|
|
|
A Pluto build is initiated only when:
|
|
1. A push to `main` hits the Gitea webhook (172.16.3.30:9000)
|
|
2. `build-shared.sh` succeeds (version bump + git sync)
|
|
3. The diff between new SHA and `last-built-commit-windows` includes changes under `agent/` (excluding `agent/Cargo.lock`)
|
|
|
|
If only `server/`, `dashboard/`, or docs changed — Pluto is not contacted.
|
|
|
|
Windows build lock: `/var/run/gururmm-build-windows.lock` on gururmm-build prevents concurrent builds.
|
|
|
|
## Known Issues & Quirks
|
|
|
|
- **sccache makes short builds look like failures** — a 1-second Windows build is normal when `agent/` source hasn't changed since the last successful build. Do not interpret speed as failure.
|
|
- **Do not SSH to Pluto manually to trigger builds** — all builds go through the Gitea webhook pipeline. Manual SSH is for diagnostics only.
|
|
- **If Pluto appears unreachable from DESKTOP** — verify from gururmm-build (172.16.3.30) first. Different network paths; DESKTOP is not on the same LAN segment.
|
|
- **WiX MSI cannot be built on Linux** — WiX requires `msi.dll`. This is the sole reason Pluto exists.
|
|
- **`path.find('\\')` in `#[cfg(windows)]` files** — a literal backslash in a char literal compiles silently on Linux but fails with "unterminated char literal" on Pluto's MSVC build. Use `'\\\\'` instead.
|
|
|
|
## Backlinks
|
|
|
|
- [[projects/gururmm]] — Pluto is the exclusive Windows MSI build machine for GuruRMM
|
|
- [[systems/jupiter]] — Pluto is a virsh VM hosted on Jupiter
|
|
- [[systems/gururmm-build]] — build-windows.sh on gururmm-build SSHes here to trigger builds
|