Health
Health Session
This section is reserved for health-related notes, reports, and review pages.
# MacBook Air M5 Health Check and Optimization Assessment Date: 2026-06-15 Host: MacBook Air `Mac17,3` Chip: Apple M5, 10 cores Memory: 32 GB macOS: 26.5.1 (`25F80`) ## Scope This was a read-only audit. No changes were made. Some live macOS telemetry commands were restricted in this environment, so a few areas use filesystem and configuration evidence rather than full live-process inspection. In particular: - `top`, `ps`, `iostat`, and some `sysctl` values were blocked - current swap allocation was not directly readable - thermal detail was limited - login items could not be fully enumerated via AppleScript ## Executive Summary This machine is healthy from a hardware wear perspective, but it is carrying a very large local AI/dev footprint and has a few exposure and housekeeping issues: - Battery health is excellent: `3` cycles, `100%` maximum capacity, condition `Normal` - Memory pressure is healthy right now, but the system has a noticeable historical compression/swap footprint - Data volume free space is tight: about `39 GiB` free on a `460 GiB` volume (`91%` used) - The main storage pressure comes from local AI models: - `~/.ollama`: `112G` - `~/.lmstudio`: `39G` - `~/.hermes`: `5.8G` - `~/.openclaw`: `1.5G` - Several persistent background AI/dev services are configured to auto-start - Firewall is disabled - `sshd` and Screen Sharing are enabled at the service level - Multiple runtime stacks overlap: Homebrew Node, `/usr/local` Node, `nvm`, multiple Python installs, Docker, Codex, Hermes, OpenClaw, Ollama, and LM Studio ## 1. Hardware & Resources ### CPU utilization - Exact per-process CPU sampling was blocked - System load at audit time: `3.36 5.20 6.54` - This suggests moderate active load, not an obvious runaway state ### Memory usage and pressure - Installed memory: `32 GB` - `memory_pressure` reported `System-wide memory free percentage: 55%` - `vm_stat` showed active compression: - pages stored in compressor: `1,597,392` - pages occupied by compressor: `94,887` - Interpretation: memory is currently fine, but the machine has seen meaningful memory churn in prior sessions ### Swap usage - Current swap allocation could not be read directly in this environment - Historical swap activity exists: - `Swapins: 18,517,015` - `Swapouts: 47,022,082` - Interpretation: not necessarily a present problem, but large-model workflows are definitely capable of pushing memory pressure ### Disk utilization / SSD free space - System/Data volume: `460 GiB` - Data volume used: `381 GiB` - Free: about `39 GiB` - Capacity used: `91%` ### Battery health - Power source at audit time: AC - Battery charge: `100%` - Cycle count: `3` - Maximum capacity: `100%` - Condition: `Normal` ### Thermal status - No explicit thermal warning was observed - Detailed thermal telemetry was not available in this environment ## 2. Startup & Background Services ### LaunchAgents User LaunchAgents found: - `ai.hermes.gateway.plist` - `ai.openclaw.gateway.plist` - `com.hermes.mac-host-worker.plist` - Dropbox updater agents - Google updater agents - `com.openai.atlas.update-helper.plist` - iMazing mini Notable behavior: - Hermes gateway: `RunAtLoad=true`, `KeepAlive=true` - OpenClaw gateway: `RunAtLoad=true`, `KeepAlive=true` - Hermes mac host worker: `RunAtLoad=true`, `KeepAlive=true` ### LaunchDaemons System LaunchDaemons found: - Docker helpers: - `com.docker.socket.plist` - `com.docker.vmnetd.plist` - Tailscale: - `homebrew.mxcl.tailscale.plist` - Adobe, Google, Microsoft, pCloud, Zoom, Logitech helpers ### Login Items / auto-start applications Full Login Items enumeration was restricted, but `backgrounditems.btm` exists at: - `/Users/allen/Library/Application Support/com.apple.backgroundtaskmanagementagent/backgrounditems.btm` Installed apps and agents strongly suggest regular auto-start/background presence for: - Docker Desktop - Dropbox - OneDrive - Google updaters - Logitech Options+ - Hermes - OpenClaw - ChatGPT Atlas updater - Zoom daemon ### Menu bar utilities / likely resident apps Likely resident or frequently backgrounded utilities installed: - Alfred - Amphetamine - Dropbox - Google Drive - pCloud Drive - TradingView - WireGuard - LinearMouse - logioptionsplus - Microsoft Teams - Spotify ### Resource-heavy background patterns Evidence points to the following as the most likely heavy background/resource contributors: - Ollama model storage and model serving - LM Studio local server with auto-start - Hermes gateway and mac host worker - OpenClaw gateway - Docker Desktop helpers - Dropbox/OneDrive sync agents ## 3. AI / Development Environment ### Ollama Observed config: - `OLLAMA_MAX_LOADED_MODELS=1` - `OLLAMA_KEEP_ALIVE=2m` - cloud disabled in `server.json` Installed manifests found for: - `qwen3-vl:8b` - `phi4-mini:latest` - `qwen2.5:14b-instruct` - `gemma4:e4b-mlx` - `qwen3.6:27b-mlx` - `qwen3.6:27b` - `qwen3-coder:30b` - `qwen3.5:27b-mlx` - `qwen3.5:4b-mlx` - `qwen3.5:9b-mlx` - `qwen3.5:2b-mlx` - `qwen3.5:0.8b-mlx` Storage: - `~/.ollama`: `112G` - largest blobs include: - `17G` - `16G` - `8.4G` - `5.7G` - `5.3G` ### Hermes Desktop Observed config highlights: - default model: `qwen3.5:9b-mlx` - provider base URL: `http://localhost:11434/v1` - configured context length: `65536` - cached context lengths include: - `qwen3.5:9b-mlx` at `262144` - `qwen3.5:2b-mlx` at `262144` - `qwen2.5:14b-instruct` at `65536` - gateway state showed connected platforms - persistent tracked process found: - Python HTTP server on port `8089` Storage: - `~/.hermes`: `5.8G` - `~/.hermes/mac-computer-use`: `3.9G` - notable single file: - `~/.hermes/mac-computer-use/actions.log`: `3.8G` ### OpenClaw Observed config highlights: - gateway auto-run via LaunchAgent - local gateway port: `18789` - bind mode: `loopback` - default primary model: `ollama/qwen3.5:9b-mlx` - other configured models include: - `gemma4:e4b-mlx` - `qwen3.6:27b-mlx` - `qwen2.5:14b-instruct` - `phi4-mini:latest` - `qwen3.6:27b` - `qwen3-vl:8b` - `qwen3-coder:30b` - configured context windows include: - `131072` - `262144` - `32768` - Chrome DevTools MCP plugin configured via `npx` Storage: - `~/.openclaw`: `1.5G` ### LM Studio Observed config highlights: - models folder: `~/.lmstudio/models` - local server enabled: `true` - auto start on launch: `true` - server port: `1234` - network interface: `0.0.0.0` - verbose logging: `true` - sensitive data logging: `true` - JIT model loading: `true` - default context length: `8192` - JIT model TTL: `3600` seconds Known local models: - `Qwen3.5-27B-Claude-4.6-Opus-Distilled-MLX-4bit` - `Qwen3.5-4B-MLX-4bit` - `Qwen3.5-9B-MLX-4bit` - `gemma-4-E4B-it-MLX-4bit` - `Qwen2.5-14B_Uncensored_Instruct-Q4_K_S.gguf` Storage: - `~/.lmstudio`: `39G` - `~/.lmstudio/models`: `37G` Largest LM Studio files: - `8.0G` `Qwen2.5-14B_Uncensored_Instruct-Q4_K_S.gguf` - `5.0G` model shard - `5.0G` model shard - `5.0G` model shard - `4.1G` model shard - `4.0G` model shard ### Screenpipe - No clear Screenpipe installation/configuration was found in the inspected paths ### MCP servers Observed: - Codex MCP server: `node_repl` - LM Studio `mcp.json`: empty - Google Workspace MCP config directory exists: - `~/.config/google-workspace-mcp` - OpenClaw Chrome DevTools MCP plugin configured ### Docker - Docker CLI installed: `29.5.3` - Docker Desktop support directories present - Docker daemon socket helper installed - `docker info` could not fully query the server due permission denied on: - `unix:///Users/allen/.docker/run/docker.sock` ### Node.js installations Multiple overlapping Node locations detected: - `/opt/homebrew/bin/node` - `/usr/local/bin/node` - `~/.nvm/versions/node/v22.22.3/bin/node` Observed versions/footprints: - active `node --version`: `v23.11.0` - `~/.nvm`: `1.3G` - `/opt/homebrew/Cellar/node`: `79M` - `/usr/local/lib/node_modules`: `19M` ### Python environments Multiple Python entry points detected: - `/Library/Frameworks/Python.framework/Versions/3.12/bin/python3` - `/opt/homebrew/bin/python3` - `/usr/local/bin/python3` - `/usr/bin/python3` Observed version: - `Python 3.12.3` Virtual environments found under the home directory include: - `~/open-webui/venv` - `~/mac-computer-use/.venv` - `~/.hermes/hermes-agent/venv` - `~/trade/.venv` - `~/trade/venv` - `~/ibkr-test/.venv` - `~/ibkr_project/.venv` - `~/venv` - others ## 4. Network & Security ### Tailscale - Tailscale CLI installed: `1.98.5` - LaunchDaemon exists for `tailscaled` - `tailscale status` could not connect to the local daemon at audit time - Interpretation: installed and configured for launchd, but not confirmed healthy/running in this session ### Open listening ports Direct socket/process correlation was limited in this environment. From configuration evidence, likely relevant listeners/services are: - SSH daemon: default port `22` if active - LM Studio local API: `0.0.0.0:1234` - OpenClaw gateway: loopback `18789` - Hermes mac host worker: `0.0.0.0:8765` - Hermes tracked Python HTTP server: `8089` - Ollama typically serves on `11434` ### SSH configuration - `/etc/ssh/sshd_config` is mostly default - `AuthorizedKeysFile .ssh/authorized_keys` - user SSH config contains host: - `anakinfs` on port `822` ### Firewall status - macOS Application Firewall: `disabled` ### Remote access services Service-level evidence: - `com.openssh.sshd` => enabled - `com.apple.screensharing` => enabled This does not prove current external exposure by itself, but it does increase the need for intentional network hardening. ## 5. Storage Analysis ### Top 20 largest directories 1. `112G` `/Users/allen/.ollama` 2. `45G` `/Users/allen/Library` 3. `39G` `/Users/allen/.lmstudio` 4. `6.3G` `/Users/allen/docker` 5. `5.8G` `/Users/allen/.hermes` 6. `3.6G` `/Users/allen/Downloads` 7. `3.6G` `/Users/allen/.cache` 8. `2.8G` `/Users/allen/.npm` 9. `2.1G` `/Users/allen/Applications` 10. `1.7G` `/Users/allen/open-webui` 11. `1.6G` `/Users/allen/.pcloud` 12. `1.5G` `/Users/allen/.openclaw` 13. `1.3G` `/Users/allen/.nvm` 14. `1.2G` `/Users/allen/ollama-webui` 15. `1.1G` `/Users/allen/mac-computer-use` 16. `921M` `/Users/allen/.vscode` 17. `772M` `/Users/allen/.cursor` 18. `638M` `/Users/allen/hermes_skills` 19. `619M` `/Users/allen/.com.moomoo.OpenD` 20. `607M` `/Users/allen/mbose` ### Cache consumption Largest cache areas found: - `5.5G` `~/Library/Caches` - `1.5G` `~/Library/Caches/Homebrew` - `755M` `~/Library/Caches/com.microsoft.VSCode.ShipIt` - `611M` `~/Library/Caches/Mozilla` - `534M` `~/Library/Caches/ms-playwright` - `450M` `~/Library/Caches/com.openai.atlas` - `394M` `~/Library/Caches/tradingview-desktop-updater` - `247M` `~/Library/Caches/Google` - `240M` `~/Library/Caches/pip` - `122M` `~/Library/Caches/com.spotify.client` - `115M` `~/Library/Caches/node-gyp` - `95M` `~/Library/Caches/ms-playwright-mcp` ### Old logs - `~/Library/Logs`: `72M` - `~/.hermes/logs`: `7.7M` - `~/.ollama/logs`: `3.3M` - largest old log found: - `12M` Zoom memory log ### Large files Notable large files: - `17G` Ollama blob - `16G` Ollama blob - `8.4G` Ollama blob - `8.0G` LM Studio GGUF - `5.0G` LM Studio model shards - `3.8G` `~/.hermes/mac-computer-use/actions.log` - `2.8G` `~/Downloads/ubuntu-arm64.iso` ### Duplicate AI model families / overlap There is clear overlap across AI stacks: - Ollama and LM Studio both contain Qwen-family models - Ollama and LM Studio both contain Gemma-family models - Ollama and Hermes/OpenClaw are configured around many of the same local Ollama models Most obvious overlap: - `qwen3.5:4b` - `qwen3.5:9b` - `qwen2.5:14b` - `gemma4/e4b` This is the single largest optimization opportunity on the machine. ## 6. Recommendations ## A. Quick Wins (<5 minutes) ### 1. Remove or rotate the oversized Hermes action log - Benefit: immediate disk recovery with no impact on model quality - Risk: loss of old interaction/action trace history - Estimated resource savings: `~3.8G` - Exact commands required: ```bash ls -lh ~/.hermes/mac-computer-use/actions.log mv ~/.hermes/mac-computer-use/actions.log ~/.hermes/mac-computer-use/actions.log.bak truncate -s 0 ~/.hermes/mac-computer-use/actions.log ``` ### 2. Delete the Ubuntu ISO if no longer needed - Benefit: fast, low-risk disk recovery - Risk: you would need to re-download it later - Estimated resource savings: `~2.8G` - Exact commands required: ```bash ls -lh ~/Downloads/ubuntu-arm64.iso rm ~/Downloads/ubuntu-arm64.iso ``` ### 3. Clear user caches - Benefit: easy space recovery and lower cache sprawl - Risk: first launch of some apps may be slower - Estimated resource savings: `2G` to `5G` - Exact commands required: ```bash du -sh ~/Library/Caches rm -rf ~/Library/Caches/* ``` ### 4. Trim old logs - Benefit: modest cleanup and lower log noise - Risk: lose old diagnostic history - Estimated resource savings: `50M` to `200M` - Exact commands required: ```bash find ~/Library/Logs -type f -mtime +30 -print find ~/Library/Logs -type f -mtime +30 -delete ``` ### 5. Confirm Tailscale health before keeping it auto-started - Benefit: removes uncertainty around a background daemon - Risk: none if only inspecting; loss of connectivity if later disabled - Estimated resource savings: small CPU/RAM savings if later disabled - Exact commands required: ```bash tailscale status sudo launchctl print system/homebrew.mxcl.tailscale tail -n 100 /opt/homebrew/var/log/tailscaled.log ``` ## B. Medium Improvements (<30 minutes) ### 6. Consolidate duplicate local model families across Ollama and LM Studio - Benefit: largest disk-space win on the machine - Risk: losing convenience if both toolchains need their own copies - Estimated resource savings: `20G` to `60G+` - Exact commands required: ```bash du -sh ~/.ollama ~/.lmstudio find ~/.ollama/models/manifests -type f find ~/.lmstudio/models -type f \( -name '*.gguf' -o -name '*.safetensors' \) ollama rm qwen3.5:4b-mlx ollama rm qwen3.5:9b-mlx ollama rm qwen2.5:14b-instruct ollama rm gemma4:e4b-mlx ``` LM Studio cleanup is usually safest from its UI, but file-level review commands are: ```bash du -xhd 2 ~/.lmstudio/models | sort -hr | head -n 30 find ~/.lmstudio/models -type f -size +1G ``` ### 7. Disable LM Studio local server auto-start if it is not needed all day - Benefit: lower background RAM/CPU usage and reduced network exposure - Risk: local API clients will fail until LM Studio is launched - Estimated resource savings: small-to-moderate background savings - Exact commands required: ```bash cat ~/.lmstudio/.internal/http-server-config.json ``` Recommended manual change after approval: - set `autoStartOnLaunch` to `false` - optionally change `networkInterface` from `0.0.0.0` to loopback-only if supported in-app ### 8. Reduce local model context sizes where 262k is unnecessary - Benefit: lower RAM pressure during inference and fewer swap events - Risk: shorter available context for long prompts - Estimated resource savings: workload-dependent, potentially several GB of active RAM during model runs - Exact commands required: ```bash cat ~/.hermes/config.yaml cat ~/.openclaw/openclaw.json cat ~/.ollama/config ``` Examples of later adjustments: ```bash export OLLAMA_KEEP_ALIVE=30s ``` And reduce `num_ctx` values in tool configs for large models where appropriate. ### 9. Review and prune always-on LaunchAgents for Hermes/OpenClaw if they are not needed continuously - Benefit: lower idle overhead and less background complexity - Risk: those tools stop being instantly available - Estimated resource savings: small-to-moderate CPU/RAM savings, lower login overhead - Exact commands required: ```bash plutil -p ~/Library/LaunchAgents/ai.hermes.gateway.plist plutil -p ~/Library/LaunchAgents/ai.openclaw.gateway.plist plutil -p ~/Library/LaunchAgents/com.hermes.mac-host-worker.plist launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/ai.hermes.gateway.plist launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/ai.openclaw.gateway.plist ``` ### 10. Rationalize Node installations - Benefit: simpler PATH behavior and fewer update surfaces - Risk: some tools may depend on a specific install path - Estimated resource savings: `1G+` possible, plus lower maintenance overhead - Exact commands required: ```bash which -a node npm du -sh ~/.nvm /opt/homebrew/Cellar/node /usr/local/lib/node_modules nvm ls brew list node ``` ## C. Advanced Optimizations ### 11. Enable firewall and re-check remote services - Benefit: meaningful security improvement - Risk: may block desired inbound workflows until explicitly allowed - Estimated resource savings: none; security gain only - Exact commands required: ```bash /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on sudo launchctl print-disabled system | rg 'com.openssh.sshd|com.apple.screensharing' ``` ### 12. Disable SSH and Screen Sharing if not intentionally in use - Benefit: reduces attack surface - Risk: remote admin/access stops working - Estimated resource savings: small background savings; primary benefit is security - Exact commands required: ```bash sudo systemsetup -getremotelogin sudo launchctl disable system/com.openssh.sshd sudo launchctl disable system/com.apple.screensharing ``` ### 13. Put LM Studio on loopback only and review sensitive-data logging - Benefit: reduces exposure of local inference APIs and log sensitivity - Risk: breaks LAN access to LM Studio if currently relied on - Estimated resource savings: none; security and privacy gain only - Exact commands required: ```bash cat ~/.lmstudio/.internal/http-server-config.json ``` Recommended manual changes after approval: - set `networkInterface` to loopback-only - set `logSensitiveData` to `false` - set `verbose` to `false` ### 14. Build a single “primary local inference stack” - Benefit: biggest long-term simplification - Risk: migration effort; some tool-specific workflows may need reconfiguration - Estimated resource savings: `30G` to `80G+`, plus lower idle complexity - Exact commands required: ```bash du -sh ~/.ollama ~/.lmstudio ~/.hermes ~/.openclaw find ~/.ollama/models/manifests -type f find ~/.lmstudio/models -maxdepth 3 -type f ``` Target state options: - keep Ollama + Hermes/OpenClaw, reduce LM Studio - keep LM Studio for interactive use, reduce Ollama inventory - keep both, but separate by model family and size class ### 15. Audit Docker Desktop usage and decide whether it should remain installed and auto-started - Benefit: can remove a persistent virtualization stack if rarely used - Risk: container workflows stop until Docker is relaunched/reinstalled - Estimated resource savings: moderate idle RAM/CPU and helper overhead - Exact commands required: ```bash docker context ls docker images docker ps -a plutil -p /Library/LaunchDaemons/com.docker.socket.plist plutil -p /Library/LaunchDaemons/com.docker.vmnetd.plist ``` ## Suggested Priority Order 1. Free space first: AI model consolidation, Hermes log cleanup, caches, ISO removal 2. Harden network posture: firewall, SSH, Screen Sharing, LM Studio bind scope 3. Reduce background complexity: Hermes/OpenClaw/LM Studio auto-start review 4. Simplify runtimes: Node/Python/Docker sprawl ## Best Next Actions If you want the highest-value changes with the least risk, the first approved actions I would recommend are: 1. prune `~/.hermes/mac-computer-use/actions.log` 2. remove the Ubuntu ISO if unused 3. clear user caches 4. decide whether LM Studio and Ollama both need full local model inventories 5. enable firewall and review SSH/Screen Sharing intent