Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/matsen-bip-scout
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/bip-scout
What's inside
- Skill name
bip-scout- Description
- Check remote server CPU, memory, and GPU availability via SSH
- License
- MIT
- Instructions
- 143 lines in SKILL.md · view on GitHub
Before installing
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Agent Skills spec issues
- body: contains an absolute path from the author's machine
Files (1)
- SKILL.md
SKILL.md (first lines)
# /bip-scout
Check remote server availability and resource usage.
Runs `bip scout` to collect metrics, presents a human-readable summary, and answers follow-up questions by reasoning over the data.
## Usage
```
/bip-scout [question]
```
**Arguments:**
- `[question]` — Optional natural-language question (e.g., "which server has free GPUs?", "where should I run a training job?")
If no question is given, show a full summary of all servers.
## Workflow
### Step 1: Collect Server Metrics
Run `bip scout` to get JSON output:
```bash
bip scout
```
**If the command fails**, check for common issues:
- Missing `servers.yml`: "No servers.yml found — see `bip scout --help` for config location."
- SSH authentication failure: Report the error and suggest checking SSH agent and `~/.ssh/config`.
- All servers offline, or several at once: **do NOT report an outage — verify one host by direct `ssh <host> uptime` first.**
`bip scout` reports a pre-auth SSH throttle as `OFFLINE` rather than as an error, so a burst of scouts produces a false fleet-wide outage.
Observed 2026-08-31: five hosts (orca01, orca03, orca04, orca05, conatus) all reported `OFFLINE`; every one answered a direct `ssh` seconds later.
Cause confirmed 2026-09-03, having been inferred in the 08-31 case: scout reported orca01, orca03, orca04 and quokka `offline` with `handshake failed ... connection reset by peer` against `snail.fhcrc.org`; direct `ssh` seven minutes later found **orca01 at load 0.59 and orca03 at load 0.06 — the two idlest machines reachable**, and both were immediately given real jobs.
So the failure is not merely "scout is sometimes wrong": it is **biased toward reporting exactly the hosts you most want**, because a scout sweep hits them in the same burst that triggers the throttle. Taking it at its word cost nothing only because someone checked.
Only report an outage once a direct `ssh` also fails; a genuine one will fail that too, so the check costs a second and the alternative is standing down a fleet that is up.
Once confirmed, if `ListAgents` has a session named `infra` (`/bip-infra`), send it the report too.
### Step 2: Parse JSON Output
The JSON output has this structure:
```json
{
"servers": [
{
"name": "servername",
"status": "online",
"metrics": {
"cpu_percent": 45.2,
"memory_percent": 62.1,
"load_avg_1min": 2.3,
"load_avg_5min": 1.8,
"load_avg_15min": 1.5,
"gpus": [
{
"utilization_percent": 85,
"memory_used_mb": 30720,
"memory_total_mb": 49152,
"users": ["alice"]
}
],
"top_users": [
{"user": "alice", "cpu_percent": 45.2},
{"user": "bob", "cpu_percent": 12.1}
]
}
},
{
"name": "deadserver",
"status": "offline",
"error": "connection timed out"
}
]
}
```
### Step 3: Present Results
**If no question was asked**, present a summary table showing:
- All servers grouped by status (online first, offline last)
- For online servers: CPU%, Memory%, per-GPU utilization and memory
- For offline servers: note them as unreachable
- Highlight servers with low utilization (CPU < 20%, no busy GPUs) as good candidates
**If a question was asked**, reason over the JSON data to answer it.
Common question types:
| Question Type | How to Answer |
|---------------|---------------|
| "Which server has free GPUs?" | Find online servers where GPU utilization < 50% and GPU memory has headroom |
| "Where should I run a training job?" | Find servers with lowest GPU utilization and most free GPU memory |
| "Is server X available?" | Check that specific server's status and metrics |
| "What's the GPU memory on Y?" | Report per-GPU memory used/total for that server |
| "Which servers are idle?" | Find servers with CPU < 20% and memory < 50% |
| "Who is using server X?" | Report top_users with their CPU percentages (100% = one core), and each GPU's `users` |
A GPU with no `users` is free only if the server's `metrics` has no `gpu_owners_unknown: true`. That flag means the owner listing failed, so every GPU on that server shows no users whether or not it is in use.
**Formatting guidelines:**
- Use a markdown table for multi-server summaries
- Convert GPU memory from MB to GB for readability (divide by 1024)
- Show percentages with one decimal place
- For GPU-focused questions, show per-GPU breakdown (not just averages)
### Step 4: Offer Follow-Up
After presenting results, briefly note that the user can ask follow-up questions like:
- "Which of these has the most free GPU memory?"
- "Run my job on the least-loaded GPU server"
## Running After Scouting
Once you've picked a host, three rules keep remote runs from silently breaking or clobbering a neighbor:
- **Never write `cd` in an ssh command string — pin the directory as a flag.**
This is a *hard mechanical rule*, not advice: composing `ssh host "cd /long/path && <cmd>"`, the `cd /long/path && ` prefix gets silently dropped from what actually runs, so the command executes in `$HOME` (→ "not a git repository", the wrong project resolved, etc.).
This recurs *every session* and prose warnings have not stopped it — the fix is structural: make the working directory an un-droppable argument.
- **Single command → use the tool's dir flag:** `git -C <dir> …`, `uv run --directory <dir> …`, `make -C <dir> …`, `tar -C <dir> …`, `snakemake --directory <dir> …`.
- **Multi-step → write a script on the remote and run *that*.**From matsen/bipartite, MIT.
More from matsen/bipartite
- 0.652score
bip-spawn-resume
matsen
Cold-start into a worktree/clone from a fresh conversation — read the PR, issue, and any status files, figure out where things stand, then STOP and ask the…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-staff
matsen
Cold-start the long-lived staff session — the last layer of adjudication before the user, across every EPIC, conductor, and manuscript session.
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-ms-sweep
matsen
Pre-share / pre-submission polish sweep of a TeX manuscript.
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-review-post
matsen
Post a review window's findings as the user's GitHub review — approve unless the user already has, distill _ignore/REVIEW-p<N>.md into a comment, fact-check…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-lit
matsen
Unified guidance for using the bipartite reference library CLI.
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-conductor-recover
matsen
Recover bip-conductor fleet Claude sessions after a host reboot — replay a planned-reboot manifest if one exists, else find the killed sessions by scanning…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-ms-math
matsen
Revise the mathematics of a TeX manuscript as a series of small, separately checkable commits — proofs in proof blocks, duplicate proofs cut, long paragraphs…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-edit
matsen
Edit prose live with the author, line by line — a TeX manuscript or a blog post.
SkillAFreshness: A★ 33Claude Code - 0.652score
bip-helper
matsen
Start, message, resume, and shut down a long-lived helper session — a `claude --bg` peer that survives the primary's compaction and restarts, can message any…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-remove-metaspeak
matsen
Cut what does not earn its place out of a document or PR body — internal dialogue, meta-commentary, and whole passages the document itself undercuts — while…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-infra
matsen
Cold-start a long-lived infra session that tracks compute hosts and outages for the whole fleet — verifies outage reports independently, broadcasts status and…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-talk
matsen
Cold-start for a talks session — the live layer of a project.
SkillAFreshness: A★ 33Claude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 33
- Forks
- 5
- Open issues
- 29
- Last commit (this folder)
- Sep 30, 2026 (27 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/matsen/bipartite
- Website
- matsen.github.io/bipartite/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from matsen
- 0.652score
bip-infra
matsen
Cold-start a long-lived infra session that tracks compute hosts and outages for the whole fleet — verifies outage reports independently, broadcasts status and…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-lit
matsen
Unified guidance for using the bipartite reference library CLI.
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-conductor-recover
matsen
Recover bip-conductor fleet Claude sessions after a host reboot — replay a planned-reboot manifest if one exists, else find the killed sessions by scanning…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-helper
matsen
Start, message, resume, and shut down a long-lived helper session — a `claude --bg` peer that survives the primary's compaction and restarts, can message any…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-edit
matsen
Edit prose live with the author, line by line — a TeX manuscript or a blog post.
SkillAFreshness: A★ 33Claude Code - 0.652score
bip-ms-math
matsen
Revise the mathematics of a TeX manuscript as a series of small, separately checkable commits — proofs in proof blocks, duplicate proofs cut, long paragraphs…
SkillAFreshness: A★ 33Claude Code +9
Cite this page
bip-scout skill. Agent Mart. https://agentmart.dev/skills/matsen-bip-scout (last updated 2026-10-24)