Files
claudetools/wiki/systems/pluto.md
Mike Swanson 33ba780ba6 wiki-lint: fix 2 consistency gaps missed in the VM/build-chain sweep
internal-infrastructure.md inventory + backlink still called .30 a "GuruRMM VM /
Linux VM on Jupiter" and Pluto the MSI build server; pluto.md backlink still said
Pluto was the "exclusive" build machine. Both corrected: .30 is a physical box,
Beast primary / Pluto fallback. Found by /wiki-lint.
2026-06-12 07:50:26 -07:00

5.8 KiB

type, name, display_name, last_compiled, compiled_by, sources, backlinks
type name display_name last_compiled compiled_by sources backlinks
system pluto Pluto (Claude-Builder) 2026-05-24 DESKTOP-0O8A1RL/claude-main
.claude/machines/pluto.md
credentials.md
wiki/projects/gururmm.md
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. For GuruRMM Windows agent + WiX MSI builds it is now the FALLBACK — Beast (GURU-BEAST-ROG, tailnet 100.101.122.4) is PRIMARY, and build-windows.sh only falls through to Pluto if Beast is unreachable/down or its build fails. Still produces the (2026-05-29) GuruConnect Windows agent and 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):
    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.
  • projects/gururmm — Pluto is the fallback Windows MSI build host for GuruRMM (Beast/GURU-BEAST-ROG is primary)
  • systems/jupiter — Pluto is a virsh VM hosted on Jupiter
  • systems/gururmm-build — build-windows.sh on gururmm-build SSHes to Beast first, then falls back to Pluto