Skip to content

2.2.0

Choose a tag to compare

@nullata nullata released this 10 Oct 22:58
· 13 commits to main since this release
acdb7ac

[2.2.0] - 2026-10-09

Added

  • 🆕 Strata engine (experimental, opt-in) — Strata as a second inference engine behind a new engine layer (core/engines/). Opt-in via STRATA_ENABLED=true + NVIDIA GPU; off by default, llama.cpp behaviour snapshot-tested byte-for-byte. Engine abstraction + registry; config["engine"] is additive — missing key = llama.cpp, no storage migration. Family × size catalogue (8 virtual models, /strata/<family>-<SIZE>), env-var-only launch, pinned-revision shard pre-download through llamaMan's downloader, load-stage parsing from container logs, settings-fingerprint-driven REINSTALL=1, per-model flags from Strata's own setup.py, Hang Watchdog + Slow-Storage Allowance. Images: Strata repo download + docker build from the UI (built for this node's GPU generations), pull-by-name for both engines, deletion of built images. ⚠️ Builds default to STRATA_REPO_REF=main (unpinned third-party source); pin a commit for reproducibility. UI: engine picker, Strata launch fields beside their llama.cpp counterparts, recommended-models modal, quant-name aliases. Docs: README section + docs/STRATA.md. #97
  • llama.cpp Web UI toggle (default on; off passes --no-webui) and per-instance "Open llama-server" links. #97
  • Model Archive (opt-in) — mount a second volume, set ARCHIVE_DIR=/archive; unset hides the feature entirely. Archive/Restore buttons in the model list; archived models stay listed, dimmed, not launchable, absent from /api/tags / /v1/models. Moves run as cancellable jobs in the Downloads panel; cross-disk moves are atomic (hidden partial + fsync + size check), cancel/failure/low-space leave the source untouched, partials cleaned at startup. Refused while the model is in use (incl. sleeping, draft, mmproj, Strata shards), mid-download, or on name collision. Restore returns files to the original path, so presets/favorites/notes/display names survive. #98

Fixed

  • Download speed limit is now per node. "Global speed limit (Mbps)" lived in the shared settings blob, so one node's value capped every node. Now per-node (core/node_settings.py), falling back to the legacy top-level value — existing installs keep their limit until each node saves its own. #99