fleet-search

fleet-search is a command for Claude Code from aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow. It costs 25 tokens per session (1,378 once invoked), scanned A, original, Apache-2.0.

A live search for a GPU placement using the fewest GPUs while meeting every tenant's stated limits. It measures model combinations sharing a leased node and may request a machine if one is not available.

In plain words
What is it for?
Use it to find a measured multi-model GPU layout after planning and profiling the fleet.
Why use it?
It replaces guesswork about co-location with measured arrangements, while warning about cluster conditions that could leave a GPU-requesting pod behind or order another machine.

Command for Claude Code ✓ vendor

Written for Claude Code: allowed-tools in frontmatter.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is IMG=$(bash plugins/colocation-pipeline/scripts/harness-image.sh --ensure) || exit 1.

Part of the colocation-pipeline plugin — 2 skills, 15 commands, 2 hooks shipped together

Good fit Use it to find a measured multi-model GPU layout after planning and profiling the fleet.

Compare 6 commands from other repositories ↓
About the project

Amazon EKS Machine Learning with Terraform and Kubeflow is a modular platform for running machine-learning operations on Amazon EKS, the managed Kubernetes service, including training pipelines and model-serving systems. It is intended for teams deploying distributed training and inference with tools such as Kubeflow, MLflow, Airflow, and KServe, using configurable AWS infrastructure. The catalogue entries provide commands, skills, hooks, and a plugin for working with this deployment setup.

aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow · 132 stars · on GitHub

Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow
agentmods
npx agentmods add commands/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/fleet-search

Made for: Claude Code.

Or install colocation-pipeline, the plugin that ships this one along with the rest of its 2 skills, 15 commands, 2 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for fleet-search

README.md
[![agentmods](https://agentmods.dev/badge/commands/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/fleet-search/github.svg)](https://agentmods.dev/commands/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/fleet-search)
Your own site
<a href="https://agentmods.dev/commands/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/fleet-search"><img src="https://agentmods.dev/badge/commands/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/fleet-search/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for fleet-search

Your own site · 80×15
<a href="https://agentmods.dev/commands/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/fleet-search"><img src="https://agentmods.dev/badge/commands/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/fleet-search.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 25 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,378 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00025 $0.01378
Opus 5.5 $0.00010 $0.00551
Sonnet 5.5 $0.00005 $0.00276
Haiku 4.5 $0.00003 $0.00138

Measured 4d ago against content hash 6c8eee10a272, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

fleet-search scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

tutorials/multi-model-gpu-sharing/plugins/colocation-pipeline/commands/fleet-search.md · 82 lines

How it starts

The opening of the file, as written. The whole thing — 82 lines — stays where its author put it; the contents beside it link to each section on GitHub.

This installs a daemon that requests every GPU on the node, and it may order a machine. From the repository's tutorials/multi-model-gpu-sharing directory:

IMG=$(bash plugins/colocation-pipeline/scripts/harness-image.sh --ensure) || exit 1
COLOCATION_HARNESS_IMAGE="$IMG" PYTHONPATH=src python3 -m colocation.agent search --fleet $ARGUMENTS \
  --summary /tmp/search-summary.json

Give the Bash call a timeout well above the default. Never kill it part-way: a killed process leaves behind a Pending pod requesting every GPU on the node, and under Karpenter a Pending pod is a purchase order. On an instance type nobody has leased, --gpu-count N makes this run observe the machine and stop, as /fleet-profile describes; that is a type that has not been profiled yet either, so profile it first.

Confirm all three before it runs — these are yours to check:

  • The node is held by gpu-node-holder at priority -1000, so this run's daemon preempts it. If a default-priority pod holds the node the daemon cannot preempt it and a second machine is ordered instead: stop and say so. /fleet-preflight answers this.
  • plan has been re-run since the last profile, and reports that a co-resident placement exists, or prints BUT NOT ON THE WEIGHTS, in which case search warns and runs anyway.
  • The image comes from the script above, so it is built from the current source and its selftest passed.

A fleet with hardware.max_nodes above 1 is searched group by group (impl §17). Nothing measures the parent as one fleet: each group of a split, one per node, is this same search on its own fleet file under <store>/groups/<fleet>/, with its own lease, --budget, summary and export. The reasoner chooses which group to search (--split-chooser drive uses the deterministic driver instead, which is also the reasoner's recorded fallback), and --group-budget (default 4) is how many groups may be searched. Leases are taken one node at a time, so pass --teardown --release-node and expect one node in use, never two. A group an earlier run already searched against the same fleet text is recalled at no budget cost (chosen by the store). The split's verdict comes from the groups' own verdicts, whatever the reasoner submits. Report the === splits === block: each group's verdict, run token and who chose it, plus N group(s) were searched by the fallback when that line is printed. A met split writes <store>/groups/<fleet>/export.<stamp>.yaml (schema_version 2), and that file, not a group's export, is what the split is handed on as. The split summary is split.<stamp>.json beside it.

Read every refusal instead of routing around it. The resolve_tp refusals all mean one thing: no usable solo measurement settles a degree, and the remedy is /fleet-profile. A fleet file cannot state a tp: at all — that escape route was removed because a hand-written tp: 4 inflated a baseline once. A refusal naming gpu_memory_utilization is X, but ... implies a device total of Y GiB instead, or GPU <uuid> is promised N GiB of envelope, is the render boundary re-checking the placement against the device it is about to deploy to; the fraction it rejected would have been accepted by the engine and echoed back unchanged, leaving only an undersized KV pool as evidence.

capture can also refuse the node it just got, with is marked Drifted on its claim. Not a transient: the holder carried do-not-disrupt, and removing it is what let the cluster act on a drift it had been waiting to act on. Let the replacement register, confirm the holder is on it, capture again. If what the node reports about its GPUs changed, the run stops with EnvironmentMoved — the new machine is already filed and the same command run again starts a fresh store. That is not a fault and needs no flag.

The node is not released unless --release-node is passed, and keeping the lease is the default worth keeping: an idle node costs money, a released one may not come back. Either way the run prints the exact sequence that hands it back: run it whole and do not shorten it. It is usually three commands rather than two — a search deliberately ends with its tenants still serving, they are default priority, and the holder is -1000, so uninstalling only the daemon leaves the holder Pending and the node effectively unheld. Confirm the holder reaches Running, not merely created.

Read the full file on GitHub · 82 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 82 lines · 25 tokens per session scan A 6c8eee10a272

Subscribe to this mod's changes

fleet-search is a command published in the GitHub repository aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow (132 stars, last pushed 4d ago), licensed Apache-2.0. It adds 25 tokens to every session and 1,378 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-11-09.

Related

fleet-search compared with commands from other repositories

fleet-search next to 6 commands from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
fleet-searchaws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflowCommand1324d agoApache-2.0A25Claude Code
cost-optimizewshobson/agentsCommand42k5d agoMITA26Claude Code
deploybutterbase-ai/butterbase-skillsCommand53614d agoMITA20Claude Code
envvercel/vercel-pluginCommand336yesterdaynoneA35Claude Code
firebase-publishPierry/harness-kitCommand41mo agoMITA20Claude Code
scanprajapatimehul/claude-aws-cost-saverCommand244mo agoMITA6Claude Code
migrationdatabayt/hogwartsCommand183d agononeA4Claude Code