Skip to content

v0.3.0

Latest

Choose a tag to compare

@arinltte arinltte released this 04 Oct 12:58

kevMac v0.3.0

The kev 1.0 release: the MLX backend arrives on Apple Silicon, every served checkpoint is pinned, documents run 8× longer with honest limits, and the app can finally see — and clean up — what it has downloaded.

What's new

  • The kev 1.0 engine, pinned. The engine is now fetched from the kev-1.0 release tarball instead of a moving main snapshot, and stamped (.engine-tag) so the app knows exactly what it is running. Existing installs detect a stale pre-1.0 snapshot on launch and update it automatically — preserving the Python environment and downloaded weights — then re-sync the dependencies so mlx-lm arrives. That update is the whole point: the Qwen3.5 hybrid checkpoints now serve through Metal (MLX) instead of crawling on slow reference kernels, and a document is no longer silently truncated at 8,192 tokens.
  • Pinned weights, @v1.0. Every served checkpoint is pinned to the upstream Hub tag (--run jaredpalmer/kev-0.8b@v1.0), and downloads fetch the exact same revision, so HF_HUB_OFFLINE=1 resolution works and a model can never silently change underneath you (upstream moved kev-9b's main to new v2 weights on 2026-09-30; the pin makes that irrelevant). The pin is passed only once the engine stamp says it understands @revision.
  • Faster on every Mac. Measured on a 16 GB MacBook Pro, six-question support-triage request, first (cold) / repeated (prefix-cached) pass: kev-0.8b 520 ms → 221–263 ms (previously ~0.9 s on the old MPS path), kev-4b 1.79 s → 1.55 s. The engine now caches document state prefixes, so re-asking questions about a document you've already analyzed is several times faster — the About pane shows the cache's live hits/misses.
  • Long documents, honestly. States run to 65,536 tokens (0.8B read a 40,000-token document in ~40 s in testing). Past the limit the engine refuses with a 422 that names the token count and the limit, and kevMac turns it into a clear message — never a silent truncation. The editor states each model's validated context (8,192 tokens for 0.8B/4B/9B; 65,536 for 27B). The request timeout was raised from 120 s to 600 s so long first reads survive slower Apple Silicon.
  • Check stability. Every multiple-choice answer has a stability button: kev 1.0 re-runs the question under six shuffled option orders and reports whether the winning option survives them, with the largest probability swing. Changing option order can change an answer — the app shows it instead of hiding it.
  • Live engine card. The About pane shows what the engine is really doing: the pinned run, the backend (mlx/torch), dtype, fitted temperature, release date, the 65,536-token limit and prefix-cache stats — read live from the engine's GET /v1/models, replacing hardcoded claims.
  • The model list, honestly labeled. kev-0.8b (default), kev-4b, kev-9b and kev-27b — all pinned to @v1.0 and downloadable on any Mac. The big sizes are marked experimental with the RAM they realistically need (9B: 48 GB+; 27B: 96–128 GB expected — both unmeasured upstream on Mac): below the recommendation they still load, but serve by swapping (9B measured at ~155 s per request on a 16 GB Mac). The retired previous-generation kev-0.6b is removed from the app, and upgrades from v0.2.x clean its leftover weights (~1.2 GB) automatically on first launch.
  • Storage management. Downloaded models show their disk footprint in the Model menu, and any model you're no longer serving can be removed in one click — through the Hugging Face cache's own removal tooling (hf cache rm), which respects the cache's shared-blob refcounts, so deduplicated weight blobs never orphan and nothing duplicates on disk.
  • Full-weight download rule. kev-27b's 51 GB backbone ships inside its checkpoint; the downloader detects this (no adapter_config.json) and skips the base's weights — fetching only tokenizer bits — instead of doubling the disk cost.

Fixed

  • Examples menu icon — square.grid.2x4 is not a real SF Symbol on current macOS (No symbol named 'square.grid.2x4' found in the console); it is now square.grid.2x2.
  • About pane icon — the pane used the bundle path's LaunchServices icon, which can be a stale cached one for a rebuilt app; it now renders the icon from the compiled asset catalog, which is always current (the bundle's own icon was verified pixel-identical to the latest logo).

Tested

On a MacBook Pro (M4-class, 16 GB), kev 1.0 engine, MLX backend, bf16:

Check Result
kev-0.8b@v1.0 full pass — 520 ms cold / 221–263 ms cached; model card, warmup, 6-question analysis, stability check, 20k- and 40k-token documents, 70k-token refusal (422 with named counts), prefix-cache hits
kev-4b@v1.0 full pass — 1.79 s / 1.55 s; correct playground answers (returns / wrong_size / refund); ~10 GB footprint, 29% RAM free on 16 GB
kev-9b@v1.0 functional but swap-limited — warmup 133 s, analysis 155 s, 11 GB of swap on 16 GB; gated as experimental with the 48 GB+ recommendation (loads via memory-mapped weights)
kev-27b not installed (51 GB); download path implemented, picker-gated as experimental
cleanup 4B, 9B, legacy 0.6b and the stale pre-1.0 main revision removed through hf cache rm — 30.2 GB + 45.5 MB freed; cache now holds exactly kev-0.8b@v1.0 + its base (1.8 GB); 0.8B re-verified with byte-identical answers afterwards

The request/response JSON contract (noul/choice/score in, typed answers out) is unchanged from v0.2.x — existing presets and questions work as they are. Python 3.13 stays pinned (torch ships no 3.14 wheels). KEV_DTYPE=bf16 behavior is unchanged; MLX serves bf16 regardless and ignores it.

Version

0.3.0 (build 4).

Install

Download the latest release from the Releases page, open the .dmg, and drag kevMac to your Applications folder — replacing the existing copy keeps all previously downloaded models working (the engine self-updates to kev 1.0 on first launch).

If macOS blocks the app on first launch:

xattr -rd com.apple.quarantine /Applications/kevMac.app

Or build from source:

git clone https://github.com/arinltte/kevMac.git
cd kevMac
open kevMac.xcodeproj

Press Run in Xcode. Nothing is installed outside ~/.kevMac; remove it any time with rm -rf ~/.kevMac.


Logo by GUMO · https://www.instagram.com/gumoooo._/

Developed by arinltte · arinltte00@gmail.com