Release Notes 1.5.0
Skulk 1.5.0 makes first installation, heterogeneous serving, and the dashboard one coherent product path. Hardware and engine capability are detected rather than assumed, fresh installations use the same Zenoh data plane and model cards that releases qualify, and the release gate now proves the complete dashboard and API experience on Apple Silicon, AMD Linux, and clean NVIDIA infrastructure.
Highlights
-
The installer is the release contract. The one-command installer builds the dashboard, provisions the appropriate managed engine on Linux, generates configuration, and finishes with
skulk doctor --fix. Candidate qualification installs an exact commit into empty homes; shipping qualification repeats the publicmaincommand with no product overrides. -
Fresh clusters use the qualified defaults. Zenoh is the default DATA transport, nodes converge on the elected master's model store, and generated model cards cannot silently preserve stale backend decisions. Installer, model-card, dashboard, and runtime behavior are tested together.
-
The dashboard covers the full first-user journey. Model discovery, download, launch, placement status, text and image chat, Settings, request recovery, persistent conversations and attachments, and supported speech input/output are release-gated browser paths. Sparse fresh-install Settings no longer crash the dashboard, and transient store requests recover without leaving an empty model list.
-
Vision is capability truthful. Native MLX vision models transport image bytes directly to the selected ranks and must identify unpredictable visual fixtures through both the dashboard and API. Text-only paths do not offer a vision action they cannot serve, and text requests to MLX-VLM models use the correct language-model path.
-
Speech is a first-class fabric capability. OpenAI-compatible TTS, transcription, translation, voice discovery, realtime transcription, VAD, reference audio, and the dashboard voice loop share the same placement and bounded media paths as the rest of Skulk. Spoken output is prepared structurally from the rendered Markdown: titles and headings arrive as their own utterances with sentence-final prosody, emoji are stripped rather than read, fenced code is never spoken, a horizontal rule becomes a brief audible pause, and a deterministic per-sentence seed keeps replays identical. Ten checksummed bundled reference voices provide the same named catalog across validated Qwen Base, LongCat, and Fish voice-cloning models without exposing local media paths or bytes to cluster state. Translation is now standard when a mounted card declares support.
-
The dashboard wears its own design. Dark mode moves to the Foxlight operator design system's Den palette: indigo surfaces over a deep night canvas, a starlight accent for everyday interaction, and amber reserved for work actually in flight, such as the memory a model is holding or a download in progress. Every palette decision lives in theme tokens, an optional build flag (
VITE_NIGHT_SKY=1) crowns the night with the brand valley's star field, and the topology view now shows each machine's make at a glance across mixed Apple, AMD, and NVIDIA fleets. -
Linux serving is detected and concurrent by default. Managed llama-server wheels support AMD Vulkan and NVIDIA CUDA. The served engine defaults to 16 slots with a unified KV cache: every slot retains the full advertised context window, while FIFO prompt-plus-output reservations keep aggregate occupancy safe. NVIDIA nodes may additionally use vLLM for continuous batching.
-
Remote and heterogeneous nodes are first-class. Capability-aware placement selects MLX, llama.cpp, llama-server, mlx-audio, or vLLM from observed hardware and the model card contract. Session-connected remote members participate in topology and placement without fabricating dialable addresses, and unreachable remote workers can fetch pinned artifacts from Hugging Face directly.
-
Storage and recovery fail early and clearly. Model staging performs exact byte admission, protects active artifacts, evicts only idle least-recently used copies, and preserves operating-system headroom. Node Facts, doctor verdicts, topology health, lease-safe qualification recovery, and bounded diagnostic artifacts make failures actionable.
First-install acceptance
Automated qualification covers the exact physical-fleet and clean NVIDIA matrix. The final usability pass follows the Human Release Qualification guide against the same candidate commit. Any product, installer, default, dashboard, or model-card fix creates a new candidate and repeats the automated gate.
Upgrade notes
- All nodes in a cluster must run the same Skulk version before serving workloads, and 1.5.0 changes wire behavior, so upgrade the whole fleet together: 1.4.x and 1.5.0 nodes do not interoperate.
- Fresh installs use Zenoh by default. Set
SKULK_ZENOH_DATA_PLANE=0only for an explicit compatibility fallback. - Fresh served llama.cpp installations use 16 concurrent slots. Set
SKULK_LLAMA_SERVER_PARALLEL=1only when serial serving is intentional. - The model-store default port is now
12415; an existing explicitstore_portremains unchanged. - The service template no longer pins a cluster namespace. Existing service environment files are preserved; remove an old explicit namespace only when those nodes should join the default cluster.
- The
experimentsspeech flags are accepted but ignored. Speech translation, streaming TTS, and realtime STT are gated by model and runtime capability truth rather than an experimental-mode switch.
The complete change inventory remains in the repository changelog.