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 agentmods add skills/cloudrift-ai/emmy/collect-node-datanpx skills add cloudrift-ai/emmy --skill collect-node-datagit clone --depth 1 https://github.com/cloudrift-ai/emmyWrote 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/cloudrift-ai/emmy/collect-node-data)<a href="https://agentmods.dev/skills/cloudrift-ai/emmy/collect-node-data"><img src="https://agentmods.dev/badge/skills/cloudrift-ai/emmy/collect-node-data.svg" alt="Measured on agentmods" 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 | $0.00078 | $0.04986 |
| Opus 5 | $0.00039 | $0.02493 |
| Sonnet 5 | $0.00016 | $0.00997 |
| Haiku 4.5 | $0.00008 | $0.00499 |
Grade C, and why
collect-node-data scanned grade C with 1 finding 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.
Reaches for credential fileshighPrivilege escalation
SSH keys, cloud credentials, git-credentials, .npmrc, /etc/shadow: reading these is how a config file becomes a credential leak.
./venv/bin/python scripts/remote_node_collect.py --remote "<user@host>" --ssh-key ~/.ssh/id_ed25519 [--port <PORT>] \ How it starts
The opening of the file, as written. The whole thing — 266 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Collect node-store data from specific hardware
The autotune node table (SearchDB, default ~/.cache/emmy/autotune.db) is a cross-hardware dataset of
search-tree value-of-position rows — the leaf measurements the future offline prior trains on, with the full feature
dict the prior sees. It is read by emmy eval prior --dataset nodes (Spearman + regret per card and compile
regime) and feeds prior diagnostics. Because your dev
box (and most of the fleet) has no local CUDA GPU, the data for any given card must be measured on that card and
brought back.
This skill does exactly that for one GPU, in a single budgeted run on the box: get a server (an existing one the
user provides, or rent one) → set up emmy → the golden sweep (scripts/remote_node_collect.py, driving
scripts/golden_neighbor_bench.py) → merge the new card's node rows into the local DB → back the DB up → tear the
server down (only if this run rented it). Everything long-running on the remote — the apt/make setup phase and
the sweep itself — runs inside named tmux sessions (emmy-node-setup / emmy-node-sweep), so a dropped ssh
connection never kills the work and a human can attach to watch it.
Why a budgeted sweep (and not a search-driven tune). The old flow ran an ε-greedy emmy tune --dataset golden
first: its wall time grew with the golden set (patience-stopped search per shape, no budget knob), and even at
ε=0.25 three quarters of its benches followed the incumbent prior — the collected rows over-sampled the branches the
prior already liked (a censoring feedback loop). The sweep replaces it: a fixed --budget-s wall clock, and points
drawn from the enumeration itself rather than a search trajectory, so the future offline prior gets clean leaf rows
whose selection didn't depend on the incumbent's opinions. emmy tune --explore-eps still exists for interactive
tuning; it is just no longer the collection vehicle.
Why three slices. Every golden shape's candidate pool (all kinds — matmul, reduce, rms_norm, softmax, attention, the fused norm_linear / mlp_geglu, …) is split by distance to the recorded golden anchors, and the budget is spent across the slices at configurable shares (default 60/25/15):
- own — rows within
--max-distof the live card's OWN goldens: dense label support (and fine ranking resolution) exactly where this card's deploys land. - cross — rows near OTHER cards' goldens that realize on this card: every such point is verified-excellent somewhere, so measuring it here yields either transfer signal or an arch-disagreement row — the data the prior's arch × knob interactions (and a leave-one-card-out evaluation) need. An anchor that doesn't enumerate here is skipped, which is itself the realizability filter.
- tail — a capped, hash-ordered (seed-independent, so stable across sessions) subsample of the rest of the enumeration: landscape support so the prior also learns what bad looks like.
Kind-stratified within each slice. After the slice draw, each batch picks a golden KIND uniformly among the kinds that still have points in that slice, and only then a shape within the kind (proportional to its remaining pool). Without this, matmul — ~87% of the selectable points on a 4090 — soaked up nearly the whole budget and small kinds (softmax, attention, linear_norm) could end a 4 h run with zero benches. Small kinds exhaust their pools early and their share flows back to the big ones, so a run guarantees every kind data first and spends the rest where the pool actually is.
Bench in the deployable regime. The offline prior trains on deployable records, and a sweep now measures there
by default (emmy run --bench --ab, node recording on), so no pairing step is needed: every point collected is
already a deployable measurement. Historical stores also hold -O1 rows from the era when sweeps ranked at that
level; those are inert — the prior does not train on them and no deploy reads them. Do NOT pin --nvcc-flags to a
non-deployable level to collect "cheaper" data: its error is biased along tile size, so it mis-ranks the wide
register-tile family it would most matter for.
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 · 266 lines · 78 tokens per session scan C 52ba25d29c3e
collect-node-data is a skill published in the GitHub repository cloudrift-ai/emmy (80 stars, last pushed 4d ago), licensed Apache-2.0. It adds 78 tokens to every session and 4,986 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it C with 1 finding (reaches for credential files). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
tilelang-ascend-kernel
Use when the user wants to add, modify, debug, or review an xLLM TileLang Ascend kernel or specialization, including Python kernel definitions, generated Ascend-C source, runtime wrapper dispatch, TileLang CMake wiring, and NPU tests.
code-review
Review code changes for quality, security, performance, and correctness following project-specific standards. Use when reviewing pull requests, examining git diffs, or when the user asks for a code review. This skill should be used proactively — when the user asks for a review without specifying commits, automatically…
add-unit-test
Add or update xLLM unit tests in the repository. Use when Codex needs to create a new C++/CUDA/NPU/MLU unit test, place a test under tests/, wire it into CMake with cctest, update an existing test target, choose platform gates, or validate test naming and dependencies against current xLLM test conventions.
git-workflow
Use when the task involves Git operations for the public xLLM repository, including choosing branch or tag names, preparing commits and pull requests, backporting fixes, checking repo-specific review expectations, or drafting commit messages from actual diffs.
bootloaders-embedded
Embedded bootloader skill for firmware update and app handoff. Use when writing a custom bootloader, jumping to application code, relocating VTOR, or implementing DFU/USB firmware update on Cortex-M. Activates on queries about bootloader jump, vector table relocation, application entry point, STM32 DFU, or dual-bank…
mmio-and-bit-manipulation
MMIO and register access skill for bare-metal firmware. Use when accessing memory-mapped peripherals with volatile, bit masks, RMW patterns, or endianness concerns. Activates on queries about MMIO, volatile register, bit manipulation, read-modify-write, or register alignment.