AI-powered hardware upgrade assistant for Windows
Project description
███████╗██████╗ ███████╗ ██████╗███████╗ █████╗ ██╗
██╔════╝██╔══██╗██╔════╝██╔════╝██╔════╝ ██╔══██╗██║
███████╗██████╔╝█████╗ ██║ ███████╗█████╗███████║██║
╚════██║██╔═══╝ ██╔══╝ ██║ ╚════██║╚════╝██╔══██║██║
███████║██║ ███████╗╚██████╗███████║ ██║ ██║██║
╚══════╝╚═╝ ╚══════╝ ╚═════╝╚══════╝ ╚═╝ ╚═╝╚═╝
specs-ai reads your machine's hardware via WMI and psutil, then asks a Gemini-powered LLM for specific, actionable upgrade recommendations — knowing exactly what you have.
Collected specs: CPU (model, cores, clock, socket), RAM (capacity, type, speed, slots), GPU (model, VRAM, Integrated/Dedicated), Motherboard, Storage (all drives, NVMe/SATA/HDD), WiFi adapter, Battery health (laptops), System uptime, OS metadata.
The CPU socket tells the LLM whether a CPU is soldered (BGA — cannot upgrade) or swappable (LGA/AM4/etc.). GPU type tells it whether graphics are integrated (part of the CPU die, not upgradeable on a laptop) or a discrete card.
[!WARNING] Windows only.
specs-airelies on WMI (Windows Management Instrumentation) andpywin32for hardware extraction. It will not run on Linux or macOS. There are no plans to support other platforms at this time.
Screenshots
Dashboard (specs-ai --dashboard)
CLI Summary (specs-ai)
Detailed Recommendations (specs-ai --explain)
Install
pip install specs-ai
Or with uv:
uv pip install specs-ai
API Key Setup
Get a free Gemini API key at https://aistudio.google.com/apikey, then pick one of:
Option A — Shell environment variable:
$env:SPECS_AI_API_KEY = "your-key-here"
Option B — .env file (in the project root or any parent directory):
SPECS_AI_API_KEY=your-key-here
A template is provided at .env.example — copy it to .env and fill in your key.
Usage
specs-ai [--explain] [--specs-only] [--dashboard] [--model MODEL]
| Flag | Description |
|---|---|
| (none) | Collect specs and show a compact upgrade summary table |
--explain |
Full detailed recommendations — specific part models, impact-per-dollar |
--specs-only |
Print hardware specs only; skip the LLM call entirely |
--dashboard |
Launch the interactive hacker-themed TUI dashboard |
--model MODEL |
Gemini model to use (default: gemini-2.5-flash) |
# Compact summary table (default)
specs-ai
# Detailed recommendations with specific part suggestions
specs-ai --explain
# Interactive TUI dashboard
specs-ai --dashboard
# Just the hardware snapshot, no LLM call
specs-ai --specs-only
Also works via the module entry point:
python -m specs_ai
python -m specs_ai --explain
python -m specs_ai --dashboard
Dashboard
Launch with specs-ai --dashboard for a full-screen, hacker-themed hardware monitoring
dashboard built with Textual and Rich.
Features:
- Big blocky ANSI Shadow
SPECS-AItitle in neon green - Matrix-style digital rain animation on left/right gutters
- Live CPU sparkline, RAM usage bar, and per-volume disk usage bars
- Color-coded uptime — green < 5d, amber 5–15d, red > 15d
- AI upgrade recommendations panel (queries Gemini in the background)
- Scrolling event log with timestamped activity
- JSON export of the full hardware snapshot
| Key | Action |
|---|---|
Q |
Quit |
R |
Re-scan hardware + re-query Gemini |
E |
Toggle compact table / detailed explain mode |
S |
Export specs to specs_report.json |
H |
Toggle help overlay |
How It Works
Your Machine
│
▼
WMI + psutil ← reads CPU, RAM, GPU, storage, battery, WiFi, uptime
│
▼
Prompt builder ← formats specs, injects BGA/iGPU/uptime advisories
│
▼
Gemini API ← gemini-2.5-flash by default; swap with --model
│
▼
Upgrade recommendations (table or detailed narrative)
Notes
- BGA CPUs (soldered) are correctly flagged as non-upgradeable
- Integrated GPUs on laptops are marked as non-upgradeable; on desktops, adding a discrete card is suggested
- VRAM is read from the Windows registry (not WMI) to avoid the 32-bit DWORD overflow that misreports GPUs with ≥ 4 GB VRAM
- WMI calls run in daemon threads with a 10-second timeout to prevent hangs on broken driver states
- Uptime advisories are injected into the prompt at 5 days (suggest reboot) and 15 days (strongly recommend reboot)
Development
Requires uv:
git clone https://github.com/vybhav72954/specs-ai
cd specs-ai
uv run pytest tests/ -v
Contributing & Issues
Bug reports and feature requests are welcome. If you run into a problem or have a suggestion, please open an issue on GitHub with:
- Your Windows version and Python version
- The full error message or unexpected output
- The command you ran
Pull requests are also welcome for bug fixes and improvements.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file specs_ai-0.1.1.tar.gz.
File metadata
- Download URL: specs_ai-0.1.1.tar.gz
- Upload date:
- Size: 868.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfb73fa0dd6d9e514de1b36a878fb7d4bebee1e29da7c135c76b69df62f69b3d
|
|
| MD5 |
2201b16a003ab6249edd9c925c473bdb
|
|
| BLAKE2b-256 |
f0dc6b7795956f19c6c2d93bfc85ae90439969a880f0b300caac1683db9cad0a
|
File details
Details for the file specs_ai-0.1.1-py3-none-any.whl.
File metadata
- Download URL: specs_ai-0.1.1-py3-none-any.whl
- Upload date:
- Size: 48.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f4cec0d6a26aa977aa2ace98e4d135837d77498349480f3b2086dfbf2827107
|
|
| MD5 |
0bce264afbb2090781e5f4d3e125315a
|
|
| BLAKE2b-256 |
240d68b47ed11b2d1af389b7bc89ab598992ea31cd8ebade1822aedc84357c26
|