Skip to content

Fix Lemonade v10 system-info device key compatibility#548

Merged
kovtcharov merged 3 commits intomainfrom
fix/lemonade-v10-system-info-keys
Mar 16, 2026
Merged

Fix Lemonade v10 system-info device key compatibility#548
kovtcharov merged 3 commits intomainfrom
fix/lemonade-v10-system-info-keys

Conversation

@kovtcharov
Copy link
Copy Markdown
Collaborator

@kovtcharov kovtcharov commented Mar 16, 2026

Summary

  • Lemonade Server v10 renamed device keys in /api/v1/system-info: npuamd_npu, gpuamd_igpu/amd_dgpu
  • This broke NPU detection in the Hardware Advisor agent and any other code using the legacy key names
  • Updated all code to use the new v10 key names consistently

Changes

  • src/gaia/llm/lemonade_client.py — Updated get_system_info() docstring and examples to use v10 device keys (amd_npu, amd_igpu, amd_dgpu)
  • examples/hardware_advisor_agent.py — Changed devices.get("npu")devices.get("amd_npu") for Lemonade input; changed output keys from gpu/npuamd_igpu/amd_npu for consistency
  • tests/test_hardware_advisor_agent.py — Updated mock data and assertions to use amd_npu/amd_igpu keys throughout

Test plan

  • All 9 hardware advisor tests pass
  • Linting passes (black, isort, flake8, pylint)
  • Manual: verify against live Lemonade v10 server with curl http://localhost:8000/api/v1/system-info
image

Lemonade Server v10 renamed device keys in the /api/v1/system-info
response: npu → amd_npu, gpu → amd_igpu/amd_dgpu. This broke NPU
detection in the Hardware Advisor agent and any other consumer using
the legacy key names.

Add _normalize_system_info() to LemonadeClient that creates
bidirectional aliases so both old (npu, gpu) and new (amd_npu,
amd_igpu) keys work transparently. Existing callers require no changes.
@github-actions github-actions Bot added llm LLM backend changes tests Test changes performance Performance-critical changes labels Mar 16, 2026
Remove _normalize_system_info() and update all code to use the
Lemonade v10 key names (amd_npu, amd_igpu, amd_dgpu) directly.
@kovtcharov kovtcharov enabled auto-merge March 16, 2026 21:36
@kovtcharov kovtcharov added this pull request to the merge queue Mar 16, 2026
Merged via the queue into main with commit 4015bb2 Mar 16, 2026
27 checks passed
@kovtcharov kovtcharov deleted the fix/lemonade-v10-system-info-keys branch March 16, 2026 22:20
@kovtcharov kovtcharov self-assigned this Mar 16, 2026
@itomek itomek mentioned this pull request Mar 27, 2026
4 tasks
github-merge-queue Bot pushed a commit that referenced this pull request Mar 27, 2026
## Summary

Release v0.17.0 — **GAIA Agent UI**, eval benchmark framework, tool
execution guardrails, system prompt optimization, and security
hardening.

### Files Changed
- **`docs/releases/v0.17.0.mdx`** — Comprehensive release notes (new
file)
- **`docs/docs.json`** — Added `releases/v0.17.0` to Releases tab,
updated navbar to `v0.17.0 · Lemonade 10.0.0`
- **`src/gaia/version.py`** — Already at `0.17.0` on main (no change
needed)

### Release Highlights

**New Features:**
- **GAIA Agent UI** — Full-stack privacy-first desktop chat with
streaming responses, 53+ format document Q&A, ngrok tunnel for mobile,
page-level citations, session management (PR #428)
- **Agent UI Eval Framework** — `gaia eval agent` command with
7-dimension weighted scoring across 34 scenarios, redesigned Settings
modal, `<think>` block display, performance stats (PR #607)
- **Tool Execution Guardrails** — Blocking confirmation popup
(Allow/Deny/Always Allow) before write/shell tools, 60s timeout (PR
#565, #604)
- **Device Support Detection** — AMD Ryzen AI Max + Radeon ≥24GB
detection, `--base-url` remote bypass, `GAIA_SKIP_DEVICE_CHECK` override
(PR #593)
- **Terminal UI Design** — Typewriter welcome page, pixelated AMD
cursor, glassmorphism, `prefers-reduced-motion` support (PR #568)

**Performance:**
- **78% System Prompt Reduction** — 17,600 → 3,853 tokens via two-tier
RAG gating, 600s chat timeout, MCP runtime status display (PR #617)

**Security:**
- **TOCTOU Race Condition** — Atomic `O_NOFOLLOW` + `fstat` fix in
document upload, per-file `asyncio.Lock` (PR #564)

**Bug Fixes:**
- LRU eviction silent failure + new
`--max-indexed-files`/`--max-total-chunks` CLI flags (PR #567)
- Lemonade v10 device key renames: `npu` → `amd_npu`, `gpu` →
`amd_igpu`/`amd_dgpu` (PR #548)
- Agent UI rendering, Windows paths, JSON safety regex, RAG indexing
guards (PR #566, #604, #605)
- Restored accidentally reverted changes from PRs #564, #565, #568 (PR
#608)

### Post-Merge
After merging, tag and push:
```bash
git checkout main && git pull
git tag v0.17.0 && git push origin v0.17.0
```
CI runs `validate-release` → `publish-release`. PyPI gated on Kalin
approval.

## Test plan
- [ ] `docs.json` is valid JSON and renders on Mintlify
- [ ] `validate_release_notes.py` passes for v0.17.0
- [ ] `version.py` reads `0.17.0`
- [ ] Release notes content matches actual PR changes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

llm LLM backend changes performance Performance-critical changes tests Test changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants