Inference Serving
This is a Hermes-native inference-serving workflow skill.
Why This Exists
inference-serving exists so serving an LLM runs as one decided, gated, measured process instead of scattered flag folklore: the engine choice is a table, the deployment is an idempotent runbook whose only completion evidence is the observed verification, and the benchmark speaks the standard metric vocabulary.
Do Not Use When
- A new model generation needs recognition, calibration, routing, and pricing onboarding; use
model-optimization.
- The user wants their own machine's model routing or providers configured; use
model-setup.
- The question is whether a coding runtime/executor can run at all; use
executor-runtime-readiness.
- The goal is application or system performance rather than the serving endpoint itself; use
performance-goal or ultraperf.
Examples
Good example:
- Prompt: Serve Qwen on our two A100s for the team and tell me if prefix caching is worth turning on.
- Expected behavior: Engine verdict (vLLM, TP as a power of two), quantization check, the k8s or docker runbook with its gates and verification, then the prefix-cache A/B protocol with hit-rate assumptions recorded - numbers only from observed runs.
- Why: Serving plus a measured tuning question is exactly the decide-deploy-measure process this workflow owns.
Bad example:
- Prompt: Just tell me the endpoint is fast enough, we already know it works.
- Expected behavior: Refuse the unmeasured claim; run the benchmark protocol against the stated SLO or report the capacity question as unanswered.
- Why: A fast-enough claim without a load shape and observed results is the folklore this skill replaces.
Completion Checklist
- The engine/quantization verdict names the situation-table row it came from and the rejected options.
- Every runbook step's status is prepared or observed, never assumed, and the port invariant was honored.
- Benchmark numbers carry metrics, load shape, dataset, SLO, and saved metadata, or are not reported.
- Anything the workflow started for measurement was stopped, and credentials never appear in artifacts.
Recovery Notes
- If the hardware truth is unknown, probe it first (GPU inventory, VRAM) instead of assuming the engine.
- If deployment verification fails, walk the failure ladder (toolkit, shared memory, permissions, token) before editing manifests.
- If a benchmark misses the verify targets, go to the symptom->flag table and re-measure one change at a time.
Workflow Lane
- Current lane: Research and company ops (
product-docs, source-finder, web-research, research, best-practice-research, autoresearch-goal, model-optimization, inference-serving, +19 more) - research, signals, ops, and briefings.
- If intent belongs to another lane, hand back to
oh-my-hermes or name the adjacent workflow.
- Shared product, routing, compatibility, and evidence rules:
omh-routing/references/skill-common-rail.md.
Use When
Use when a model needs to be served - engine and quantization chosen, docker or Kubernetes deployment prepared as a gated runbook, or the endpoint measured with the TTFT/TPOT/ITL/goodput protocol - and the user wants the process, not an ad-hoc command guess.
Strong routing signals: `inference-serving`, `inference serving`, `serve this model`, `serve the model`, `model serving`, `serving endpoint`, `vllm`, `llama.cpp`, `llama cpp`, `serve with vllm`, `deploy vllm`, `vllm deployment`, `serving benchmark`, `benchmark the endpoint`, `prefix caching benchmark`, `gguf quantization`, `which quantization`, `모델 서빙`, `모델 서빙해줘`, `모델 배포해서 서빙`, `서빙 벤치마크`, `vllm 배포`, `vllm 서빙`, `추론 서버 띄워줘`, `모델 띄워줘`
Catalog Metadata
Category: operations
Phase: inference-serving
Hermes role: operator
Quality tier: observed-command-gated
Reasoning demand: light
Quality bar:
- Decide before deploying: engine from the situation table (vLLM for multi-user NVIDIA APIs, llama.cpp for CPU/Apple Silicon/edge, TensorRT-LLM only with ops budget), quantization to match (AWQ/GPTQ/FP8 vs the GGUF ladder with
Q4_K_M default), tensor parallel a power of two.
- Deploy as the gated runbook: docker's three load-bearing flags (
--ipc=host, HF cache mount, HF_TOKEN) or the Kubernetes five-step (secret gate, existing-deployment gate, apply, rollout+readiness verify, summary+smoke); the port invariant touches four places or it did not change the port.
- Troubleshoot from the symptom table first - slow TTFT to prefix caching/chunked prefill, OOM to gpu-memory-utilization/max-model-len/quantization - before inventing flags.
- Measure with the protocol: TTFT/TPOT/ITL/E2EL as mean/median/P99, goodput against an explicit SLO, one load shape per run, results saved with metadata; the full contract is
omh-inference-serving/references/serving-bench.md.
- Report observed-only: each runbook step is prepared until its command's exit status and output are seen.
Handoff policy:
Keep engine/quantization decisions, runbook preparation, and benchmark design in Hermes; the commands run through the operator's terminal with observed evidence, and repository changes (deploy manifests, benchmark harnesses) are coding work for the selected executor lane. A runbook or benchmark plan is prepared_not_observed until its commands' results are seen.
Required inputs:
- the model id(s) and where the weights live (HF id, local path, gated or not)
- the hardware truth: GPUs and VRAM, or CPU/Apple Silicon, and single- vs multi-user load
- the delivery surface: docker, Kubernetes, or bare process, and the port/ingress constraints
- for benchmarks: the SLO (TTFT/TPOT bounds) and the load shape the number must represent
Expected outputs:
- engine and quantization verdict from the decision tables, with the rejected options named
- deployment runbook with its gates (secret, existing-deployment), verification commands, and the four-places port invariant
- benchmark plan naming metrics, load shape, dataset, and metadata to save
- observed-only status: what ran, what was verified, what stays prepared
Artifact expectations:
- serving decision and runbook per
omh-inference-serving/references/serving-runbooks.md
- benchmark protocol per
omh-inference-serving/references/serving-bench.md
- result files with metadata only after observed runs
Safety rules:
- Never claim the server is up without the observed rollout/readiness or smoke-request evidence.
- Never write credentials into runbooks or results; tokens are referenced (
HF_TOKEN, a named secret), never inlined.
- A healthy probe is not a benchmark; a benchmark number without its load shape and metadata is not reported.
- If the workflow started a server for a benchmark, the workflow stops it.
Runtime Evidence
Preferred harness for this skill: coding-handling.
omh runtime record --skill inference-serving --harness coding-handling --status started
Record observed delegation results; otherwise return not_available or not_observed.
Prepared OMH routing is not execution, review, CI, merge-readiness, or merge evidence.
- Treat wrapper memory/context summaries as advisory local context, not proof of opaque Hermes memory reads or changes.
Preserve workflow intent and stop conditions; verify before claiming completion.
Use Hermes-native subagent/delegation features when available: native subagents -> Hermes delegation when available, otherwise sequential lanes.
Shared product, compatibility, topology, memory, harness, and execution rules: omh-routing/references/skill-common-rail.md. Load it when applicable; otherwise name an unavailable capability.
1---2name: omh-inference-serving3description: [omh] OMH Inference Serving workflow: choose the serving engine and quantization from decision tables, prepare deployment as an idempotent runbook with observed-only verification, and measure the endpoint with the standard TTFT/TPOT/goodput protocol. Use when the user says: inference-serving, inference serving, serve this model, serve the model, model serving, serving endpoint, vllm, llama.cpp.4---5
6# Inference Serving
7
8This is a Hermes-native `inference-serving` workflow skill.
9
10## Why This Exists
11
12`inference-serving` exists so serving an LLM runs as one decided, gated, measured process instead of scattered flag folklore: the engine choice is a table, the deployment is an idempotent runbook whose only completion evidence is the observed verification, and the benchmark speaks the standard metric vocabulary.
13
14## Do Not Use When
15
16- A new model generation needs recognition, calibration, routing, and pricing onboarding; use `model-optimization`.
17- The user wants their own machine's model routing or providers configured; use `model-setup`.
18- The question is whether a coding runtime/executor can run at all; use `executor-runtime-readiness`.
19- The goal is application or system performance rather than the serving endpoint itself; use `performance-goal` or `ultraperf`.
20
21## Examples
22
23Good example:
24
25- Prompt: Serve Qwen on our two A100s for the team and tell me if prefix caching is worth turning on.
26- Expected behavior: Engine verdict (vLLM, TP as a power of two), quantization check, the k8s or docker runbook with its gates and verification, then the prefix-cache A/B protocol with hit-rate assumptions recorded - numbers only from observed runs.
27- Why: Serving plus a measured tuning question is exactly the decide-deploy-measure process this workflow owns.
28
29Bad example:
30
31- Prompt: Just tell me the endpoint is fast enough, we already know it works.
32- Expected behavior: Refuse the unmeasured claim; run the benchmark protocol against the stated SLO or report the capacity question as unanswered.
33- Why: A fast-enough claim without a load shape and observed results is the folklore this skill replaces.
34
35## Completion Checklist
36
37- The engine/quantization verdict names the situation-table row it came from and the rejected options.
38- Every runbook step's status is prepared or observed, never assumed, and the port invariant was honored.
39- Benchmark numbers carry metrics, load shape, dataset, SLO, and saved metadata, or are not reported.
40- Anything the workflow started for measurement was stopped, and credentials never appear in artifacts.
41
42## Recovery Notes
43
44- If the hardware truth is unknown, probe it first (GPU inventory, VRAM) instead of assuming the engine.
45- If deployment verification fails, walk the failure ladder (toolkit, shared memory, permissions, token) before editing manifests.
46- If a benchmark misses the verify targets, go to the symptom->flag table and re-measure one change at a time.
47
48## Workflow Lane
49
50- Current lane: **Research and company ops** (`product-docs`, `source-finder`, `web-research`, `research`, `best-practice-research`, `autoresearch-goal`, `model-optimization`, `inference-serving`, `+19 more`) - research, signals, ops, and briefings.
51- If intent belongs to another lane, hand back to `oh-my-hermes` or name the adjacent workflow.
52- Shared product, routing, compatibility, and evidence rules: `omh-routing/references/skill-common-rail.md`.
53
54## Use When
55
56Use when a model needs to be served - engine and quantization chosen, docker or Kubernetes deployment prepared as a gated runbook, or the endpoint measured with the TTFT/TPOT/ITL/goodput protocol - and the user wants the process, not an ad-hoc command guess.
57
58 Strong routing signals: `inference-serving`, `inference serving`, `serve this model`, `serve the model`, `model serving`, `serving endpoint`, `vllm`, `llama.cpp`, `llama cpp`, `serve with vllm`, `deploy vllm`, `vllm deployment`, `serving benchmark`, `benchmark the endpoint`, `prefix caching benchmark`, `gguf quantization`, `which quantization`, `모델 서빙`, `모델 서빙해줘`, `모델 배포해서 서빙`, `서빙 벤치마크`, `vllm 배포`, `vllm 서빙`, `추론 서버 띄워줘`, `모델 띄워줘`
59
60## Catalog Metadata
61
62Category: `operations`
63Phase: `inference-serving`
64Hermes role: `operator`
65Quality tier: `observed-command-gated`
66Reasoning demand: `light`
67
68Quality bar:
69
70- Decide before deploying: engine from the situation table (vLLM for multi-user NVIDIA APIs, llama.cpp for CPU/Apple Silicon/edge, TensorRT-LLM only with ops budget), quantization to match (AWQ/GPTQ/FP8 vs the GGUF ladder with `Q4_K_M` default), tensor parallel a power of two.
71- Deploy as the gated runbook: docker's three load-bearing flags (`--ipc=host`, HF cache mount, `HF_TOKEN`) or the Kubernetes five-step (secret gate, existing-deployment gate, apply, rollout+readiness verify, summary+smoke); the port invariant touches four places or it did not change the port.
72- Troubleshoot from the symptom table first - slow TTFT to prefix caching/chunked prefill, OOM to gpu-memory-utilization/max-model-len/quantization - before inventing flags.
73- Measure with the protocol: TTFT/TPOT/ITL/E2EL as mean/median/P99, goodput against an explicit SLO, one load shape per run, results saved with metadata; the full contract is `omh-inference-serving/references/serving-bench.md`.
74- Report observed-only: each runbook step is prepared until its command's exit status and output are seen.
75
76Handoff policy:
77
78Keep engine/quantization decisions, runbook preparation, and benchmark design in Hermes; the commands run through the operator's terminal with observed evidence, and repository changes (deploy manifests, benchmark harnesses) are coding work for the selected executor lane. A runbook or benchmark plan is prepared_not_observed until its commands' results are seen.
79
80Required inputs:
81
82- the model id(s) and where the weights live (HF id, local path, gated or not)
83- the hardware truth: GPUs and VRAM, or CPU/Apple Silicon, and single- vs multi-user load
84- the delivery surface: docker, Kubernetes, or bare process, and the port/ingress constraints
85- for benchmarks: the SLO (TTFT/TPOT bounds) and the load shape the number must represent
86
87Expected outputs:
88
89- engine and quantization verdict from the decision tables, with the rejected options named
90- deployment runbook with its gates (secret, existing-deployment), verification commands, and the four-places port invariant
91- benchmark plan naming metrics, load shape, dataset, and metadata to save
92- observed-only status: what ran, what was verified, what stays prepared
93
94Artifact expectations:
95
96- serving decision and runbook per `omh-inference-serving/references/serving-runbooks.md`
97- benchmark protocol per `omh-inference-serving/references/serving-bench.md`
98- result files with metadata only after observed runs
99
100Safety rules:
101
102- Never claim the server is up without the observed rollout/readiness or smoke-request evidence.
103- Never write credentials into runbooks or results; tokens are referenced (`HF_TOKEN`, a named secret), never inlined.
104- A healthy probe is not a benchmark; a benchmark number without its load shape and metadata is not reported.
105- If the workflow started a server for a benchmark, the workflow stops it.
106
107## Runtime Evidence
108
109Preferred harness for this skill: `coding-handling`.
110
111```sh
112omh runtime record --skill inference-serving --harness coding-handling --status started
113```
114
115Record observed delegation results; otherwise return `not_available` or `not_observed`.
116Prepared OMH routing is not execution, review, CI, merge-readiness, or merge evidence.
117- Treat wrapper memory/context summaries as advisory local context, not proof of opaque Hermes memory reads or changes.
118Preserve workflow intent and stop conditions; verify before claiming completion.
119
120Use Hermes-native subagent/delegation features when available: native subagents -> Hermes delegation when available, otherwise sequential lanes.
121
122Shared product, compatibility, topology, memory, harness, and execution rules: `omh-routing/references/skill-common-rail.md`. Load it when applicable; otherwise name an unavailable capability.