Skip to main content
███████╗██████╗ ███████╗ ██████╗███████╗       █████╗ ██╗
██╔════╝██╔══██╗██╔════╝██╔════╝██╔════╝      ██╔══██╗██║
███████╗██████╔╝█████╗  ██║     ███████╗█████╗███████║██║
╚════██║██╔═══╝ ██╔══╝  ██║     ╚════██║╚════╝██╔══██║██║
███████║██║     ███████╗╚██████╗███████║      ██║  ██║██║
╚══════╝╚═╝     ╚══════╝ ╚═════╝╚══════╝      ╚═╝  ╚═╝╚═╝

AI-powered hardware upgrade assistant for Windows

PyPI version Python versions Downloads License Platform Powered by Gemini Status Wheel Code style: Ruff


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

Metadata

Release files for specs-ai 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for specs-ai 0.1.2
File Size Uploaded
specs_ai-0.1.2.tar.gz 869.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for specs-ai 0.1.2
File Interpreter ABI Platform
specs_ai-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 917.5 kB

Release files / specs_ai-0.1.2.tar.gz

Download URL specs_ai-0.1.2.tar.gz
Size 869.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a1279beecd5cdd5b979818525ef7cacde4b22dd94dd3c6d2fc04e7632730a7fd
BLAKE2b-256 checksum
How to use checksums
93302fa3f4b77c95a0817465badc2d881a42cd0c840c47f4f089f1c870f87c72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / specs_ai-0.1.2-py3-none-any.whl

Download URL specs_ai-0.1.2-py3-none-any.whl
Size 48.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fea5f4da3d47b136739a10e003ea5f072e059bb45972f1ec5c9279ecc0e8acc6
BLAKE2b-256 checksum
How to use checksums
52a5b7056530e654b1e01e60e77172625feca14edb02ae45c29eea0eaa2286ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page