{"record":{"id":"4dd9ed63b6d30f8e","repo":"henrygd/beszel","slug":"no-gpu-found-see-https-beszel-dev-guide-gpu","errorCode":null,"errorMessage":"no GPU found - see https://beszel.dev/guide/gpu","messagePattern":"no GPU found - see https://beszel\\.dev/guide/gpu","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"agent/gpu.go","lineNumber":778,"sourceCode":"\tgm.GpuDataMap = make(map[string]*system.GPUData)\n\n\t// Jetson devices should always use tegrastats (ignore GPU_COLLECTOR).\n\tif caps.hasTegrastats {\n\t\tgm.startTegraStatsCollector(\"3700\")\n\t\treturn &gm, nil\n\t}\n\n\t// Respect explicit collector selection before capability auto-detection.\n\tif collectorConfig, ok := utils.GetEnv(\"GPU_COLLECTOR\"); ok && strings.TrimSpace(collectorConfig) != \"\" {\n\t\tpriorities := parseCollectorPriority(collectorConfig)\n\t\tif gm.startCollectorsByPriority(priorities, caps) == 0 {\n\t\t\treturn nil, fmt.Errorf(\"no configured GPU collectors are available\")\n\t\t}\n\t\treturn &gm, nil\n\t}\n\n\tif !hasAnyGpuCollector(caps) {\n\t\treturn nil, fmt.Errorf(noGPUFoundMsg)\n\t}\n\n\t// auto-detect and start collectors when GPU_COLLECTOR is unset.\n\tif gm.startCollectorsByPriority(gm.resolveLegacyCollectorPriority(caps), caps) == 0 {\n\t\treturn nil, fmt.Errorf(noGPUFoundMsg)\n\t}\n\n\treturn &gm, nil\n}\n","sourceCodeStart":760,"sourceCodeEnd":788,"githubUrl":"https://github.com/henrygd/beszel/blob/b38fb7dafa60812cc22e6a84ce313e94f1ce0a32/agent/gpu.go#L760-L788","documentation":"The beszel agent's GPU manager returns this error when no GPU collector could be configured or started. It is thrown from NewGPUManager when the system exposes no GPU capabilities the agent can use, and the message points to the beszel GPU setup guide because resolution almost always requires installing drivers or setting GPU_COLLECTOR.","triggerScenarios":"Called via NewGPUManager when hasAnyGpuCollector(caps) is false (no collector is usable on this host), or when GPU_COLLECTOR is unset and the auto-detection path startCollectorsByPriority(resolveLegacyCollectorPriority(caps), caps) starts 0 collectors.","commonSituations":"Running the agent on a machine with no GPU (VMs, containers without /dev/dri, cloud instances without GPU passthrough); NVIDIA drivers or NVML library missing so NVML collector can't load; missing intel-gpu-tools/sysfs access; GPUs hidden by cgroup device restrictions in Docker.","solutions":["Install vendor drivers so a collector is detectable (NVIDIA driver/NVML, Intel i915/xe sysfs, AMD).","Set GPU_COLLECTOR env var explicitly to a supported collector (e.g. nvml) to bypass auto-detection.","Verify the GPU is visible to the container/VM (device passthrough, /sys/class/drm mounted).","If the host genuinely has no GPU, remove GPU monitoring expectations or ignore the error; agent runs without GPU stats.","Consult https://beszel.dev/guide/gpu for supported collectors and setup."],"exampleFix":"// before (docker run without device access)\ndocker run beszel/agent\n// after\ndocker run --gpus all beszel/agent","handlingStrategy":"fallback","validationCode":"// on the host, before relying on GPU stats:\nwhich nvidia-smi || ls /sys/class/drm/card0/device  # confirm GPU visible\nGPU_COLLECTOR=nvml beszel-agent  # force a collector explicitly","typeGuard":null,"tryCatchPattern":"gm, err := NewGPUManager(...)\nif err != nil && strings.Contains(err.Error(), \"no GPU found\") {\n    slog.Warn(\"GPU monitoring disabled; continuing without GPU stats\")\n    gm = nil\n}","preventionTips":["Install vendor GPU drivers before enabling GPU monitoring in beszel","Pass GPU devices into containers (--gpus all, /dev/dri) at deploy time","Set GPU_COLLECTOR explicitly instead of relying on auto-detection","Check the agent runs without GPU stats as an expected state on GPU-less hosts"],"tags":["gpu","configuration","agent"],"backgroundTag":"gpu-collector-not-found","analyzedSha":"b38fb7dafa60812cc22e6a84ce313e94f1ce0a32","analyzedAt":"2026-08-31T15:10:10.149Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}