Lemonade v11.7.0, and how we stay current with the SDK
The embedded Lemonade server core is re-vendored to v11.7.0 — new models, a register/options/stats/metrics API, and a repeatable re-vendor loop so every upstream release lands without touching engine code.
Why we track Lemonade at all
The 1bit engine embeds Lemonade's server core in-process — all 14 backends and the policy router, compiled into the same build/1bit binary. That means upstream's release cadence is our release cadence: every time lemonade-sdk/lemonade ships, the engine inherits its new models, backends, and API surface the day we re-vendor. The relationship is documented in docs/guides/Lemonade-Compat.md and the vendoring rules live in third_party/lemonade/UPSTREAM.md.
v11.7.0: what came in
This release brought new models, a management API, and observability — all now live in the embedded core. (The engine's own HF coverage is separate and larger: 552 architecture tokens / 1,774 HF arch strings, 317,310 of 317,310 arch-bearing text-gen checkpoints mapped — 100% of HuggingFace. The numbers below are what the Lemonade core itself gained.)
| Area | What landed |
|---|---|
| Models | Qwen3.8-27B, NVIDIA Nemotron 3.5 Lightning 30B-A3B, Z-Image-Turbo (TheNoise), FastFlowLM NPU backend v1.0.1 |
| Management API | POST /v1/models/register, GET/POST/DELETE /v1/models/{id}/options |
| Observability | GET /v1/stats (prefix-cache + route-switch counters), Prometheus /metrics |
| Behavior | Deployment-mode validation (400 instead of silent repair), native reasoning controls for "disable thinking", cancel-mid-prefill, no_broadcast → broadcast inversion |
Verified on real hardware
Re-vendored at 2b6a7d77 (tag v11.7.0) and built with TheRock ROCm 7.16 on Strix Halo (gfx1151). The full onebin target compiles — all 14 backends including the new thenoise image backend — and the embedded core serves lemond version 11.7.0:
- /v1/models — the vendored Lemonade registry now carries 211 entries (up from v11.5.1), incl. the new Qwen 27B GGUF variants, Nemotron-3-Nano-30B-A3B-GGUF, and Z-Image-Turbo; the engine's own coverage is the 317,310/317,310 (100%) HF census above
- /v1/stats + /metrics — serving (
lemonade_server_info{version="11.7.0"}) - /v1/models/register and /{id}/options — live and validating
- --broadcast/--no-broadcast — the inverted flag, working
The re-vendor loop (how we stay current)
The engine vendors Lemonade as a plain tree (not a submodule) because the embedded core needs a small local CMake patch that only exists here. The loop is scripted in UPSTREAM.md and stays boring on purpose:
- Pin — checkout the upstream tag (
git checkout 2b6a7d77). - Re-apply the embed patch — a
CMAKE_CURRENT_SOURCE_DIRsweep plus parent-target short-circuits so the tree builds as a subdirectory without colliding with the engine's own dependency fetches. - Build + verify — full onebin build, then a live smoke test of the API surface on strixhalo.
- Ship — commit on a chore branch, open the PR, let CI and the merge queue do the rest.
The patch is small and documented; when upstream adopts any of it, the diff shrinks further. Two v11.7.0 additions needed new embed-side handling: a BUILD_TESTING guard around the new add_test() police function (it leaked into the parent scope via add_subdirectory), and the copy_resources target tied to the object library so the embedded binary ships its resources/ dir. Plus a pre-existing engine bug fixed along the way: 1bit lemonade was passing the injected --lemonade flag into lemond's own CLI parser, which rejected it — the flag is now stripped before the handoff.
Release notes: github.com/lemonade-sdk/lemonade/releases/tag/v11.7.0