# Quartermaster autogen control file — Go port of Generate-Config.ps1 params + $Overrides. # settings: global tuning knobs (CLI --models-dir overrides settings.modelsRoot). # overrides: per-model tweaks gguf metadata can't supply; first match wins. # # Copy this to quartermaster-generate.yaml and edit modelsRoot / serverExe for # your machine, then add overrides for your own models. The server auto-discovers # every *.gguf under modelsRoot; overrides are optional tweaks on top. settings: # Folder scanned recursively for *.gguf models. Leave blank to start with an # empty catalog and pick a folder later in the setup UI. modelsRoot: "" # Path to llama.cpp's llama-server executable. serverExe: llama-server # targetVramGB: the VRAM a model's whole footprint (weights + KV + compute # buffers + overhead) must fit under. Left UNSET on purpose: with no value # here the budget is measured from your card's free VRAM, by the setup wizard # on first run and at every startup otherwise, so a card of any size is used # in full. Uncomment it only to pin a ceiling BELOW what the card has - a # number written here is read as your deliberate choice and is never # re-measured behind your back. # targetVramGB: 7 # autoVram: measure free VRAM at startup and cap targetVramGB at it. The # reading is used in full - vramOverheadGB is charged inside the plan, not # deducted again here. Only ever tightens: a smaller static targetVramGB above # stays a deliberate ceiling. Forces a regen each boot to keep the snapshot # current. Leave false to use the static targetVramGB above. autoVram: false # vramOverheadGB: small slack held back from targetVramGB for allocator # fragmentation / CUDA spikes. targetVramGB already accounts for system/desktop # VRAM, so this does NOT need to reserve room for the OS — keep it small. vramOverheadGB: 0.5 # maxRamGB: the RAM ceiling a plan may spill CPU-offloaded weights and KV into. # Unset and measured exactly like targetVramGB above, from the memory actually # available on this machine. A shipped 24 was worse than no value at all on a # 16 GB box: a ceiling the machine cannot honour never binds, so the guard that # is supposed to stop a plan from swapping stopped nothing. Uncomment only to # pin a lower ceiling. # maxRamGB: 24 moeCtxTarget: 65536 # denseCtxLadder: the TOP rung is the context ceiling the sizer may grow a dense # model to; within it the largest window whose KV cache fits the VRAM budget # wins. Keep the top at or above the trained window of your largest-context # model or that model is pinned below its own ceiling with VRAM left unused. denseCtxLadder: [1048576, 524288, 262144, 131072, 65536, 32768] denseMinCtx: 32768 threads: 7 ttlSec: 600 healthCheckTimeout: 300 # groups: split emitted models across named groups, each optionally bound to a # separate listen address. Membership is by model-name glob (first match wins, # so list specific groups before a "*" catch-all). Models matching nothing go # to an implicit "default" group (no listener). All groups are exclusive swap # groups, so loading on any port evicts the others (one GPU, VRAM-exclusive). # Omit entirely for one group on one port. Example — variants on a second port: # groups: # - { name: variants, listen: 0.0.0.0:1251, match: ["*-game", "*-judge"] } # - { name: assistant, listen: 0.0.0.0:1250, match: ["*"] } # extraModels: hand-written model blocks for a server autogen has no backend # kind for (any OpenAI-compatible engine, e.g. Strata). Same shape as a # config.yaml model entry, copied into the generated config as written so a # regen keeps it. Nothing is sized for you: cmd and estVramGB (or estRamGB for # a CPU-only server) are required, since the estimate is all the scheduler # knows about it. Entries join the swap groups like any discovered model. A # bad entry (unknown key, name already taken) is skipped with a # "# SKIPPED" comment in config.yaml instead of breaking startup. # extraModels: # strata-qwen3-32b: # cmd: > # D:/strata/strata-server.exe --port ${PORT} # --model D:/models/Qwen3-32B # proxy: http://127.0.0.1:${PORT} # checkEndpoint: /v1/models # estVramGB: 20 # Per-model overrides — optional. Each entry matches discovered gguf paths by # glob (first match wins). Fields: quant (pick a quant when several exist), # aliases (extra model IDs), spec (e.g. draft-mtp), reasoningFmt, ctxVariants # (emit extra context-size variants), skip (exclude a match). Examples: # overrides: # - { match: "*-draft-*", skip: true } # - { match: "*Qwen3-8B-GGUF*", quant: Q6_K } # - { match: "*Gemma-12B-it-GGUF*", quant: Q4_K_M, reasoningFmt: auto, ctxVariants: [4096, 32768, 65536, 131072] } overrides: []