OpenModelDB
Browse and download AI upscaling models from OpenModelDB.
- Browse — search and filter 650+ super-resolution models by scale, architecture, or tag
- Download — from any host (direct, GitHub, Hugging Face, Google Drive, MediaFire, Mega.nz), with atomic writes and resume-safe caching
- Convert — automatic pth ↔ safetensors ↔ ONNX conversion when the requested format isn't published
- Verify — compare a local file's weights against the database reference
Install
pip install openmodeldb
CLI
openmodeldb # interactive: select scale → pick a model → download
openmodeldb list [--scale N] [--arch ARCH] [--tag TAG]
openmodeldb search QUERY
openmodeldb download NAME [--format FMT] [--dest DIR] [--half] [--all]
openmodeldb check FILE # verify a local file against the reference
openmodeldb --version
Python API
from openmodeldb import OpenModelDB
db = OpenModelDB()
# <OpenModelDB: 658 models>
# List models (formatted table)
db.list(scale=4)
db.list(scale=1, architecture="compact")
# Find models (returns list[Model])
models = db.find(scale=4)
compacts = db.find(scale=1, architecture="compact")
# Search by name, author, tags or description
results = db.search("denoise")
# Download by name or Model object
db.download("4xNomos8k_atd_jpg")
db.download(models[0])
db.download(models[0], dest="./my_models/")
# Download a specific format (pth, safetensors, onnx)
db.download("4xNomos8k_atd_jpg", format="safetensors")
# Auto-conversion between pth and safetensors
# If the requested format is unavailable, downloads the other and converts
db.download("2x-HFA2kAVCCompact", format="safetensors") # only pth available → auto-convert
db.download("1x-SuperScale", format="pth") # only safetensors → auto-convert
# Download as ONNX with auto-conversion
# If no ONNX file is available, downloads .pth/.safetensors and converts automatically
db.download("4xNomos8k_atd_jpg", format="onnx")
db.download("2x-DigitalFlim-SuperUltraCompact", format="onnx", half=True) # FP16 export
# Download all available formats
db.download_all("4xNomos8k_atd_jpg")
db.download_all("4xNomos8k_atd_jpg", format="pth") # only .pth files
# Verify model integrity (compare weights against database reference)
db.test_integrity("downloads/4xNomos8k_atd_jpg.pth")
# ✓ PASS similarity=100.000000 matched=53/53 max_diff=0.00e+00 mean_diff=0.00e+00
# Silent mode (no output, for use as a library)
path = db.download("4xNomos8k_atd_jpg", quiet=True)
# Get download URL (for custom download logic)
url = db.get_url("4xNomos8k_atd_jpg")
url = db.get_url("4xNomos8k_atd_jpg", format="safetensors")
# Dict-style access
model = db["4xNomos8k_atd_jpg"]
print(model.name, model.author, model.scale, model.architecture)
# Check if a model exists
"4xNomos8k" in db # True
# Browse architectures and tags
db.architectures() # ['atd', 'compact', 'cugan', 'dat', ...]
db.tags() # ['anime', 'denoise', 'photo', ...]
# Iterate
for model in db:
print(model)
# Launch interactive CLI
db.interactive()
Options
db = OpenModelDB(
cache_dir="/path/to/cache", # model index + temp files (default: ~/.cache/openmodeldb)
download_dir="./my_models", # default destination for downloads (default: ./downloads)
include_all=True, # include archs excluded by default (cain, cain-yuv)
)
db.download_dir # resolved download directory
db.cache_dir # resolved cache directory
db.cache_is_valid() # True if the cached index is fresh (< 1 hour)
db.refresh() # force re-fetch of the model index from the API
db.clear_cache() # delete the cached index
The model index is cached for 1 hour (with ETag revalidation). If the API is unreachable, the client falls back to the stale cache with a warning on stderr.
Error handling
All errors inherit from OpenModelDBError:
from openmodeldb import (
OpenModelDBError, # base — also raised when the API is unreachable with no cache
ModelNotFoundError, # unknown or ambiguous model name
FormatNotFoundError, # requested format unavailable (and not convertible)
DownloadError, # network/host failure during download
)
try:
db.download("4xNomos8k_atd_jpg", format="onnx")
except OpenModelDBError as e:
print(f"failed: {e}")
Name resolution is strict: an exact id/name match wins, a unique partial match
is accepted, and an ambiguous partial match raises ModelNotFoundError listing
the candidates.
Dependencies
- InquirerPy — interactive prompts
- rich — progress bars and tables
- pycryptodome — Mega.nz decryption
- mediafiredl — MediaFire direct-link extraction
Conversion (optional)
pip install openmodeldb[convert]
Enables automatic conversion between formats: pth ↔ safetensors ↔ ONNX.
- PyTorch — model loading and ONNX export
- safetensors — safe tensor serialization
- onnx — ONNX model format
- onnxruntime — graph optimization
- spandrel — universal model loader
Development
git clone https://github.com/matth-blt/openmodeldb
cd openmodeldb
pip install -e .[dev]
python -m pytest tests/ -q # run the test suite (offline, no network needed)
ruff check . # lint
Tests covering format conversion require the convert extras
(pip install -e .[dev,convert]) and are skipped automatically without them.
Credits
- OpenModelDB — the open model database
- All model authors and contributors
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 openmodeldb-1.2.0.tar.gz.
File metadata
- Download URL: openmodeldb-1.2.0.tar.gz
- Upload date:
- Size: 40.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc1b5ce50b5c5bc3b218d322804ed7498d59af15ff6aaeba0d543a05197dc36a
|
|
| MD5 |
dc7eeee04ef959f518539c13a60947b7
|
|
| BLAKE2b-256 |
76a1255d736b1d48aa05401332804e6f69e00bf55137862290951d4bd5411d70
|
Provenance
The following attestation bundles were made for openmodeldb-1.2.0.tar.gz:
Publisher:
publish.yml on matth-blt/openmodeldb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openmodeldb-1.2.0.tar.gz -
Subject digest:
cc1b5ce50b5c5bc3b218d322804ed7498d59af15ff6aaeba0d543a05197dc36a - Sigstore transparency entry: 2154791097
- Sigstore integration time:
-
Permalink:
matth-blt/openmodeldb@482eec0f42b4ee73ff33c2313424270a30dbfaba -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/matth-blt
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@482eec0f42b4ee73ff33c2313424270a30dbfaba -
Trigger Event:
release
-
Statement type:
File details
Details for the file openmodeldb-1.2.0-py3-none-any.whl.
File metadata
- Download URL: openmodeldb-1.2.0-py3-none-any.whl
- Upload date:
- Size: 28.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4db59b458055d12fc104901616ef443704b3f08fe1411f83da7dbecf22e8e81
|
|
| MD5 |
124fb5276dbdbaa25de3ee9602731f67
|
|
| BLAKE2b-256 |
53215d6ede3cd472a244f1472a583bd128c9a999bde65da14cfa53c090d05d3a
|
Provenance
The following attestation bundles were made for openmodeldb-1.2.0-py3-none-any.whl:
Publisher:
publish.yml on matth-blt/openmodeldb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openmodeldb-1.2.0-py3-none-any.whl -
Subject digest:
c4db59b458055d12fc104901616ef443704b3f08fe1411f83da7dbecf22e8e81 - Sigstore transparency entry: 2154791547
- Sigstore integration time:
-
Permalink:
matth-blt/openmodeldb@482eec0f42b4ee73ff33c2313424270a30dbfaba -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/matth-blt
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@482eec0f42b4ee73ff33c2313424270a30dbfaba -
Trigger Event:
release
-
Statement type: