Skip to main content

Release Notes 1.4.1

Release date: 2026-07-06

Skulk 1.4.1 makes the dashboard work from a phone and makes what it shows you trustworthy. Every view now adapts to phone widths, a new guide covers managing a cluster from anywhere, and a set of observability fixes ensures the dashboard reports what is actually happening on every node and every engine.

Highlights

  • The dashboard works from a phone. At phone widths every view adapts to a single-column layout: the header collapses into a menu, the model store becomes stacked cards, the conversation and instance panels open as drawers over the content, observability takes over the full screen (sized to the real visible area on iOS Safari), and the cluster topology scales for the smaller canvas. Nothing is cut down; placing models, chatting, and watching runner internals all work from a phone browser. A new guide, Manage Your Cluster from a Phone, covers the layout and remote access over Tailscale.

  • Live observability for the llama.cpp engines. The observability Live tab previously showed a frozen "created" state for any model served by the llama.cpp engines (every placement on a GPU/Linux node), because those runners never reported lifecycle progress. They now report the same phases as the MLX engine: model load, ready, generation start, completion or cancellation, errors, and shutdown, so watching a GGUF model load and serve works the same as watching an MLX one.

  • The Node tab shows each node's own Tailscale state. It previously displayed the dashboard-serving node's Tailscale status for every node in the cluster. Each node now reports its own, which is the reading you need when confirming remote connectivity from your phone.

Fixes

  • Clicking the button that jumps a long chat back to the newest message had no effect in fresh sessions and rendered above the mobile side panels; both fixed, and smooth scrolling in chat is reliable again generally.
  • The dashboard header now reads its version from the release itself, so the version shown always matches the software running.
  • A hidden tooltip could make phone browsers scroll sideways on every view; it now stays within the screen.
  • A warning that incorrectly flagged normal cluster topologies ("current master is not a placement node") was removed, and a Tailscale status probe that hung could previously leak a stuck subprocess per poll; it is now cached and reaped.

Validation

Released after a full end-to-end battery on a live five-node mixed cluster (three Apple Silicon Macs, two AMD Strix Halo boxes): the model matrix across both engines, multi-node pipeline and tensor placements, pooled multi-node GGUF serving, native speculative decoding correctness gates, concurrency soaks on both engines, and destructive failover, churn, and placement-refusal suites.