diff --git a/projects/msp-tools/guru-rmm b/projects/msp-tools/guru-rmm index 509f901..a3cce0a 160000 --- a/projects/msp-tools/guru-rmm +++ b/projects/msp-tools/guru-rmm @@ -1 +1 @@ -Subproject commit 509f9018b7cd3011bf2b42f2c36f71793b7d1300 +Subproject commit a3cce0a8310ea586b31fe353604079b02bab8c22 diff --git a/session-logs/2026-05-15-session.md b/session-logs/2026-05-15-session.md index 5ff8bd6..f9fc4cc 100644 --- a/session-logs/2026-05-15-session.md +++ b/session-logs/2026-05-15-session.md @@ -649,3 +649,89 @@ Speedup: 8.7x - **Build script**: `/opt/gururmm/build-agents.sh` (production, runs as root via webhook) - **Gitea webhook ID**: 1, repo `azcomputerguru/gururmm`, event `push`, URL `http://172.16.3.30/webhook/build` - **Gitea app.ini**: `/data/gitea/conf/app.ini` inside `gitea` Docker container on Jupiter + +--- + +## Update: 22:45 PT — Platform parity, token efficiency, Linux agent implementation + +## User +- **User:** Mike Swanson (mike) +- **Machine:** DESKTOP-0O8A1RL +- **Role:** admin +- **Session span:** ~20:30–22:45 PT + +## Session Summary + +This portion continued from the earlier webhook/build pipeline work (logged in the 15:20 PT update). The first task was completing the platform parity guideline that had been started before context compaction — a full matrix documenting Windows vs Linux vs macOS agent feature coverage was written into `.claude/CODING_GUIDELINES.md`, along with `#[cfg(...)]` gating guidance and a prioritized gap list. + +Mike shared a screenshot of the terminal-bench@2.0 leaderboard showing "vix" ranked #1 at 90.2% accuracy using Claude Opus 4.7. Investigation of the vix GitHub repo revealed it is a third-party AI coding agent built on Anthropic's API with two optimizations: stem agents (preserve prompt cache across explore/plan/execute phases) and a virtual filesystem (code minification for token reduction). Both were evaluated for applicability to ClaudeTools. GrepAI semantic search was identified as the existing equivalent of the virtual filesystem — it eliminates reads entirely rather than just compressing them. The stem agent concept was implemented as a behavioral guideline (single-agent for coupled tasks) rather than new tooling. Four concrete optimizations were applied: CLAUDE.md trimmed ~45 lines, CODING_GUIDELINES.md got a GrepAI-first rule, OLLAMA.md scope expanded to 5 new tier-0 task types, and the agent dispatch section added single-agent guidance for coupled flows. + +Mike clarified that "add feature X to the agent" means all three platforms (Windows + Linux + macOS) in the same change, no exceptions. The parity rule was sharpened to match this, and a feedback memory was saved so future sessions enforce it automatically. + +The session concluded with a proper Linux agent parity audit via SSH Explore agent on 172.16.3.30. Five genuine gaps were identified: temperature sensors, user idle time, installed software list, running services list, and service checks. A Coding Agent implemented all five. Post-implementation: installed software and running services were already in inventory.rs — the earlier audit had overstated the gaps. Three real gaps were closed (temperature via `/sys/class/thermal`, idle time via xprintidle, service checks via systemctl). Build completed clean in 76 seconds, zero errors. + +## Key Decisions + +- **GrepAI over minification** — vix minifies code to reduce tokens; GrepAI avoids reading files at all. Semantic search is strictly superior; no minification layer added. +- **Stem agents as discipline** — cache preservation benefit achieved by guideline change (single-agent for coupled tasks), not new infrastructure. +- **Watchdog not ported to Linux** — systemd `Restart=on-failure` provides the equivalent; porting the in-process Rust watchdog would duplicate OS-level functionality. +- **xprintidle for idle time** — subprocess call, zero new Cargo dependencies, gracefully returns None on headless servers where xprintidle is absent. +- **Gaps 3 & 4 already done** — inventory.rs already had dpkg/rpm and systemctl list-units. Coding Agent verified before writing; only wrote what was actually missing. + +## Configuration Changes + +**Modified (claudetools repo):** +- `.claude/CODING_GUIDELINES.md` — GuruRMM platform parity matrix; GrepAI-first rule; sharpened parity rule wording per Mike's explicit statement +- `.claude/CLAUDE.md` — trimmed ~45 lines: Live State Tracking, Automatic Context Loading, File Placement, Ollama sections compressed; single-agent guidance added +- `.claude/OLLAMA.md` — expanded tier-0 scope: diff summarization, error categorization, agent phase handoff summaries, client email drafts, ticket classification with priority +- `.claude/memory/MEMORY.md` — added GuruRMM agent parity feedback entry + +**Created (claudetools repo):** +- `.claude/memory/feedback_gururmm_agent_parity.md` — feedback memory: "add feature X" = all three platforms in same change + +**Modified (GuruRMM repo, 172.16.3.30:/home/guru/gururmm):** +- `agent/src/metrics/mod.rs` — Linux temperature via /sys/class/thermal/thermal_zone*; Linux user idle time via xprintidle subprocess +- `agent/src/checks.rs` — Linux service check via systemctl is-active + optional systemctl restart with 3s re-check + +## Credentials & Secrets + +None new this portion. + +## Infrastructure & Servers + +- GuruRMM server/build server: 172.16.3.30 (Jupiter), SSH as guru +- GuruRMM agent repo: /home/guru/gururmm +- Build log: /var/log/gururmm-build.log +- Gitea internal: http://172.16.3.20:3000 + +## Commands & Outputs + +``` +# Linux parity build result +Finished 'release' profile [optimized] target(s) in 76s +# 53 pre-existing warnings, zero errors + +# GuruRMM commits this portion +a3cce0a feat(agent): Linux parity — temps, idle time, service checks +cc3d4d8 fix(webhook): prevent zombie lock with thread-based build dispatch +``` + +## Pending / Incomplete Tasks + +- **Policy wiring** (plan: ticklish-questing-stallman.md) — deferred, still pending +- **Pluto password not in vault** — `Paper123!@#` in memory only; needs `infrastructure/pluto-build-server.sops.yaml` +- **macOS agent builds** — not yet built or tested; build-agents.sh has TODO-MACOS marker +- **Linux idle time on headless servers** — xprintidle requires X11; returns None on servers. Future: D-Bus org.freedesktop.login1 +- **Linux temperature lm-sensors** — /sys/class/thermal works on most systems; lm-sensors integration would improve coverage +- **IPC/tray on Linux/macOS** — still stubs; flagged in parity matrix +- **BB-SERVER enrollment loop** — pre-existing duplicate key constraint, unresolved +- **Portal changelog UI** — API exists, no dashboard UI +- **seafile-elasticsearch** container at memory limit (1.86 GB / 2 GB) — monitor + +## Reference Information + +- terminal-bench leaderboard (community benchmark): https://terminal-bench.com +- vix releases: https://github.com/kirby88/vix-releases +- Platform parity matrix: `.claude/CODING_GUIDELINES.md` § "GuruRMM Agent — Platform Parity" +- Claudetools commits: `ee900fd` (token efficiency), `8c522b3` (parity rule hardening) +- GuruRMM commit: `a3cce0a` (Linux parity — temps, idle time, service checks)