--- 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 MSI and cargo build server for GuruRMM — the only machine in the fleet that produces Windows agent binaries and WiX MSI installers - **Location:** virsh VM on Jupiter (172.16.3.20), domain name "Claude-Builder" - **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. ## 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--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--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