Description
detect_hardware_tier() currently checks for a dedicated GPU via nvidia-smi, then falls back to RAM size. This works correctly on Windows and Linux but produces under-recommendations on Apple Silicon Macs.
Apple Silicon machines (M1, M2, M3, M4 families) have no discrete GPU detectable by nvidia-smi, so they fall through to the RAM check. A MacBook Pro with an M4 Pro chip ends up recommended small or nano tiers designed for genuinely constrained hardware, despite being capable of running medium comfortably via its Neural Engine and unified memory architecture.
What needs to change
Description
detect_hardware_tier()currently checks for a dedicated GPU vianvidia-smi, then falls back to RAM size. This works correctly on Windows and Linux but produces under-recommendations on Apple Silicon Macs.Apple Silicon machines (M1, M2, M3, M4 families) have no discrete GPU detectable by
nvidia-smi, so they fall through to the RAM check. A MacBook Pro with an M4 Pro chip ends up recommendedsmallornanotiers designed for genuinely constrained hardware, despite being capable of runningmediumcomfortably via its Neural Engine and unified memory architecture.What needs to change
Add
detect_apple_silicon() -> str | Nonetoapp/utils/hardware_detect.py"Apple M3 Pro") on Apple Silicon,Noneon all other platformsplatform.system() == "Darwin"andplatform.machine() == "arm64"before any subprocess call. Windows and Linux exit immediately without touchingsysctlsysctl -n machdep.cpu.brand_string(consistent with the existingnvidia-smisubprocess pattern), falling back toplatform.processor()Add
detect_apple_silicon_tier() -> str | Nonewith the following mapping:M1 base,M2 base→smallM1 Pro/Max/Ultra,M2 Pro/Max/Ultra,M3,M3 Pro→mediumM3 Max/Ultra,M4and newer →mediumsmall(safe default)NoneUpdate
detect_hardware_tier()to calldetect_apple_silicon_tier()first, before the existing RAM/GPU path.Expose
apple_siliconchip name inget_hardware_info()response so the frontend can display a chip-specific recommendation string (e.g."Recommended for Apple M3 Pro: Medium")Update the frontend onboarding recommendation label to use the chip name when
apple_siliconis present in the hardware response