Skip to main content

OpenModelDB

CI PyPI Python License: MIT

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

Conversion (optional)

pip install openmodeldb[convert]

Enables automatic conversion between formats: pth ↔ safetensors ↔ ONNX.

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

openmodeldb-1.2.0.tar.gz (40.5 kB view details)

Uploaded Source

Built Distribution

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

openmodeldb-1.2.0-py3-none-any.whl (28.0 kB view details)

Uploaded Python 3

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

Hashes for openmodeldb-1.2.0.tar.gz
Algorithm Hash digest
SHA256 cc1b5ce50b5c5bc3b218d322804ed7498d59af15ff6aaeba0d543a05197dc36a
MD5 dc7eeee04ef959f518539c13a60947b7
BLAKE2b-256 76a1255d736b1d48aa05401332804e6f69e00bf55137862290951d4bd5411d70

See more details on using hashes here.

Provenance

The following attestation bundles were made for openmodeldb-1.2.0.tar.gz:

Publisher: publish.yml on matth-blt/openmodeldb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for openmodeldb-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c4db59b458055d12fc104901616ef443704b3f08fe1411f83da7dbecf22e8e81
MD5 124fb5276dbdbaa25de3ee9602731f67
BLAKE2b-256 53215d6ede3cd472a244f1472a583bd128c9a999bde65da14cfa53c090d05d3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for openmodeldb-1.2.0-py3-none-any.whl:

Publisher: publish.yml on matth-blt/openmodeldb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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