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.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow --skill kai-deploygit clone --depth 1 https://github.com/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflowWrote 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.
[](https://agentmods.dev/skills/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/kai-deploy)<a href="https://agentmods.dev/skills/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/kai-deploy"><img src="https://agentmods.dev/badge/skills/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/kai-deploy/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.
<a href="https://agentmods.dev/skills/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/kai-deploy"><img src="https://agentmods.dev/badge/skills/aws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow/kai-deploy.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00118 | $0.02765 |
| Opus 5.5 | $0.00047 | $0.01106 |
| Sonnet 5.5 | $0.00024 | $0.00553 |
| Haiku 4.5 | $0.00012 | $0.00277 |
Grade A, and why
kai-deploy 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.
How it starts
The opening of the file, as written. The whole thing — 161 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Deploy an export on KAI
You are handed an export — observations/<key>/exports/<token>.yaml, or just its run token
(rt65y1). Your job is to serve its placement on the kai-gpu node pool and leave it either placed
exactly as its slots say, or torn down with the reason stated.
This is a separate step and the user starts it. Nothing in the pipeline deploys a result, and
run-fleet never chains into this. The guard hook asks before any colocation.kai deploy, load or
teardown unless the user's own prompt was /fleet-kai-deploy, /fleet-kai-load or
/fleet-kai-teardown; an ask is
the rule working, not something to route around.
Everything runs from the repository's tutorials/multi-model-gpu-sharing directory with PYTHONPATH=src.
A split's export is one deployment per node. An export with schema_version: 2 (written by
search on a fleet with max_nodes above 1, <store>/groups/<fleet>/export.<stamp>.yaml) holds
each node's own group export. render and deploy take it like any export, and each node becomes
a deployment of its own, <name>-n1, <name>-n2, ..., deployed one after the other exactly as a
single node is. The first tenant of each later node is kept off the earlier nodes' hosts and in the
first node's zone. It therefore needs that many kai-gpu nodes of the instance type in one zone,
and capacity for that is not guaranteed, so say so before deploying. Both render and deploy
refuse (exit 2) if a node's own export file no longer matches the copy in the split, because that
means the group was exported again since. Every per-deployment step below (retry, verify, drift,
teardown) takes a node's <name>-n<i>, and a mismatch on one node is retried by tearing down
every node of the split and deploying again, since later nodes were placed relative to earlier ones.
What the code decides, so you do not
- Sizing.
renderre-derives each tenant's envelope offline, exactly asexportdid, and refuses (exit 2) if any differs from the export'srequired_gibor if the fleet file's sha256 moved. Each shard becomes a fractionL = (E - r_mps) + r_kaiwithr_kai = r_mps + 0.125 GiB, andutilis computed againstL, which hands vLLM the budget it was measured with. - Filling. Every slot's card is filled to the store's
addressable_mibless 256 MiB, the extra going to the slot's single-shard tenants as KV. That is what makes KAI's binpack reproduce the slots; it is not a choice to revisit per deploy. - Order. Cards without a TP tenant first, then TP tenants, then their mates — each tenant
waited on until the binder has written its cards, and every tenant after the first pinned to the
first one's node. Each tenant is a Helm release of the
kai-vllmchart,kai-<name>-<tenant>, installed without--wait(bound is what the next one needs, not Ready), and the plan is a release of its own,kai-<name>-plan. Helm orders nothing between releases;deploydoes. - SM caps. A tenant the search measured under an SM cap carries
active_thread_percentagein the export, and is served withCUDA_MPS_ACTIVE_THREAD_PERCENTAGEset to it in its pod env, which KAI's shared MPS server honours.renderprintsSM cap N%beside it. An uncapped tenant gets no variable.
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.
- 4d ago First seen · 161 lines · 118 tokens per session scan A 86a6e8319708
kai-deploy is a skill 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 118 tokens to every session and 2,765 once invoked, about $0.0005 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.
kai-deploy compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| kai-deployaws-samples/amazon-eks-machine-learning-with-terraform-and-kubeflow | Skill | 132 | 4d ago | Apache-2.0 | A | 118 | Claude Code |
| tensorrt-llmNousResearch/hermes-agent | Skill | 263k | today | MIT | A | 18 | Claude Code, Codex |
| agent-platform-tuninggoogle/skills | Skill | 24k | yesterday | Apache-2.0 | A | 64 | Claude Code, Codex |
| google-cloud-solution-guided-gke-ai-migrationgoogle/skills | Skill | 24k | yesterday | Apache-2.0 | A | 157 | Claude Code, Codex |
| apigee-agent-gateway-governancegoogle/skills | Skill | 24k | yesterday | Apache-2.0 | A | 222 | Claude Code, Codex |
| agent-platform-endpoint-managementgoogle/skills | Skill | 24k | yesterday | Apache-2.0 | A | 64 | Claude Code, Codex |
| gke-inferencegoogle/skills | Skill | 24k | yesterday | Apache-2.0 | A | 119 | Claude Code, Codex |