Skip to content

Model catalog - #1

Merged
olegshulyakov merged 16 commits into
mainfrom
feat/model-catalog
Aug 29, 2026
Merged

olegshulyakov merged 16 commits into
mainfrom
feat/model-catalog

Conversation

@olegshulyakov

Copy link
Copy Markdown
Collaborator

No description provided.

olegshulyakov and others added 16 commits August 29, 2026 12:00
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Measured with gguf-parser v0.26.0, which reads GGUF headers remotely
- Parameters: ctx-size 32768, flash-attention on, q8_0 K/V cache, full offload
- Records estimate.items[0].vrams[0].nonuma, the discrete-GPU figure
- Quants restricted to the UD-Q3_K_XL..Q6_K band

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- One section per model, tuning only; no filesystem paths, so the files
  work unmodified on any machine via --models-dir
- Sampling values taken from each model author's published guidance and
  cited in the file header
- Model ids are the HuggingFace repo name minus -GGUF, lowercased

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Picks the highest-quality quant that fits each tier minus 1 GiB of headroom,
then concatenates the matching model sections under a shared [*] block.

Generation is necessary because the llama.cpp preset format has no include
directive, so multi-file configs cannot be composed at runtime.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Checks each rule the repo relies on: lowercase model ids, file name matching
the section name, no filesystem paths, required ctx-size, allowed quants,
and keys that llama.cpp actually accepts.

Also rejects the three keys llama.cpp silently ignores in presets (host, port,
api-key) and values containing ';' or '#', which truncate the rest of the line.

Every failure reports the file, the line, the problem and the fix.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Covers the required --models-dir layout, the quant chosen per tier, the
build step, and the preset keys that do not work as expected.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Written as short imperative rules so smaller local models can follow it.
Records llama.cpp router behaviour that is not documented upstream and was
established by reading the source and testing against a running server.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds --notes, which prints a Markdown summary of every profile and the quant
chosen per model. Lets the release workflow describe a build without
duplicating the tier-selection logic.

Generated dist/ output is unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Rebuilds dist/ and fails if it does not match configs/, then runs the
validator. An unrecognised key makes llama-server exit 1 at startup, so the
key check catches that failure without needing the binary in CI.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pushes to main that touch configs/ or src/ validate the catalog and publish
dist/*.ini plus SHA256SUMS under a CalVer tag, so users can download the
current profiles without cloning. Documentation-only commits do not release.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
dist/ is a build artifact and releases already publish it, so tracking it only
doubled every diff, invited merge conflicts, and created the staleness problem
CI then had to police.

- git-ignore dist/ and drop it from the index
- remove the dist/ freshness check from both workflows
- CI uploads the generated presets as an artifact so reviewers can still see
  what a change to configs/ produces

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Release notes now combine the generated catalog (usage, profiles, quant per
model) with a Conventional Commits changelog produced by git-cliff.

The tag does not exist when the changelog is generated, so --unreleased --tag
renders the pending commits under the new version.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Emit only the grouped commit list; the release title already carries the
  version, so the template no longer duplicates it as a heading
- Point issue links at this repository instead of the upstream placeholder
- Group build alongside ci, so build commits stop falling into "Other"
- Drop the test, perf and body-matched security groups; this repo ships
  configuration, has no test suite and nothing to profile
- Remove the dead "^ci" branch from the skip rule, which never matched
  because the ci group is evaluated first

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@olegshulyakov
olegshulyakov merged commit 45154b5 into main Aug 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant