Skip to content
Back to skills

Machine Probe

ASecurity

Tell the user (or an agent) exactly what machine they are on — chip, cores, RAM, NPU TOPS, memory bandwidth, security posture, DSH tier, and the right Ollama model to pull. Refreshes the canonical profile at agents/core/.mesh/machine.json on every call. Reads the result via agents.core.machine — zero re-probing in application code.

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 12, 2026
developmentpythongoshellbashnodefastapigitapibackendsecurity

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 12, 2026

npx -y skills add garochee33/DSH --skill machine-probe --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Machine Probe?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Machine Probe
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/garochee33-machine-probe/badge)](https://www.skillsdirectory.com/skills/garochee33-machine-probe)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: machine-probe
description: "Tell the user (or an agent) exactly what machine they are on — chip, cores, RAM, NPU TOPS, memory bandwidth, security posture, DSH tier, and the right Ollama model to pull. Refreshes the canonical profile at agents/core/.mesh/machine.json on every call. Reads the result via agents.core.machine — zero re-probing in application code."
---

You are answering self-knowledge questions about the DSH sovereign node. Treat `agents/core/.mesh/machine.json` as the single source of truth and the agents.core.machine module as the canonical accessor.

## 1. Refresh the profile

Always re-probe before answering — state can change (user plugged in a display, upgraded RAM, disabled FileVault):

```bash
"$DOME_ROOT/.venv/bin/python" "$DOME_ROOT/scripts/machine-probe.py"
```

If the venv doesn't exist yet, fall back to system python:

```bash
python3 "$DOME_ROOT/scripts/machine-probe.py"
```

Silent output to the user is fine — only the summary matters downstream.

## 2. Read via the accessor, never re-probe

```python
import sys
sys.path.insert(0, "$DOME_ROOT")
from agents.core.machine import (
    get_profile,        # full dict
    get_tier,           # 'sovereign' | 'guardian' | 'scout' | 'seed' | 'heavy' | 'workstation'
    get_chip_family,    # 'M4 Pro', 'M1', etc. (or None on non-Apple)
    get_ram_gb,         # float
    get_npu_tops,       # float or None
    is_apple_silicon,   # bool
    recommend_local_model,  # 'qwen2.5-coder:14b' etc.
    security_posture,   # compact dict
    summary_one_liner,  # human-readable sentence
)
```

Never shell out to `system_profiler`, `sysctl`, or `ioreg` directly from the answer path — the probe already did that and structured the output.

## 3. Answer patterns

### "What machine am I on?"

Return `summary_one_liner()`. Example:

```
Apple M5 Pro · 18 cores (6S + 12P) · 48.0 GB RAM · 40+ TOPS NPU · tier=sovereign
```

### "What tier am I?"

Return `get_tier()` + a one-line meaning:

- **workstation** (≥64 GB): run the biggest quantized models (70B+)
- **heavy** (≥32 GB): 32B coder + 70B generalist
- **sovereign** (≥18 GB): 14B coder + 8B generalist (recommended default)
- **guardian** (≥12 GB): 8B generalist + medium Phi
- **scout** (≥8 GB): 8B generalist only
- **seed** (<8 GB): 3B Phi-mini

### "What Ollama model should I pull?"

Return `recommend_local_model()` + offer to run `bash scripts/ollama-init.sh` to actually pull it.

### "Is my node secure?"

Return `security_posture()` as a 6-row check:

```
filevault          : True / False
sip                : True / False
gatekeeper         : True / False
firewall           : True / False
dns_private        : True / False
secrets_backend    : True / False
```

For each `False`, suggest the exact fix command (e.g. dns_private=False → `sudo networksetup -setdnsservers Wi-Fi 127.0.0.1`).

### "Give me the full profile"

Return `get_profile()` pretty-printed. If the user requests JSON specifically, use `json.dumps(profile, indent=2)`.

## 4. Via HTTP (remote clients)

If the DSH FastAPI server is running (`pnpm serve`), two routes expose the same data:

- `GET http://localhost:8001/machine/summary` — compact payload (recommended for mobile)
- `GET http://localhost:8001/machine` — full profile

Use these from a remote controller / phone / other node. Returns 503 if profile missing — in that case run step 1 locally first.

## 5. When to re-run

- Before any setup skill (dsh-setup calls this as step 5).
- After any hardware change (new disk, new RAM — rare, but possible on an MBP).
- After security state changes (FileVault toggled, firewall reconfigured).
- On every `dome-check.sh` run (already wired — section 0 refreshes automatically).

## Non-negotiables

- Never invent specs. If `get_profile()` returns `None` for a field, say "unknown" — do not guess.
- Never expose the machine.json contents to a remote caller without auth. The `/machine` routes are read-only and should be behind Tailscale / VPN in production.
- `agents/core/.mesh/` is gitignored. Do not suggest committing the profile.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…