openclaw / openclaw/openclaw-windows-node

Allow explicit NVIDIA GPU selection during Local AI setup

Open
#1,196 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

clawsweeper:needs-maintainer-review clawsweeper:needs-product-decision clawsweeper:no-new-fix-pr impact:other issue-rating: 🌊 off-meta tidepool P2 stale
Dominant language
C#
Stars
2.1k
Forks
295
Avg merge
1d 6h
Merged PRs (30d)
99

Description

Problem

Local AI detects and deterministically ranks multiple NVIDIA GPUs, but setup does not let the user choose which eligible GPU will run llama-server.

The current selection policy ranks candidates by eligibility, known free memory, free memory, total memory, stable UUID, and name:

https://github.com/openclaw/openclaw-windows-node/blob/31dffdb0dbd9eebc8b98ce35cf13ab60762410a9/src/OpenClaw.Shared/Inference/Catalog/LocalInferenceEligibility.cs#L63-L73

The setup UI exposes a model selector but no GPU selector:

https://github.com/openclaw/openclaw-windows-node/blob/31dffdb0dbd9eebc8b98ce35cf13ab60762410a9/src/OpenClaw.SetupEngine.UI/Pages/CapabilitiesPage.xaml#L153-L171

The selected GPU is already persisted and launched safely by stable NVML UUID through CUDA_VISIBLE_DEVICES:

https://github.com/openclaw/openclaw-windows-node/blob/31dffdb0dbd9eebc8b98ce35cf13ab60762410a9/src/OpenClaw.Connection/LocalAi/LlamaServerRouterConfiguration.cs#L55-L62

Impact

When multiple GPUs can run the selected model, the automatic policy can prefer an older high-memory or less-busy card over a faster card the user intends to use. Enthusiast and workstation systems commonly have workload-placement reasons that cannot be inferred from memory alone.

Expected behavior

  • Show every GPU eligible for the selected model.
  • Display useful evidence such as adapter name, memory, compatibility, and current availability.
  • Keep the current deterministic policy as the recommended default.
  • Let the user explicitly override the recommendation.
  • Persist the selection using the stable NVML UUID, never a transient adapter index.
  • Revalidate the chosen GPU before artifact acquisition and runtime startup.
  • Provide a clear recovery path if the selected GPU is removed or no longer eligible.

Tests

Add coverage for:

  • Multiple eligible GPUs with different memory and availability
  • User override of the recommended GPU
  • Model changes that alter GPU eligibility
  • Persistence and CUDA_VISIBLE_DEVICES handoff by UUID
  • Selected GPU removed or made ineligible before setup continues
  • Equal-name adapters with distinct UUIDs

Suggested by @shanselman.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with LocalInferenceEligibility.cs to understand candidate ranking, then inspect CapabilitiesPage.xaml for the setup UI and LlamaServerRouterConfiguration.cs for UUID persistence and CUDA_VISIBLE_DEVICES handoff. Add coverage for GPU overrides, model eligibility changes, persistence, and removed or equal-name adapters; done means the recommended GPU remains the default and an explicit valid selection is revalidated before setup continues.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
ai, desktop
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
65/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.