A fast, modern CLI that shows which local LLMs fit on your machine
Project description
LLM Scan
A fast CLI that scans your hardware and tells you which local LLMs will actually run on your machine.
Features
- Auto-detects your hardware -OS, CPU, RAM, and GPU memory in seconds
- Multi-vendor GPU support -NVIDIA (
nvidia-smi), AMD ROCm (rocm-smi), Intel Arc (xpu-smi/clinfo), Apple Silicon (unified memory), Windows (Get-CimInstance/wmic) - Smart fitness scoring -Rates every model as
great,ok,tight, ornobased on your VRAM, RAM, and multi-GPU setup - 45+ bundled models -Llama, Qwen, Mistral, Gemma, Phi, DeepSeek, CodeLlama, StarCoder, and more
- Hugging Face search -Find GGUF models on Hugging Face and add them to your local catalog
- Auto-computed VRAM -Adds models with formula-derived memory requirements from parameter count and quantization
- Multi-GPU aware -Accounts for tensor parallelism across multiple GPUs
- CPU-only inference -Recognizes when you have enough RAM to run models without a GPU
- Beautiful terminal UI -Rich tables, color-coded ratings, ASCII banner
- Custom catalogs -Bring your own model list as a JSON file
- JSON output -Pipe results into scripts or dashboards
Install
# With pip
pip install llmscan
# With pipx (isolated install)
pipx install llmscan
# With uv
uv pip install llmscan
# From source
git clone https://github.com/adityaarakeri/llmscan.git
cd llmscan
pip install -e .
The installed command remains llmscan.
Quick Start
# Show banner + hardware summary + compatible models
llmscan
# Check version
llmscan --version
Usage
scan -Inspect your hardware
llmscan scan # Rich formatted hardware details
llmscan scan --json # Machine-readable JSON output
list -List compatible models
llmscan list # Show models rated "tight" and above
llmscan list --min-rating great # Only show "great" fits
llmscan list --min-rating no # Show all models including non-fits
llmscan list --json # JSON output with machine profile + models
llmscan list --catalog my_models.json # Use a custom catalog file
explain -Deep-dive on a specific model
llmscan explain llama-3.1-8b-instruct # Why does this model fit?
llmscan explain qwen2.5-72b-instruct # Why doesn't it?
llmscan explain my-model --catalog my_models.json # Explain from a custom catalog
search -Find GGUF models on Hugging Face
llmscan search llama # Search for Llama GGUF models
llmscan search "codellama 13b" # More specific search
llmscan search mistral --limit 5 # Limit results
llmscan search qwen --json # JSON output
add -Add a model to your local catalog
VRAM/RAM requirements are auto-computed from the parameter count and quantization type.
# Add by specifying params and quant manually
llmscan add my-model --params-b 7 --quant Q4_K_M --family Llama
llmscan add my-model --params-b 7 --quant Q4_K_M --family Llama --notes "My fine-tune"
# Add from a Hugging Face repo (auto-detects params and quant)
llmscan add TheBloke/Llama-2-7B-GGUF
# Overwrite an existing entry
llmscan add my-model --params-b 7 --quant Q8_0 --family Llama --force
# JSON output
llmscan add my-model --params-b 7 --quant Q4_K_M --json
Supported quantization types: Q2_K, Q3_K_S, Q3_K_M, Q3_K_L, Q4_0, Q4_K_S, Q4_K_M, Q5_0, Q5_K_S, Q5_K_M, Q6_K, Q8_0, F16, IQ2_XS, IQ3_XS
Models are saved to ~/.llmscan/catalog.json and automatically merged with the bundled catalog.
remove -Remove a model from your local catalog
llmscan remove my-model # Only removes user-added models, not bundled ones
Example Output
llmscan list --min-rating ok
┃ Model ┃ Family ┃ Params ┃ Fit ┃ Min VRAM ┃ Rec VRAM ┃ Rec RAM ┃
┃ llama-3.1-8b-instruct ┃ Llama ┃ 8B ┃ great ┃ 5.0 GB ┃ 6.2 GB ┃ 10 GB ┃
┃ mistral-7b-instruct-v0.3 ┃ Mistral ┃ 7B ┃ great ┃ 4.4 GB ┃ 5.5 GB ┃ 8 GB ┃
┃ phi-4-mini ┃ Phi ┃ 4B ┃ great ┃ 2.5 GB ┃ 3.1 GB ┃ 6 GB ┃
...
Rating System
| Rating | Meaning |
|---|---|
great |
GPU VRAM and RAM both meet recommended targets -best experience |
ok |
Meets minimum requirements, may need moderate context limits or uses CPU-only inference |
tight |
Runs with CPU offload, reduced context, or multi-GPU splitting -expect slower performance |
no |
Hardware is below practical minimums |
Supported Hardware
| Vendor | Detection Method | Notes |
|---|---|---|
| NVIDIA | nvidia-smi |
Discrete GPUs with CUDA |
| AMD | rocm-smi |
GPUs with ROCm drivers |
| Intel | xpu-smi, clinfo |
Arc and Data Center GPUs |
| Apple | sysctl |
Apple Silicon unified memory (65% GPU estimate) |
| Windows | Get-CimInstance, wmic |
Fallback for any GPU on Windows |
Custom Catalogs
Create a JSON file with your own model entries:
[
{
"id": "my-custom-model-7b",
"family": "Custom",
"params_b": 7,
"quant": "Q4_K_M",
"min_vram_gb": 5,
"recommended_vram_gb": 8,
"recommended_ram_gb": 16,
"notes": "My fine-tuned model"
}
]
Then pass it with --catalog:
llmscan list --catalog my_models.json
llmscan explain my-custom-model-7b --catalog my_models.json
Required Fields
| Field | Type | Description |
|---|---|---|
id |
string | Unique model identifier |
family |
string | Model family name (e.g., "LLaMA", "Mistral") |
params_b |
number | Parameter count in billions |
quant |
string | Quantization format (e.g., "Q4_K_M", "Q5_K_M") |
min_vram_gb |
number | Minimum GPU VRAM in GB |
recommended_vram_gb |
number | Recommended GPU VRAM in GB |
recommended_ram_gb |
number | Recommended system RAM in GB |
notes |
string | Additional notes about the model |
Development
git clone https://github.com/adityaarakeri/llmscan.git
cd llmscan
# Install with dev dependencies
uv pip install -e ".[test,dev]"
# Run tests
uv run pytest
# Lint and format
uv run ruff check .
uv run ruff format .
# Type check
uv run mypy llmscan/
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes and add tests
- Ensure all checks pass:
uv run pytest && uv run ruff check . && uv run mypy llmscan/ - Open a pull request
License
MIT -see LICENSE for details.
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 llmscan-0.1.0.tar.gz.
File metadata
- Download URL: llmscan-0.1.0.tar.gz
- Upload date:
- Size: 39.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfcf2b76804cc20314c63375d88e0d7e58ea5028f76255054a8844aaa5ed21ef
|
|
| MD5 |
a8b2f3c12036811bafd64c1d9510e247
|
|
| BLAKE2b-256 |
c57148d0228ac4ed0cca0f7bc9756ec835664fe5d3146394e280057d0ef35bbd
|
Provenance
The following attestation bundles were made for llmscan-0.1.0.tar.gz:
Publisher:
ci.yml on adityaarakeri/llmscan
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llmscan-0.1.0.tar.gz -
Subject digest:
dfcf2b76804cc20314c63375d88e0d7e58ea5028f76255054a8844aaa5ed21ef - Sigstore transparency entry: 1190887987
- Sigstore integration time:
-
Permalink:
adityaarakeri/llmscan@83f34c214502d629af21d58a68072955bb816d36 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/adityaarakeri
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@83f34c214502d629af21d58a68072955bb816d36 -
Trigger Event:
push
-
Statement type:
File details
Details for the file llmscan-0.1.0-py3-none-any.whl.
File metadata
- Download URL: llmscan-0.1.0-py3-none-any.whl
- Upload date:
- Size: 22.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ef8494dac3afa43f9c4e355cd2d55918838b8bd7f313a025aba69070f610e10
|
|
| MD5 |
6fecc4d23fb3b6c1c0ac27b8ec96040a
|
|
| BLAKE2b-256 |
d232cf2eb0d7b9da8b46d39eb83ea34967f261ef567faa6cbedbba2bac9c9328
|
Provenance
The following attestation bundles were made for llmscan-0.1.0-py3-none-any.whl:
Publisher:
ci.yml on adityaarakeri/llmscan
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llmscan-0.1.0-py3-none-any.whl -
Subject digest:
2ef8494dac3afa43f9c4e355cd2d55918838b8bd7f313a025aba69070f610e10 - Sigstore transparency entry: 1190888012
- Sigstore integration time:
-
Permalink:
adityaarakeri/llmscan@83f34c214502d629af21d58a68072955bb816d36 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/adityaarakeri
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@83f34c214502d629af21d58a68072955bb816d36 -
Trigger Event:
push
-
Statement type: