Why wait for someone to optimize an LLM for your GPU when an AI agent can build a specialized inference engine in a few hours?
Python
7
4 commits
updated Oct 19, 2026
Summary • Quick start • What crit solves • Case studies • Methodology • crit-hub • Serving • Limitations • Documentation
crit is a toolkit for developers and coding agents to quickly build inference engines
tailored to your model and hardware.
[!IMPORTANT] Combines a runtime foundation, reusable techniques, kernel discovery and physics-based evaluation. In our first case study, a coding agent built an engine for Qwen3.8-27B on one RTX 5090 in about 3.5 hours and five candidates, reaching 216 tok/s decode with the model's full 262,144-token context. You get runnable source, measured candidate comparisons and an OpenAI-compatible API. Follow the building guide yourself, or give your coding agent the agent instructions, target model and hardware.
Give this prompt to your coding agent and specify your target LLM:
Use github.com/crit-labs/crit to build an optimized inference engine.
crit solvesLess time building an engine. More performance from your hardware.
The boring stuff has already been built ⏱️
Requests, memory management and cleanup eat up development time before optimization even starts.
critsupplies a clean foundation so you can get to the work that makes your engine fast.
Curated high-impact inference strategies 📊
Don't rebuild inference strategies from scratch. We studied established tailored engines and distilled their core speedup strategies into reusable code, so you can apply what works to your model and hardware.
Physics-based evaluation suite 🔬
A benchmark score alone doesn't tell you what's still left on the table.
critmeasures your hardware's limits and shows how close your engine gets, with quality and correctness checks along the way.
[!NOTE] Find the referenced engines in our
crit-hubrepository.
We gave Claude Opus 5.5 a target LLM along with the crit repository and let it cook autonomously.
| What it shows | Evidence |
|---|---|
crit engines are fast | Qwen3.8-27B decodes at 216 tok/s and prefills at 8,917 tok/s |
| Dense and MoE models | Dense: Qwen3.8-27B and Gemma 4 31B. Mixture-of-experts larger than VRAM: Qwen3.8-Flash-Next (102 GB) and Nemotron 3.5 Super 120B (75 GB) |
| Different architectures | Qwen (gated DeltaNet and attention), Gemma (sliding-window and full attention), Nemotron (Mamba-2 and latent MoE) |
| Hours, not weeks | Qwen3.8-27B in 3h 33m, Gemma 4 31B in 5h 24m, from the first command to the selected engine |
Goal: Get to a fast, working engine for a dense model as quickly as possible. Limit: A fixed candidate budget.
|
3h 33m Development to selection |
216 tok/s Decode |
8,917 tok/s Prefill |
262,144 tok Context |
+0.3% Perplexity vs reference |
0.0094 Mean KL divergence |
mtp7-fp8attn
runs Qwen3.8-27B in its original NVFP4 weights on one RTX 5090, with the model's full 262,144
tokens of context. One coding agent built it from scratch in a single crit run, writing its
own kernels on Core without using another inference engine as a reference. It speeds up
decoding with the model's own built-in draft layer, used as released.
| Candidate | What changed | Decode | Prefill | First token |
|---|---|---|---|---|
| 1 | Working engine: reads the checkpoint as stored, 8-bit KV cache, drafts 4 tokens ahead | 174 tok/s | 5,177 tok/s | 181 ms |
| 2 | Draft layer in 4-bit, draft width adapted per request, fused decode passes | 218 tok/s | 7,530 tok/s | 138 ms |
| 3 | 8-bit prompt attention scores, fastest matrix-multiply variant recorded per shape | 217 tok/s | 8,113 tok/s | 127 ms |
| 4 | 8-bit decode attention, faster prompt epilogues and convolution | 216 tok/s | 8,674 tok/s | 120 ms |
| 5 | Prompt attention fully in 8-bit; decode attention from 4 reverted | 216 tok/s | 8,917 tok/s | 120 ms |
Measured with crit Eval at the full 262,144-token context. Decode is the geometric mean over six prompts, from a chat question to a 14K-token agent session.
Goal: Get to a fast, working engine for a dense model of a different architecture. Limit: A fixed candidate budget.
|
5h 24m Development to selection |
261 tok/s Decode |
8,326 tok/s Prefill |
262,144 tok Context |
+4.6% Perplexity vs reference |
0.025 Mean KL divergence |
assistant6-fp8qk
runs Gemma 4 31B-IT on one RTX 5090 with the model's full 262,144 tokens of context. Gemma mixes 50
sliding-window layers with 10 full-attention layers whose keys equal their values, and its hidden
states overflow FP16, so little carries over from the Qwen engines. The NVFP4 MLPs are used as
stored; the BF16 attention projections and output head are re-encoded to FP8 at load, because as
stored they don't fit next to a 262K KV cache. It drafts 6 tokens ahead with Google's own assistant
model, used as released.
| Candidate | What changed | Decode | Prefill | First token |
|---|---|---|---|---|
| 1 | Working engine: FP8 attention and head, NVFP4 MLPs as stored, drafts 6 tokens ahead | 253 tok/s | 7,428 tok/s | 123 ms |
| 2 | Long prompts scored, full attention reads one shared key/value cache | 252 tok/s | 7,779 tok/s | 120 ms |
| 3 | 4-bit prompt activations scaled per row (candidate 2's shared scales missed the quality budget) | 261 tok/s | 7,609 tok/s | 119 ms |
| 4 | 8-bit query-key products for full-attention prompts, two-stage argmax over the head | 267 tok/s | 8,471 tok/s | 114 ms |
| 5 | Candidate 4's engine, with Gemma's tool-call syntax carried by the package | 261 tok/s | 8,326 tok/s | 116 ms |
Measured with crit Eval at the full 262,144-token context. Candidates 4 and 5 run the same code; their difference is run-to-run variation.
Goal: Quickly build a fast engine for an MoE model whose weights don't fit in VRAM. Limit: A fixed candidate budget.
|
13h 56m Development to selection |
84.5 tok/s Decode |
1,801 tok/s Prefill |
262,144 tok Context |
+0.03% Perplexity vs reference |
0.0012 Mean KL divergence |
mtp3-expert-cache
runs Qwen3.8-Flash-Next, a 102 GB mixture-of-experts checkpoint with 512 NVFP4 experts per
layer, on one 32 GB RTX 5090 with the model's full 262,144 tokens of context. The weights are
used as stored: attention, the shared expert and the KV cache stay on the GPU, the routed
experts (about 61 GB) sit in pinned host memory, and a GPU cache of about 7,800 slots holds the
hot ones. The coding agent wrote it from scratch on Core, again without another inference engine
as a reference, and drafts 3 tokens ahead with the model's own MTP block, used as released.
| Candidate | What changed | Decode | Prefill | First token |
|---|---|---|---|---|
| 1 | Working engine: stored formats, experts in host memory behind a GPU cache | 36 tok/s | 1,098 tok/s | 2.19 s |
| 2 | Drafts 3 tokens ahead, decode in CUDA graphs, unused KV space lent to the expert cache | 82 tok/s | 1,916 tok/s | 1.63 s |
| 3 | Weights decoded once per pass, CPU share of short prompts' experts | 81 tok/s | 1,744 tok/s | 1.43 s |
| 4 | Second run, from candidate 2 with candidate 3's exact changes | 80 tok/s | 1,737 tok/s | 1.79 s |
| 5 | Faster decode GEMVs and expert sums, 8-bit KV cache (superseded: incorrect after prompts of 512+ tokens: prefetched experts used before their scales were set) | 88 tok/s | 1,818 tok/s | 1.60 s |
| 6 | Prefetched experts' scales initialized before cache use; 2 GiB VRAM margin | 84.5 tok/s | 1,801 tok/s | 1.61 s |
Measured with crit Eval at the full 262,144-token context. The work took two crit runs back to
back, from 14:37 to 04:34. The first run's request asked for 1 GiB of free VRAM instead of the
machine's 0.3 GiB, so none of its candidates qualified, and the second continued from its
candidate 2. Candidate 5 was selected first, but an audit found it reused prefetched experts
before their scales were initialized, so generation after prompts of 512 or more tokens was
wrong; Eval's prompts and scoring paths never decoded after such a prompt. Candidate 6 fixes it
and replaces candidate 5 in crit-hub.
Goal: Build a fast engine for a 120B hybrid Mamba and mixture-of-experts model whose weights don't fit in VRAM. Limit: A fixed candidate budget.
|
10h 46m Development to selection |
42.5 tok/s Decode |
3,035 tok/s Prefill |
262,144 tok Context |
+0.7% Perplexity vs reference |
0.0051 Mean KL divergence |
mtp3-cpu-experts
runs Nemotron 3.5 Super VL 120B-A12B (text path) on one RTX 5090 with 262,144 tokens of context. Its
layers are 40 Mamba-2 mixers, 40 latent mixture-of-experts layers with 512 NVFP4 experts each (22
per token) and 8 attention layers. The checkpoint is 75 GB, 63 GB of it routed experts, used as
stored: they sit in pinned host memory behind a GPU cache of about 7,150 slots, and 6 CPU cores
compute 60% of each pass's cache misses with the GPU's exact operation order, so the output does not
depend on where a miss runs. It drafts 3 tokens ahead with the model's own MTP block, used as released.
| Candidate | What changed | Decode | Prefill | First token |
|---|---|---|---|---|
| 1 | Working engine without drafting, experts in host memory (superseded: forgot content beyond 64K tokens) | 28.8 tok/s | 1,605 tok/s | 2.47 s |
| 2 | Drafts 3 tokens ahead, CPU share of expert misses, the model's own Mamba time-step limit | 40.8 tok/s | 2,373 tok/s | 2.22 s |
| 3 | 4-bit prompt experts on CUTLASS grouped GEMMs, 8-bit prompt GEMMs | 44.2 tok/s | 3,149 tok/s | 1.88 s |
| 4 | 8-bit prompt attention, CPU share of short prompts' experts, one copy of the experts in RAM | 42.5 tok/s | 3,035 tok/s | 1.83 s |
Measured with crit Eval. Candidates 1 and 2 were built for a 1,048,576-token context; the work then
moved to a second crit run at 262,144 tokens, which re-measured candidate 3 and built candidate 4.
Candidates 3 and 4 differ only in the prompt path, so their decode difference is run-to-run
variation. The development time leaves out about 5h 25m with no work in progress: an idle stretch
in the night, and a PC restart (an engine and the FP32 reference together had exhausted host
memory) followed by a pause until the work was resumed.
We studied working tailored engines and where specialization makes them fast. The runtime every engine needs became Core. Techniques whose value depends on model and hardware became Inference entries, with their assumptions made explicit.
Core provides what every engine needs: request scheduling, memory tracking, output delivery and safe cleanup. Your engine owns the model, tokenizer and layouts, and calls Core's libraries for sampling, state cache and model files. The native runtime supports generation and scoring, with optional CUDA and concurrent requests. Try the Core + Inference walkthrough.
Inference holds techniques with explanations, implementation code and worked examples. Start from a bottleneck:
Each technique says when it helps, what is tested and what your engine supplies.
Kernels helps you find and assess existing kernels for your data format and hardware, including the Hugging Face Kernel Hub. It checks declared compatibility, shows mismatches and gaps, and retains chosen artifacts with exact versions and license notices. Your engine then measures whether the kernel helps.
Models produces transformed weights when a run allows them, starting with post-training quantization to FP8 or NVFP4 (round-to-nearest or GPTQ). It exports a checkpoint engines can read, runs it in your engine through Eval against the original model, and records the recipe, calibration data, seed, file hashes and cost.
Eval gives engines a common set of tests: fixed prompts, output lengths and a shared quality reference per model.
Results keep samples, settings and skipped cases visible.
crit-hub collects crit-based inference engines in one repository
to make discovery super easy. Each engine ships runnable source, the exact checkpoint it was built on, what
was measured, its known limits and a link to the repository of whoever contributed it.
crit serve loads a sealed candidate, keeps it resident and answers OpenAI-compatible
chat requests, including streaming, stop strings and structured output. Engines
implement the adapter contract.
| Area | Current status |
|---|---|
| Multi-GPU setups | Expected to work with engine-specific partitioning and communication; not yet tested end to end. |
| macOS | Not yet tested. Current CI covers Windows and Linux. |
| AMD and Apple GPUs | No bundled ROCm or Metal backend. The current GPU backend uses CUDA. |
| To… | Read |
|---|---|
| Build and compare engines | Building engines · Agent instructions · Run records |
| Integrate the native runtime | Core · Contracts · Core + Inference walkthrough |
| Choose or adapt a technique | Inference |
| Find and adapt kernels | Kernels |
| Quantize weights and record the transform | Models |
| Compare speed, quality and speculative output | Eval |
| Serve an engine as an OpenAI-compatible API | Serving · Adapter contract |
Change crit or run its tests | What belongs in crit · Contributing · Licensing |
| See release history | Changelog |
Why wait for someone to optimize an LLM for your GPU when an AI agent can build a specialized inference engine in a few hours?
Python
7
4 commits
updated Oct 19, 2026
Summary • Quick start • What crit solves • Case studies • Methodology • crit-hub • Serving • Limitations • Documentation
crit is a toolkit for developers and coding agents to quickly build inference engines
tailored to your model and hardware.
[!IMPORTANT] Combines a runtime foundation, reusable techniques, kernel discovery and physics-based evaluation. In our first case study, a coding agent built an engine for Qwen3.8-27B on one RTX 5090 in about 3.5 hours and five candidates, reaching 216 tok/s decode with the model's full 262,144-token context. You get runnable source, measured candidate comparisons and an OpenAI-compatible API. Follow the building guide yourself, or give your coding agent the agent instructions, target model and hardware.
Give this prompt to your coding agent and specify your target LLM:
Use github.com/crit-labs/crit to build an optimized inference engine.
crit solvesLess time building an engine. More performance from your hardware.
The boring stuff has already been built ⏱️
Requests, memory management and cleanup eat up development time before optimization even starts.
critsupplies a clean foundation so you can get to the work that makes your engine fast.
Curated high-impact inference strategies 📊
Don't rebuild inference strategies from scratch. We studied established tailored engines and distilled their core speedup strategies into reusable code, so you can apply what works to your model and hardware.
Physics-based evaluation suite 🔬
A benchmark score alone doesn't tell you what's still left on the table.
critmeasures your hardware's limits and shows how close your engine gets, with quality and correctness checks along the way.
[!NOTE] Find the referenced engines in our
crit-hubrepository.
We gave Claude Opus 5.5 a target LLM along with the crit repository and let it cook autonomously.
| What it shows | Evidence |
|---|---|
crit engines are fast | Qwen3.8-27B decodes at 216 tok/s and prefills at 8,917 tok/s |
| Dense and MoE models | Dense: Qwen3.8-27B and Gemma 4 31B. Mixture-of-experts larger than VRAM: Qwen3.8-Flash-Next (102 GB) and Nemotron 3.5 Super 120B (75 GB) |
| Different architectures | Qwen (gated DeltaNet and attention), Gemma (sliding-window and full attention), Nemotron (Mamba-2 and latent MoE) |
| Hours, not weeks | Qwen3.8-27B in 3h 33m, Gemma 4 31B in 5h 24m, from the first command to the selected engine |
Goal: Get to a fast, working engine for a dense model as quickly as possible. Limit: A fixed candidate budget.
|
3h 33m Development to selection |
216 tok/s Decode |
8,917 tok/s Prefill |
262,144 tok Context |
+0.3% Perplexity vs reference |
0.0094 Mean KL divergence |
mtp7-fp8attn
runs Qwen3.8-27B in its original NVFP4 weights on one RTX 5090, with the model's full 262,144
tokens of context. One coding agent built it from scratch in a single crit run, writing its
own kernels on Core without using another inference engine as a reference. It speeds up
decoding with the model's own built-in draft layer, used as released.
| Candidate | What changed | Decode | Prefill | First token |
|---|---|---|---|---|
| 1 | Working engine: reads the checkpoint as stored, 8-bit KV cache, drafts 4 tokens ahead | 174 tok/s | 5,177 tok/s | 181 ms |
| 2 | Draft layer in 4-bit, draft width adapted per request, fused decode passes | 218 tok/s | 7,530 tok/s | 138 ms |
| 3 | 8-bit prompt attention scores, fastest matrix-multiply variant recorded per shape | 217 tok/s | 8,113 tok/s | 127 ms |
| 4 | 8-bit decode attention, faster prompt epilogues and convolution | 216 tok/s | 8,674 tok/s | 120 ms |
| 5 | Prompt attention fully in 8-bit; decode attention from 4 reverted | 216 tok/s | 8,917 tok/s | 120 ms |
Measured with crit Eval at the full 262,144-token context. Decode is the geometric mean over six prompts, from a chat question to a 14K-token agent session.
Goal: Get to a fast, working engine for a dense model of a different architecture. Limit: A fixed candidate budget.
|
5h 24m Development to selection |
261 tok/s Decode |
8,326 tok/s Prefill |
262,144 tok Context |
+4.6% Perplexity vs reference |
0.025 Mean KL divergence |
assistant6-fp8qk
runs Gemma 4 31B-IT on one RTX 5090 with the model's full 262,144 tokens of context. Gemma mixes 50
sliding-window layers with 10 full-attention layers whose keys equal their values, and its hidden
states overflow FP16, so little carries over from the Qwen engines. The NVFP4 MLPs are used as
stored; the BF16 attention projections and output head are re-encoded to FP8 at load, because as
stored they don't fit next to a 262K KV cache. It drafts 6 tokens ahead with Google's own assistant
model, used as released.
| Candidate | What changed | Decode | Prefill | First token |
|---|---|---|---|---|
| 1 | Working engine: FP8 attention and head, NVFP4 MLPs as stored, drafts 6 tokens ahead | 253 tok/s | 7,428 tok/s | 123 ms |
| 2 | Long prompts scored, full attention reads one shared key/value cache | 252 tok/s | 7,779 tok/s | 120 ms |
| 3 | 4-bit prompt activations scaled per row (candidate 2's shared scales missed the quality budget) | 261 tok/s | 7,609 tok/s | 119 ms |
| 4 | 8-bit query-key products for full-attention prompts, two-stage argmax over the head | 267 tok/s | 8,471 tok/s | 114 ms |
| 5 | Candidate 4's engine, with Gemma's tool-call syntax carried by the package | 261 tok/s | 8,326 tok/s | 116 ms |
Measured with crit Eval at the full 262,144-token context. Candidates 4 and 5 run the same code; their difference is run-to-run variation.
Goal: Quickly build a fast engine for an MoE model whose weights don't fit in VRAM. Limit: A fixed candidate budget.
|
13h 56m Development to selection |
84.5 tok/s Decode |
1,801 tok/s Prefill |
262,144 tok Context |
+0.03% Perplexity vs reference |
0.0012 Mean KL divergence |
mtp3-expert-cache
runs Qwen3.8-Flash-Next, a 102 GB mixture-of-experts checkpoint with 512 NVFP4 experts per
layer, on one 32 GB RTX 5090 with the model's full 262,144 tokens of context. The weights are
used as stored: attention, the shared expert and the KV cache stay on the GPU, the routed
experts (about 61 GB) sit in pinned host memory, and a GPU cache of about 7,800 slots holds the
hot ones. The coding agent wrote it from scratch on Core, again without another inference engine
as a reference, and drafts 3 tokens ahead with the model's own MTP block, used as released.
| Candidate | What changed | Decode | Prefill | First token |
|---|---|---|---|---|
| 1 | Working engine: stored formats, experts in host memory behind a GPU cache | 36 tok/s | 1,098 tok/s | 2.19 s |
| 2 | Drafts 3 tokens ahead, decode in CUDA graphs, unused KV space lent to the expert cache | 82 tok/s | 1,916 tok/s | 1.63 s |
| 3 | Weights decoded once per pass, CPU share of short prompts' experts | 81 tok/s | 1,744 tok/s | 1.43 s |
| 4 | Second run, from candidate 2 with candidate 3's exact changes | 80 tok/s | 1,737 tok/s | 1.79 s |
| 5 | Faster decode GEMVs and expert sums, 8-bit KV cache (superseded: incorrect after prompts of 512+ tokens: prefetched experts used before their scales were set) | 88 tok/s | 1,818 tok/s | 1.60 s |
| 6 | Prefetched experts' scales initialized before cache use; 2 GiB VRAM margin | 84.5 tok/s | 1,801 tok/s | 1.61 s |
Measured with crit Eval at the full 262,144-token context. The work took two crit runs back to
back, from 14:37 to 04:34. The first run's request asked for 1 GiB of free VRAM instead of the
machine's 0.3 GiB, so none of its candidates qualified, and the second continued from its
candidate 2. Candidate 5 was selected first, but an audit found it reused prefetched experts
before their scales were initialized, so generation after prompts of 512 or more tokens was
wrong; Eval's prompts and scoring paths never decoded after such a prompt. Candidate 6 fixes it
and replaces candidate 5 in crit-hub.
Goal: Build a fast engine for a 120B hybrid Mamba and mixture-of-experts model whose weights don't fit in VRAM. Limit: A fixed candidate budget.
|
10h 46m Development to selection |
42.5 tok/s Decode |
3,035 tok/s Prefill |
262,144 tok Context |
+0.7% Perplexity vs reference |
0.0051 Mean KL divergence |
mtp3-cpu-experts
runs Nemotron 3.5 Super VL 120B-A12B (text path) on one RTX 5090 with 262,144 tokens of context. Its
layers are 40 Mamba-2 mixers, 40 latent mixture-of-experts layers with 512 NVFP4 experts each (22
per token) and 8 attention layers. The checkpoint is 75 GB, 63 GB of it routed experts, used as
stored: they sit in pinned host memory behind a GPU cache of about 7,150 slots, and 6 CPU cores
compute 60% of each pass's cache misses with the GPU's exact operation order, so the output does not
depend on where a miss runs. It drafts 3 tokens ahead with the model's own MTP block, used as released.
| Candidate | What changed | Decode | Prefill | First token |
|---|---|---|---|---|
| 1 | Working engine without drafting, experts in host memory (superseded: forgot content beyond 64K tokens) | 28.8 tok/s | 1,605 tok/s | 2.47 s |
| 2 | Drafts 3 tokens ahead, CPU share of expert misses, the model's own Mamba time-step limit | 40.8 tok/s | 2,373 tok/s | 2.22 s |
| 3 | 4-bit prompt experts on CUTLASS grouped GEMMs, 8-bit prompt GEMMs | 44.2 tok/s | 3,149 tok/s | 1.88 s |
| 4 | 8-bit prompt attention, CPU share of short prompts' experts, one copy of the experts in RAM | 42.5 tok/s | 3,035 tok/s | 1.83 s |
Measured with crit Eval. Candidates 1 and 2 were built for a 1,048,576-token context; the work then
moved to a second crit run at 262,144 tokens, which re-measured candidate 3 and built candidate 4.
Candidates 3 and 4 differ only in the prompt path, so their decode difference is run-to-run
variation. The development time leaves out about 5h 25m with no work in progress: an idle stretch
in the night, and a PC restart (an engine and the FP32 reference together had exhausted host
memory) followed by a pause until the work was resumed.
We studied working tailored engines and where specialization makes them fast. The runtime every engine needs became Core. Techniques whose value depends on model and hardware became Inference entries, with their assumptions made explicit.
Core provides what every engine needs: request scheduling, memory tracking, output delivery and safe cleanup. Your engine owns the model, tokenizer and layouts, and calls Core's libraries for sampling, state cache and model files. The native runtime supports generation and scoring, with optional CUDA and concurrent requests. Try the Core + Inference walkthrough.
Inference holds techniques with explanations, implementation code and worked examples. Start from a bottleneck:
Each technique says when it helps, what is tested and what your engine supplies.
Kernels helps you find and assess existing kernels for your data format and hardware, including the Hugging Face Kernel Hub. It checks declared compatibility, shows mismatches and gaps, and retains chosen artifacts with exact versions and license notices. Your engine then measures whether the kernel helps.
Models produces transformed weights when a run allows them, starting with post-training quantization to FP8 or NVFP4 (round-to-nearest or GPTQ). It exports a checkpoint engines can read, runs it in your engine through Eval against the original model, and records the recipe, calibration data, seed, file hashes and cost.
Eval gives engines a common set of tests: fixed prompts, output lengths and a shared quality reference per model.
Results keep samples, settings and skipped cases visible.
crit-hub collects crit-based inference engines in one repository
to make discovery super easy. Each engine ships runnable source, the exact checkpoint it was built on, what
was measured, its known limits and a link to the repository of whoever contributed it.
crit serve loads a sealed candidate, keeps it resident and answers OpenAI-compatible
chat requests, including streaming, stop strings and structured output. Engines
implement the adapter contract.
| Area | Current status |
|---|---|
| Multi-GPU setups | Expected to work with engine-specific partitioning and communication; not yet tested end to end. |
| macOS | Not yet tested. Current CI covers Windows and Linux. |
| AMD and Apple GPUs | No bundled ROCm or Metal backend. The current GPU backend uses CUDA. |
| To… | Read |
|---|---|
| Build and compare engines | Building engines · Agent instructions · Run records |
| Integrate the native runtime | Core · Contracts · Core + Inference walkthrough |
| Choose or adapt a technique | Inference |
| Find and adapt kernels | Kernels |
| Quantize weights and record the transform | Models |
| Compare speed, quality and speculative output | Eval |
| Serve an engine as an OpenAI-compatible API | Serving · Adapter contract |
Change crit or run its tests | What belongs in crit · Contributing · Licensing |
| See release history | Changelog |