Use when choosing an open-weight LLM and clearing it for use — which family and size fit the task, the hardware and the budget, and above all whether the license permits shipping. Owns the license-class map (OSI-open versus custom-community versus non-commercial), the always-verify-the-model-card rule, size-to-VRAM budgeting and the quant formats. This layer decides WHICH model and whether the license allows it, then hands off. NOT downloading or hosting on the Hub (that is `huggingface`), NOT running it locally (that is `ollama`), NOT serving at throughput (that is `vllm`), NOT fine-tuning it (that is `finetuning`).
npx skills add https://github.com/ericrisco/rsc-harness --skill open-weights
This is the CHOICE layer. Given a task, a box, and a shipping constraint, it tells you *which*
open model to reach for and *whether the license lets you ship it*. It does not download, run,
serve, or fine-tune anything — it feeds the skills that do (see Related skills).
**Model names and their licenses change monthly. Never state a license from memory — open the
model card and confirm it, every time.** This file was authored against cards live in mid-2026;
by the time you read it, versions have shipped and terms have moved. So:
the actual LICENSE / terms page for the exact model + size they intend to ship.
perishable part. Weight your trust accordingly.
Real, verified-mid-2026 examples of *why* this rule exists — all confirmed against the source, and
all things that were different at my Jan-2026 cutoff:
(confirmed on ai.google.dev/gemma/terms, accessed
2026-07-18). Same brand, opposite license class depending on version.
Codestral stays non-production (MNPL). Same name, opposite shippability depending on release.
DeepSeek License Agreement with OpenRAIL-style use restrictions** (confirmed on the
not MIT. Same family, different license per model.
If three of the load-bearing facts moved in one release cycle, yours have too. Check the card.
Five gates, in this order. The license gate can veto everything above it, so never fall in love
with a model before you clear it.
embeddings-search.~140 GB; if you have one 24 GB GPU, that model is off the table unless you quantize *and* accept
the quality/throughput cost. Pick a size your box can hold before you compare quality.
front: is this a hobby/internal use, or a commercial product you distribute? "Open weights" does
not mean "open source" and does not guarantee commercial rights. Verify the card.
memory, or CPU/edge. This narrows both size and quant format (GGUF for CPU/Mac/llama.cpp; AWQ/GPTQ
for GPU serving).
ready-made GGUF/AWQ quants on the Hub, is it supported by your runtime (llama.cpp/Ollama/vLLM),
are there fine-tunes and recent downloads? A model with no quants and no runtime support is a
research artifact, not a shippable choice.
Rule of thumb: smallest model that passes your eval wins. Don't reach for 70B when a well-chosen
8B clears the bar — it's cheaper to run, faster, and fits more hardware. Prove it with agent-eval.
Families and *typical* size ladders below. Specific version claims are marked — [verify] at
author time; the family and its rough sizing are the durable part. Full per-family notes,
strengths, and license pointers in references/model-families.md.
| Family | Maker | Typical open sizes | Notes / current line [verify] |
|---|---|---|---|
| Llama | Meta | ~1B–~400B (dense + MoE) | Llama 4 (Scout/Maverick, MoE) current line; custom Community License, gated |
| Qwen | Alibaba | 0.5B–235B+ (dense + MoE), strong Coder/VL | mostly Apache-2.0 but per-size variance — check each card |
| Mistral / Mixtral | Mistral AI | 7B dense, 8x7B/8x22B MoE, "Small/Large" | open ones Apache-2.0; Codestral original = MNPL non-production |
| Gemma | Google | ~1B–~27B, plus PaliGemma/CodeGemma/ShieldGemma | Gemma 1–3 = custom Gemma Terms; Gemma 4 = Apache-2.0 [verify] |
| DeepSeek | DeepSeek | V3-class MoE (~600B+), R1 reasoning, distills | per-model license split — R1 MIT, original V3 custom; verify |
| Phi | Microsoft | ~3B–15B ("mini", reasoning, multimodal) | MIT across the Phi-4 family [verify] |
| gpt-oss | OpenAI | 20B and 120B (MoE, open *weights*) | Apache-2.0 [verify]; OpenAI's first open-weight LLMs since GPT-2 |
| Others | various | — | SmolLM, OLMo (fully-open incl. data), Falcon, Yi, Command — check card |
**This is the load-bearing section. Get it wrong and you ship something you have no right to
ship.** Every model falls into one of three classes. Identify the class, then open the card.
| Class | Examples (class, not a promise) | What it means for shipping |
|---|---|---|
| OSI-open (Apache-2.0, MIT) | Qwen (most), Mistral open, Phi, gpt-oss, DeepSeek-R1, Gemma 4 | Commercial use, modify, redistribute — permissive. Still read the card for attribution/notice. |
| Custom / community | Llama (Meta Community), Gemma 1–3 (Gemma Terms) | Broad free use but with conditions: acceptable-use policy, attribution, sometimes a scale cap. NOT OSI-open. |
| Non-commercial / restricted | original Codestral (MNPL), any "research-only", some RAIL, some "≥$X revenue → buy a license" | You cannot ship it in a commercial product without a separate license. Fatal if missed. |
"Open weights" describes availability of the weights file — it says nothing about your legal rights.
A model can be a free download and still be non-commercial. The download button is not a license.
"Built with Llama" attribution requirement on derivatives/products, naming rules, and a
>700M-monthly-active-users clause (above that you must request a separate license from Meta,
granted at Meta's discretion). Gated on the Hub (accept terms first). Verify the *current* Llama
version's terms — Meta has revised them across releases.
duty to pass the restrictions downstream to every user and to ship the terms/notice file.
Gemma 4 reportedly moved to Apache-2.0 — a textbook reason to check the version's card.
largest or a special tier) carried a separate Qwen license instead of Apache. **Check each size's
card** — do not assume "Qwen = Apache" for the whole family.
(non-production) — free for research/eval, not for commercial deployment. Codestral 2**
was relicensed Apache-2.0; verify which Codestral release you actually have. Note some newer
Mistral models use a "Modified MIT" with a revenue-threshold commercial clause — verify.
original DeepSeek-V3 weights ship under a **custom DeepSeek License Agreement with OpenRAIL-
style use-based restrictions**. "DeepSeek = MIT" is too simple — verify the specific model.
LICENSE / terms — not a blog, not this file.MAU/revenue caps, downstream pass-through duty) and can meet them.
fine-tune still owes "Built with Llama"; a distill can inherit the teacher's terms).
Deeper class breakdown, gated-model mechanics, and the fine-tune-inheritance trap:
references/licenses.md.
A selection-time budget: will this size class even fit your hardware? (Operational per-request
KV-cache math lives in ollama/vllm — this is the "before I pick it" estimate.)
weights_GB ≈ params(B) × bytes_per_param # then add KV cache + runtime overhead on top
fp16/bf16 → 2.0 (≈ 2 GB per 1B params)
8-bit → ~1.0 (≈ 1 GB per 1B params)
4-bit → ~0.6 (≈ 0.6 GB per 1B + cache + overhead; conservative ~0.5–0.6/param)
What that means per hardware class (weights only — leave headroom for context/KV cache):
| Hardware | fp16 ceiling | Practical pick (4-bit) |
|---|---|---|
| 8 GB consumer GPU | ~3B | 7–8B at 4-bit (~5 GB) |
| 16 GB | ~7B | 13–14B at 4-bit |
| 24 GB (e.g. 3090/4090) | ~10B | ~32B at 4-bit (~20 GB) |
| 80 GB (A100/H100) | ~34B | 70B at 4-bit (~40 GB), or a big-MoE like gpt-oss-120b |
| Apple unified (e.g. 64 GB) | shares with the OS | budget against total unified memory |
| multi-GPU / 2×80 GB+ | 70B fp16 (~140 GB) via tensor-parallel | full-precision large models |
A 70B at fp16 is ~140 GB — it does not fit one GPU. You either quantize (4-bit ≈ ~40 GB, fits one
80 GB card) or split across GPUs with tensor parallelism (that's a vllm job). Longer context
grows the KV cache *on top of* weights, so keep a margin. Full derivation + KV math:
references/sizing-and-quant.md.
Quantization shrinks weights (fewer bits/param) to fit smaller hardware, trading a little quality.
Which format you pick is driven by your runtime:
| Format | Where it runs | Use it for |
|---|---|---|
| GGUF | llama.cpp, Ollama, LM Studio | CPU, Apple Silicon, single-box local; the everyday local format |
| AWQ | vLLM, TGI, transformers | GPU serving — activation-aware 4-bit, strong quality/latency |
| GPTQ | vLLM, TGI, transformers | GPU serving — older, widely available 4-bit |
| bitsandbytes (NF4) | transformers | quick load-time 4/8-bit for experiments/fine-tuning |
| EXL2 | ExLlamaV2 | flexible bit-rates on consumer GPUs |
Decoding a GGUF quant tag like Q4_K_M: Q4 = ~4-bit weights; _K = a k-quant (mixed
precision — keeps the more sensitive tensors at higher bit-depth); _M = the medium size/quality
tier (_S smaller/lower, _L larger/higher). Q4_K_M is the standard default — roughly half
the memory of fp16 for a few percent quality loss. Q8_0 is near-lossless (~1 byte/param); below
Q4, quality drops off fast. Don't go sub-Q4 to force a too-big model onto a too-small box — pick a
smaller model instead. More in references/sizing-and-quant.md.
You've chosen a model and cleared its license. Now hand off — this skill stops here.
huggingface (Hub download/upload, Inference Providers,endpoints). Also where you convert to GGUF.
ollama.vllm.finetuning.agent-eval.The Hub filters (task + license + size + recent downloads) and the Ollama library are where you
actually find candidates — that mechanics lives in huggingface / ollama, not here.
version, per size, and per release month.
Llama" or the acceptable-use policy; a distill can inherit the teacher model's terms.
under their conditions; a "research-only" card is restricted regardless of gating.
real context. Choose a size that fits.
VRAM for *all* experts — size against total params, not active.
huggingface — get/host: Hub download/upload, Inference Providers, endpoints, GGUFconversion. This skill tells you *which* repo to pull; huggingface pulls it.
ollama — run one model locally (GGUF, single box, VRAM sizing at request time). This skillsays which model + quant *class* fits; ollama runs it and does the KV-cache math.
vllm — serve at throughput, batching, tensor-parallel for models too big for one GPU.finetuning — adapt a chosen base with LoRA/QLoRA/SFT. Choose+clear the base here first.running, serving, or training — it feeds those four.
Q4_K_M default).huggingface (get), ollama (run local), vllm (serve), finetuning (adapt).Take ericrisco/open-weights from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.