v1.1.0 - Open Source · MIT

Library Watcher

Your studio assets, unified.

A centralizing indexing and tracking system for studio environments where media assets, projects, and source files are scattered across multiple disks and storage devices.

Everything you need to manage your assets

From scanning drives to detecting duplicates, one unified dashboard.

Index & Track

Scan multiple disks and directories to build a centralized SQLite database of all your assets.

Browse by Folder

Navigate scanned files using an explorer-style tree view with breadcrumbs, infinite scroll, search, sort, right-click context menus, and file type icons with duplicate badges.

Duplicate Detection

Identify identical files via SHA-256 hashing with per-file counts, matching filenames, and aggregated waste statistics.

Manage Metadata

Mark files as uploaded or deleted (soft delete) with bulk operations and optional disk deletion.

Background Scanning

Non-blocking scan jobs with SHA-256 hashing, duplicate detection, real-time progress tracking (scanning → hashing → completed), and job termination.

Job Queue

Active job progress with status badges, progress bars, inline duplicate lists, ETA display, and searchable history.

Dashboard

Real-time stats at a glance: total files, storage size, uploaded count, duplicates found, and wasted space. Quick-action links to all major pages.

Global Search

Search the entire library by filename, filepath, or SHA-256 hash from a dedicated search page with paginated results and duplicate badges.

Remote Clients

Connect external machines via WebSocket with token-based auth. Dispatch scans from the web UI — clients scan locally, compute SHA-256 hashes, and stream results back. Remote client scans are 10–30% faster than server-side scanning.

Why Library Watcher?

In a professional studio setting, resources are frequently fragmented. Media assets on one drive, projects on another, source files on a NAS. Keeping track of what you have, where it lives, and whether duplicates exist becomes a full-time job.

Library Watcher solves this by providing a single, unified interface that indexes everything across all your storage. Browse by folder, search across the entire database, detect duplicates by content hash, manage file lifecycle, and even scan remote machines via WebSocket-connected clients. All from one clean dashboard.

SHA-256 Content Hashing
SQLite Local Database
Background Non-blocking Scans
MIT Open Source

Get started in minutes

Clone, install, scan. You'll be browsing your assets in no time.

1

Clone & Install

git clone https://github.com/Mrdhnto/library-watcher.git
cd library-watcher
pnpm install
2

Start the Dev Server

pnpm dev

Open http://localhost:3000 in your browser.

For production: pnpm build && pnpm preview

3

Scan a Directory

Navigate to the Scan page, enter a directory path, and start indexing. The scan runs in the background with real-time progress.

4

Browse & Manage

Use the Explorer to navigate scanned folders, the Files table for advanced search and bulk actions, and the Dashboard for an overview of your entire library.

Built with modern technology

Nuxt 4 Nuxt UI 4 Vue 3 Better SQLite3 Tailwind CSS 4 SHA-256 Lucide Icons TypeScript H3 CrossWS

Remote Clients

Extend scanning to every machine in your studio.

Library Watcher is self-hosted — you run the server on your own machine or studio server. Remote scanning lets you index machines that can't run the full web server. The server runs centrally on your network, and each client machine connects to it via WebSocket. Both the server and clients must have network connectivity to each other.

1

Generate a Token

In the web UI, go to ClientsGenerate Token and copy the one-time token.

Make sure your Library Watcher server is running and accessible from the client machine on your network.

2

Connect a Machine

lw-client -u ws://your-server:8080/api/client/ws -t <token>

The first machine that connects with that token claims it, bound by hostname. That same machine can always reconnect, even after reboots.

3

Scan Remotely

In the web UI, go to Scan → switch to Remote Client → pick the client → enter a path. The client scans the directory locally, hashes files, and streams results back.

⚡ Pro tip: Remote client scans are 10–30% faster than server-side scanning because the client runs closer to the filesystem with less overhead. We recommend using remote clients for all production scanning.

The client is a standalone Node.js app — no database or web server dependencies.

lw-client on GitHub →

Frequently asked questions

Library Watcher is a file indexing and management tool designed for studio environments. It scans multiple disks and directories, builds a centralized SQLite database, and provides a web dashboard to browse, search, and manage all your assets.

Each scanned file is hashed using SHA-256. Files with identical hashes are grouped and reported as duplicates. The dashboard shows wasted space, and the file views let you compare and manage duplicate groups.

Any locally mounted drive. NTFS, ext4, APFS, network shares, external USB drives. If your OS can see it, Library Watcher can scan it.

No. Library Watcher uses soft delete (you can also check to delete the real file), it flags files in the database without touching the filesystem. You can always revert or review before taking any real action.

Yes. Scans run as background jobs with real-time progress tracking. You can queue multiple scans, monitor each one independently, and terminate them if needed.

Yes. Library Watcher is self-hosted — you run the server on your own machine over your local network. Remote scanning uses a lightweight CLI client (lw-client) that connects to your server. Generate a one-time token from the Clients page, run lw-client on the target machine, and dispatch scans from the web UI. Remote client scans are 10–30% faster than server-side scanning — we recommend using them for all production indexing.

Absolutely. Library Watcher is MIT-licensed and available on GitHub. Contributions, issues, and feature ideas are all welcome.