GitHub ↗
← all posts
2026-08-24 lemonade upstream sdk

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.)

AreaWhat landed
ModelsQwen3.8-27B, NVIDIA Nemotron 3.5 Lightning 30B-A3B, Z-Image-Turbo (TheNoise), FastFlowLM NPU backend v1.0.1
Management APIPOST /v1/models/register, GET/POST/DELETE /v1/models/{id}/options
ObservabilityGET /v1/stats (prefix-cache + route-switch counters), Prometheus /metrics
BehaviorDeployment-mode validation (400 instead of silent repair), native reasoning controls for "disable thinking", cancel-mid-prefill, no_broadcastbroadcast 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:

  1. Pin — checkout the upstream tag (git checkout 2b6a7d77).
  2. Re-apply the embed patch — a CMAKE_CURRENT_SOURCE_DIR sweep plus parent-target short-circuits so the tree builds as a subdirectory without colliding with the engine's own dependency fetches.
  3. Build + verify — full onebin build, then a live smoke test of the API surface on strixhalo.
  4. 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.