Skip to content

thebestgoodguy/modeldock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

27 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ModelDock

Hugging Face model, dataset, and Space downloader with multi-threaded queueing, live progress, and seamless local folder integration in one desktop-style workspace.

GitHub release License Node Version React Version Electron Version Python

Quick Start | Key Features | Tech Stack | Installation | Configuration | License


Important

Disclaimer: ModelDock is an independent community project and is not affiliated with, endorsed by, sponsored by, or officially supported by Hugging Face, Inc. or the official Hugging Face platform. The name "Hugging Face" is used only to describe compatibility with publicly available Hugging Face repository APIs.

Users are solely responsible for how they use this software, including compliance with repository licenses, gated model terms, organization policies, API limits, and storage usage.


Screenshots

ModelDock Search Dashboard

πŸ“Έ Click here to view more screenshots

ModelDock Queue Management

ModelDock Preferences


Quick Start

  1. Launch the application (via source code or pre-compiled Windows executable).
  2. Search for any Model, Dataset, or Space using simple queries or the Advanced Search panel.
  3. Explore files in the interactive repository file tree, filter by formats (GGUF, SafeTensors, etc.), and select files to download.
  4. Configure paths in Preferences to link ModelDock directly with your LM Studio model directory.
  5. Manage downloads through the live queue with pause, resume, cancel, and speed limits.

Key Features

ModelDock provides a comprehensive desktop-style cockpit for managing Hugging Face assets.

πŸ” Search & Discovery

  • Multi-Repo Search: Browse models, datasets, and Spaces from a single unified workspace.
  • Advanced Metadata Filters: Query using rich Hugging Face tags, categories, libraries, and sort options.
  • Context Length Filters: Refine text-generation models by context window sizes (from 2K up to 256K+).
  • Dynamic Tag Discovery: Explore search tags dynamically loaded from Hugging Face metadata with robust local fallbacks.
  • Stateful Navigation: Smooth transitions between search page results and repository details without losing pagination or query state.

πŸ“₯ Download Engine & Observability

  • Granular Downloader Queue: Full control over downloads with start, pause, resume, cancel, and retry capabilities.
  • Real-Time Speed & Progress: Visualizes active downloading files with live speeds, ETAs, and task states.
  • Tqdm Log Parsing: Extracts live progress details (e.g., 11.0M/4.48G) directly from stdout streams.
  • Pre-download Disk Scan: Automatically checks local drive storage space before queuing files to prevent out-of-disk crashes.
  • Multi-Threaded Concurrency: Configurable parallel download queue slots and worker execution.

πŸ’» Desktop & Integrations

  • LM Studio Integration: Seamlessly sync your downloads directly with your local LM Studio models directory, featuring an easy-to-use directory lock/reset.
  • Native Folder Browsing: Dedicated Browse button with dual-mode folder pickers (uses native Electron shell picker in packages, PowerShell script fallback in browser dev modes).
  • Auto-Update Engine: Background check for latest releases via the GitHub API, showing custom Markdown changelogs inside a custom dialog.
  • Complete App Reset: Instantly re-initializes SQLite database tables and frontend storage configs without needing an app restart.
  • Systematic Session Recovery: Auto-pauses orphaned download workers on app launch to preserve system stability.

Tech Stack

Layer Technologies Role / Description
Frontend React 19, TypeScript, Vite, Tailwind CSS v4, Motion Responsive desktop GUI, smooth transitions & animations
Desktop Shell Electron 35, electron-builder Native OS wrapper, file explorer integration, auto-updater
Backend Express.js, SQLite (better-sqlite3), TSX Settings store, queue management, process orchestrator
Downloader Python 3.10+, huggingface_hub High-speed, multi-chunk, resumable Hugging Face API agent

Installation and Setup

Ensure you have Node.js v20+ and Python v3.10+ installed.

1. Clone & Install Dependencies

# Clone the repository
git clone https://github.com/thebestgoodguy/modeldock.git
cd modeldock

# Install Node dependencies
npm install

# Install Hugging Face Python library
pip install huggingface_hub

2. Running in Development Mode

You can launch the frontend and backend API servers separately for live reloading:

# Terminal 1: Start backend API server
npm run start:api

# Terminal 2: Start Vite web frontend
npm run dev

Once both are running, open your browser at http://localhost:3000.

3. Launching as a Desktop Electron App

Build the frontend assets and run ModelDock inside its Electron shell:

npm run electron

4. Packaging for Production

To package ModelDock into a standalone Windows desktop executable:

# Generate a Windows Setup Installer (.exe)
npm run package:win

# Generate a portable, unpacked directory build
npm run package:dir

The packaging artifacts will be created in the release/ directory.


Configuration

Open the Preferences panel in ModelDock to configure your environment:

  • Hugging Face Token: Provide a token to search and download private or gated repositories.
  • Default Download Path: Set the destination directory for downloaded files.
  • LM Studio Integration: Map your model folder directly to LM Studio's path for instant model loading.
  • Queue Concurrency: Limit simultaneous active downloads.
  • Worker Management: Tweak the number of parallel Python download helpers and download speeds.

Project Structure

A high-level view of the repository layout:

modeldock/
β”œβ”€β”€ electron/          # Electron main and preload entry points
β”‚   β”œβ”€β”€ main.cjs       # Main process lifecycle and IPC handlers
β”‚   └── preload.cjs    # Sandbox bridge and version exposures
β”œβ”€β”€ public/            # Static assets and desktop icons
β”œβ”€β”€ src/               # React 19 Frontend source code
β”‚   β”œβ”€β”€ components/    # Page components (Search, Queue, Settings)
β”‚   β”œβ”€β”€ App.tsx        # Main application layout
β”‚   └── index.css      # Core styling system (Tailwind CSS v4)
β”œβ”€β”€ downloader.py      # Python script containing the download worker
β”œβ”€β”€ server.js          # Express API server with SQLite persistence
β”œβ”€β”€ package.json       # App manifests and script configurations
└── README.md          # Project documentation

Technical Details

  • ASAR Path Correction: The backend automatically resolves absolute script paths (resources/downloader.py) and discovers system Python binaries inside packaged installations.
  • Queue Protection: Any active downloads that were interrupted due to app shutdown are automatically paused on startup to avoid corrupting files.
  • Hugging Face Mirroring: You can configure custom Hugging Face proxy endpoints (e.g. HF_ENDPOINT) directly in your backend settings or .env files.

License

This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0). Under these terms, you are free to share and adapt the software, provided you give appropriate credit to Sadri ERCAN and link back to the official repository. Commercial use, sales, or monetization of this software is strictly prohibited. See the LICENSE file for details.


Made with ❀️ by Sadri ERCAN

About

Advanced Hugging Face Model Downloader

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors