Skip to content

Setup wizard never detects the NPU or offers the rkllama backend install #1535

Description

@jaylfc

Traced end to end on dev (context: the fresh-install test wave in #2, #1527, #1529).

Current state

A non-terminal user on a fresh Orange Pi install cannot get the NPU backend without finding it themselves:

  • OnboardingScreen.tsx is account creation only; SetupChecklist.tsx has five hardcoded steps (account, provider, model, agent, memory) and never calls /api/hardware.
  • /api/setup/status (routes/setup.py) has no NPU awareness.
  • Hardware detection itself works (hardware.py _detect_npu() correctly detects RK3588 via five probes) and /api/hardware exposes it; nothing in the setup flow consumes it.
  • The ONLY install path is manual: Store app > find "rkllama (RK3588 NPU LLM)" > Install, which runs scripts/install-rkllama.sh > install-rknpu.sh (this entry itself only started working on June 14, Store install chain for rkllama (backend not running) is broken: wrong script + non-interactive false-success #844; before that there was no UI path at all, which matches the May report in the Fresh install test — clean Orange Pi 5 Plus #2 thread).
  • The cluster deploy endpoint supports install-rknpu for remote workers only; there is no local-controller equivalent.

So the original #2-thread gap ("the setup wizard's NPU detection should have queued the rkllama backend install but didn't fire it") was only half-fixed: the Store entry now works, the wizard still does nothing.

Options (design decision needed)

  1. Add an NPU-conditional sixth step to SetupChecklist.tsx: call /api/hardware on mount, and when npu.type == "rknpu", show "Install the NPU backend" with a click-to-install that triggers the existing Store service install.
  2. Auto-queue the rkllama service install in the background when the NPU is detected during setup (zero clicks, but ~2.8 GB of downloads without an explicit yes).
  3. A post-onboarding "hardware-optimized setup" surface that recommends per-hardware installs (generalizes to Vulkan/CUDA tiers; overlaps the hardware-tier install templates idea, Store: hardware-tier install templates (curated bundles per device class) #332).

Option 1 is the smallest honest fix and keeps consent explicit; option 3 is where this probably wants to end up long-term.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions