u/Green_Ocean90

slotpin: cache-maxing scheduler and dashboard for llama-server and Gufo

slotpin: cache-maxing scheduler and dashboard for llama-server and Gufo

I've been running an always-on assistant at home on a couple of 128GB Strix Halo boxes for a few months, and struggled with getting solid cache hits. I tried two serving slots, with one for interactive and one for background, but didn't have a reliable way to route requests.

I ended up with a little proxy that sits in front of llama-server and deals with that. This then grew to a request scheduler, metrics dashboard and now added support for the Gufo engine (a newer engine aimed at Strix Halo: https://github.com/gufo-org/gufo ) too! It's currently running on both my boxes, one with a single-slot Gufo/Qwen3.8 Flash-Next and one with a four-slot Gufo/Qwen3.8 27b.

I've just tidied it up and made it public in case it's useful to anyone else: https://github.com/headbouyJB/slotpin

What it does:

  • With llama-server: Pins each conversation to a slot, so the next turn lands where its cache already is.
  • Sorts requests into lanes with regexes (my chat messages vs cron jobs and other background stuff), so the interactive lane is protected and background work waits its turn without being starved.
  • With llama-server: Saves the interactive slot's KV to disk and restores it if something evicted it. On my box a returning conversation went from an 88 second cold turn to 0.7 seconds to restore, in a direct test of exactly that case.
  • Writes one line of metrics per turn: time to first token, decode and prefill speed, cache hit, queue wait, memory, and optionally energy from a smart plug, so you get Wh per request. No prompt or reply text is recorded anywhere.
  • Has a dashboard (screenshot below) with live slots, performance, cache, health and system views, plus a list of recent turns you can filter down to the slow ones or the cache misses.
  • Works in front of Gufo as well as llama.cpp. Gufo does its own caching, so in that mode the proxy steps back and just does lanes, scheduling and metrics.
  • Has an optional "fail fast" mode. I had an engine stall for 55 hours while still answering health checks and sending keep-alive pings, so my client never fell back to anything else. The proxy can now spot "no output and no token progress" and return a proper error instead of hanging. That one’s brand new... I’m only just turning it on myself!

Fair warning:

  • It's alpha. Config keys and metric fields might still change.
  • It's been run on exactly two machines, both mine, both Strix Halo on Linux. The test suite is decent and CI is green, but I'd expect rough edges on other setups.
  • There's no authentication. It listens on localhost by default and the README says how to expose it sensibly.
  • I'm not a professional developer. Most of the code was written with Claude, with me testing it on real hardware and my real serving environment.

If you just want to see the dashboard without setting anything up, there's a demo mode with made-up data:

git clone https://github.com/headbouyJB/slotpin && cd slotpin
uv run python tools/demo_dashboard.py

What I’m curious about is what everyone else puts between their client and their server. Are you scheduling or prioritising requests, routing different kinds of work to different slots or models, or just letting everything hit llama-server and living with it? That middle layer is where most of my pain was, and I can’t tell if I’ve solved a common problem or just my own.

u/Green_Ocean90 — 5 days ago

Simple Lesson - Overnight Reconciliation

After the first month or so of using OpenClaw mainly in a personal assistant capacity, it had its own inbox, and Apple Calendar and Reminders shared with me.

The voice was dialled in, it could action things that arrived via email or iMessage, but there was something missing…

While it could reliably surface facts from each of the inputs it often struggled to maintain alignment, for example an email with a changed appointment would be flagged to me in iMessage, but not updated in the calendar. A reminder to send a package was stale.

Adding an overnight reconciliation across these surfaces has made a big difference, so now every fact across email, iMessage, calendar and reminders get cross-checked and cleaned up - prioritising the next 10-14 days. This means my agent and I start each day with a solid view of what’s ahead, and has been transformative.

But why is this not a standard OpenClaw behaviour?

reddit.com
u/Green_Ocean90 — 2 months ago

Ornith1.5 Release - Expectations?

I only stumbled onto Ornith1.0 a few weeks ago, and when I benched it I was really impressed - the highest ranking on my Tau2 Airline runs, and at a good speed on Strix Halo.
https://halobench.com/models/ornith-35b/
Today we see their 1.5 out, with 35b a3b already available and downloading now.
What do people’s practical experience show using these models? Do we like them?

reddit.com
u/Green_Ocean90 — 2 months ago

Early Strix Halo Specific Lab

Hi Halo friends, as I’ve been learning more about local AI, specifically on the Strix Halo platform, I’ve been collecting information across a bunch of models, backends, configurations etc. that might be useful to others. I’m trying to make everything as transparent and reproducible as possible.

https://halobench.com/

I have two machines, AI Beast is a 96 GB box from GMKTec (awaiting warranty replacement…), and AI Hydra is a 128 GB box from Bosgame.

Each run is associated with a config, including the llama.cpp build, ROCm or Vulkan backend, and the exact flags applied. Hopefully this means you can reproduce the performance 🤞

For capability I’ve been using Tau2 Airline (5 tasks for screening, all 26 for a full bench), and every run gets wall-metered energy — so models are compared on Wh per correct answer, not just tokens per second.

A few things the data has already turned up: backend choice is per-model, not per-platform (some models need ROCm to survive long context, one is faster on Vulkan); a 3-bit quant of a big model beat a Q8 mid-size on agentic tasks while using less energy per correct answer; and quality issues get published too, including a draft-depth corruption bug we’ve isolated and are filing upstream.

After finishing the current heavy bench runs, hopefully the next phase will be finding performance tweaks for the most capable models, and when my replacement box arrives I’ll be back to having proper local production models driving OpenClaw for me 🤓

Welcome feedback, and I’ll keep adding to this as I learn more!

reddit.com
u/Green_Ocean90 — 2 months ago