Repository navigation
Added
- imajev family as managed local backend
imajev(port 8904) — imajev-2b/4b/9b (Apache-2.0, Qwen3.5 bases, pinned SHAs). snapdec runs upstream's own pinned server with--rotations 1— no shim authored (ADR-0011). Flat/v1/modelsand missing/healthare handled snapdec-side; 422/500 backend errors convert to fail-closedreviewenvelopes (NFR-4). - Dual download per model — base snapshot via upstream's
download_model.py+ PEFT adapter snapshot at a stable path (relaunches never re-download). - Live download progress — uv wheel progress and tqdm bars (bytes + speed) now render live during provision; slow 2–5 GB links no longer look hung.
- Catalog entries with JevBench board 2026-09 standings as a third stat scale, never cross-compared with kev breadth-v1 or the vllm-sr card. No star anywhere (unbenched in snapdec at release); RAM floors 12/24/48 GB x86 (FP32) and 8/16/32 GB Apple (real MLX fast path).
Fixed
- Placeholder-bundle trap — upstream tarball ships a placeholder
artifacts/model.jsonthat passed a plain.exists()gate and skipped the ~4.6 GB base download; the bundle is now json-parsed and the snapshot dir verified (fail-closed, re-verified after download). - Resurrect window — daemon restart declared slow-loading backends dead after a flat 120 s;
ensure_runningnow waits kind-aware (600 s for kev/decision2/imajev) with a 10 s heartbeat and a log-path note on failure. - Pid-reuse guard —
stop_daemononly terminates pids whose process name matches python/snapdec, so a recycled Windows PID can never kill an unrelated process. (paid)label now shown only for hosted routers.
Benchmarks
First snapdec bench on imajev-2b (this PC, i5-13420H, 16 GB, CPU FP32, mini-v1 n=12): p50 14.8 s / p95 35.1 s direct-to-backend, serialized inference (upstream request lock) — docs/benchmarks/2026-10-08-imajev-2b.md. Accuracy at n=12 is wire-path regression coverage, not a model-quality claim. 4b/9b and Apple MLX stay "bench pending".
Full changelog: https://github.com/aktonay/snapdec/blob/main/CHANGELOG.md
🤖 Generated with Claude Code