home-ops: Skill for Claude Code

.agents/skills/b70-llm-serving/SKILL.md

b70-llm-serving is a skill for Claude Code, Codex from Aviator-Coding/home-ops. It costs 102 tokens per session (1,816 once invoked), scanned A, original, MIT.

A guide to serving chat and text-embedding AI models with llama.cpp on an Intel GPU. Embeddings are numeric representations of text used for search and similarity matching.

In plain words
What is it for?
Use it when editing the chat or embedding workloads, changing model-server flags, environment variables, memory requests, image versions, or checking the embedding endpoint.
Why use it?
It prevents memory settings and environment values from silently reverting, causing out-of-memory crashes, leaking resources, or producing invalid embeddings while health checks still pass.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: installed under .agents/ (shared by several agents).

This is Aviator-Coding/home-ops's own configuration. It tells Claude Code and Codex how to work on home-ops itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything home-ops configures →

Reuse

Borrowing it

Nothing to install: this file belongs to Aviator-Coding/home-ops. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/Aviator-Coding/home-ops/main/.agents/skills/b70-llm-serving/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/Aviator-Coding/home-ops

Made for: Claude Code, Codex.

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 b70-llm-serving

README.md
[![agentmods](https://agentmods.dev/badge/skills/aviator-coding/home-ops/b70-llm-serving/github.svg)](https://agentmods.dev/skills/aviator-coding/home-ops/b70-llm-serving)
Your own site
<a href="https://agentmods.dev/skills/aviator-coding/home-ops/b70-llm-serving"><img src="https://agentmods.dev/badge/skills/aviator-coding/home-ops/b70-llm-serving/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 b70-llm-serving

Your own site · 80×15
<a href="https://agentmods.dev/skills/aviator-coding/home-ops/b70-llm-serving"><img src="https://agentmods.dev/badge/skills/aviator-coding/home-ops/b70-llm-serving.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 102 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,816 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.00102 $0.01816
Opus 5.5 $0.00041 $0.00726
Sonnet 5.5 $0.00020 $0.00363
Haiku 4.5 $0.00010 $0.00182

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

Security

Grade A, and why

b70-llm-serving 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 22d 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.

.agents/skills/b70-llm-serving/SKILL.md · 108 lines

How it starts

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

B70 llama.cpp: chat (ai/vllm) and embeddings (ai/embedding-gpu)

Both workloads are ghcr.io/ggml-org/llama.cpp:server-intel-b10820 on the single Arc Pro B70 (devic.es/b70, PCI 0000:03:00.0, device 0xe223). The Service is still named vllm. Chat is llama.cpp, not the vLLM engine: real vLLM OOMs this MoE at warmup (intel/llm-scaler#382). Device nodes, VA-API, and DRA live in skill intel-gpu.

Re-measure both workloads before changing the image tag. The two pins below are invisible when a rename drops them.

Tripwires

  1. Both pin --cache-ram. Absence restores 8192 MiB with no log line. Chat is "4096" plus GLIBC_TUNABLES=glibc.malloc.mmap_threshold=131072. Embeddings are "0" (the cache is write-only there). Do not copy either value onto the other workload. No limits.memory can bound the default: the kernel SIGKILLs at page fault, so llama.cpp's bad_alloc handler never runs. Gates: scripts/ci/vllm-prompt-cache-test.py, scripts/ci/embedding-gpu-prompt-cache-test.py. memory.md
  2. Chat pins GGML_SYCL_FA_ONEDNN: "0". The value must be numeric. ggml parses it with sscanf(" %u"). "false" and "off" leave the leak on. Embeddings do not need the pin (F16 KV, ctx 512, measured flat). Lift it only when the pinned tag bounds the oneDNN partition cache, and recheck the env name on every image bump. Gate: scripts/ci/vllm-fa-onednn-test.py. Post-merge checks are §8a and §8b in memory.md.
  3. Do not pin --parallel or --kv-unified on chat. Auto selects n_parallel=4 and kv_unified=true. Pinning overcommits KV and collapses decode. Embeddings must pin both --parallel 2 and --kv-unified. --parallel alone sets n_ctx_slot to 256, half of --ctx-size. flags.md
  4. Embeddings: --pooling last, no <|endoftext|> in the input, and --ctx-size / -b / -ub stay one triple at 512. Mean pooling is a different vector space. Hand-appended EOS measured worse agreement with the CPU server. Embedding mode forces n_batch = n_ubatch.
  5. Never judge an embedding by shape, length, or non-zero count. A null-filled vector scores 1024/1024 on x != 0 (None != 0 is true; nlohmann renders NaN as bare JSON null). Assert finite and non-zero, and prove the check fails on nulls. /health stays ok. A pod restart clears the NaN state. The root cause is still unattributed and GPU-side. --kv-unified is innocent. embeddings.md
  6. batch_size=4 is the measured-safe embedding point. Larger batches OOM the pod. That fault is still open and is not the NaN drift and not the --cache-ram leak. Do not send a catalog-sized batch at this endpoint. Skill ai-stack for why vmcp stays on CPU.
  7. Throttle embeddings by request rate, not concurrency. 0.5 req/s leaves chat near idle; 4 req/s costs most of chat decode; a full queue collapses it. The cap is the embedding-local LiteLLMModel (rpm, max_parallel_requests, timeout) plus two router settings; contention.md says which and why. --timeout 30 on the server does not bound a request. devic.es/b70 count: 99 is a share token, not a fence. Card memory is held by the chat weights. There is no --gpu-memory-utilization on llama.cpp. contention.md
  8. vllm-embed stays replicas: 0. It is intel/llm-scaler-vllm, not the live embedder. Re-enabling it is a live re-test, not a one line change.
  9. Chat memory request is 12Gi, limit 48Gi. The request is the reservation (baseline plus the cache bound). The limit cannot stop a host leak. VLLMMemoryRetainedAboveBound floors at 8Gi and the live instant series, for: 1h. VLLMMemoryExceedsRequest is ratio

    1 for 30m. Raising --cache-ram without the floor fails CI (scripts/ci/vllm-memory-alert-test.py). Do not raise the request to silence the retained-memory alert.

  10. Inside a devic.es/b70 container, /sys/class/drm/card0 is the iGPU 0xa7a0. The device node is the B70. Read /sys/bus/pci/devices/0000:03:00.0. xe has no VRAM sysfs counters.
  11. A probe script under a Flux-reconciled file must not contain $. envsubst empties ${...} and can take down the Kustomization. Skill flux-substitution.

Read the full file on GitHub · 108 lines

Files

What ships with it

5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

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. 22d ago Changed · +3 lines e006a0fa17ad
  2. 23d ago Changed · +1 lines 467b0950e73c
  3. 25d ago First seen · 104 lines · 102 tokens per session scan A 3d5053cba7c2

Subscribe to this mod's changes

b70-llm-serving is a skill published in the GitHub repository Aviator-Coding/home-ops (3 stars, last pushed today), licensed MIT. It adds 102 tokens to every session and 1,816 once invoked, about $0.0004 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-09-29.

Related

Other skills, from other repositories

apigee-agent-gateway-governance

Stands up an Apigee API proxy that a Google Cloud Agent Gateway calls as an ext-proc (Service Extension) callout on an agent's LLM traffic, to meter token usage per model, extract caller identity, and apply Model Armor prompt screening or a semantic cache. Use when wiring Apigee in as an AI gateway behind an Agent…

google/skills · 222 tokens

ai-pipeline-orchestration

Orchestrate AI/ML pipelines for data ingestion, model training, batch inference, and RAG indexing using Prefect, Airflow, or Dagster.

sickn33/agentic-awesome-skills · 39 tokens

managed-model-endpoints

Register a model service in the managed family — a local model server container the daemon starts/stops on demand, or a remote upstream model API (https). Read the runbook, allocate a port (local only), compose idempotent start/stop scripts (local only), register once. Load when the user wants a model service…

UnicomAI/wanwu · 83 tokens

aws-bedrock

AWS Bedrock — fully managed foundation models on AWS infrastructure. Use when deploying AI in AWS-native environments, needing enterprise compliance (SOC2, HIPAA), running Claude, Llama, Titan, or Mistral on AWS, leveraging Knowledge Bases for RAG, or applying Guardrails for content safety.

TerminalSkills/skills · 65 tokens

cloudflare-vectorize

Serverless vector database at the edge with Cloudflare Vectorize. Use when: building semantic search on Cloudflare Workers, RAG pipelines at the edge, low-latency vector similarity search, or storing and querying embeddings without managing a separate vector database.

TerminalSkills/skills · 56 tokens

cloudflare-ai

You are an expert in Cloudflare Workers AI, the serverless AI inference platform running on Cloudflare's global network. You help developers run LLMs, embedding models, image generation, speech-to-text, and translation models at the edge with zero cold starts, pay-per-use pricing, and integration with Workers, Pages…

TerminalSkills/skills · 81 tokens