Skip to main content

AI-powered hardware upgrade assistant for Windows

Project description

███████╗██████╗ ███████╗ ██████╗███████╗       █████╗ ██╗
██╔════╝██╔══██╗██╔════╝██╔════╝██╔════╝      ██╔══██╗██║
███████╗██████╔╝█████╗  ██║     ███████╗█████╗███████║██║
╚════██║██╔═══╝ ██╔══╝  ██║     ╚════██║╚════╝██╔══██║██║
███████║██║     ███████╗╚██████╗███████║      ██║  ██║██║
╚══════╝╚═╝     ╚══════╝ ╚═════╝╚══════╝      ╚═╝  ╚═╝╚═╝

AI-powered hardware upgrade assistant for Windows

PyPI version Python versions Downloads License Platform Powered by Gemini


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-ai relies on WMI (Windows Management Instrumentation) and pywin32 for 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)

Dashboard

CLI Summary (specs-ai)

CLI Summary

Detailed Recommendations (specs-ai --explain)

Explain Mode


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-AI title 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

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

specs_ai-0.1.1.tar.gz (868.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

specs_ai-0.1.1-py3-none-any.whl (48.2 kB view details)

Uploaded Python 3

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

Hashes for specs_ai-0.1.1.tar.gz
Algorithm Hash digest
SHA256 bfb73fa0dd6d9e514de1b36a878fb7d4bebee1e29da7c135c76b69df62f69b3d
MD5 2201b16a003ab6249edd9c925c473bdb
BLAKE2b-256 f0dc6b7795956f19c6c2d93bfc85ae90439969a880f0b300caac1683db9cad0a

See more details on using hashes here.

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

Hashes for specs_ai-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0f4cec0d6a26aa977aa2ace98e4d135837d77498349480f3b2086dfbf2827107
MD5 0bce264afbb2090781e5f4d3e125315a
BLAKE2b-256 240d68b47ed11b2d1af389b7bc89ab598992ea31cd8ebade1822aedc84357c26

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page