A desktop application for browsing, searching, and editing structured data paired with visual assets, organized into a fast and intuitive interface, with native support for Windows and Linux.
Asset Indexer is a desktop application that scans folders of image + JSON pairs and turns them into a searchable, visual data library. It allows you to quickly find, preview, copy, and edit structured data in an organized way. It features native support for Windows and Linux, with partial Wayland support.
-
ποΈ Folder-based indexing: Automatically scans directories for
.png+.jsonpairs, builds a structured SQLite database, and organises results into collapsible, nested folder sections. -
β‘ Smart incremental indexing: On subsequent loads, a file-cache diff detects only added, changed, or deleted files so unchanged assets are skipped entirely β making reloads near-instant for large libraries.
-
π Instant search with folder-only mode: Filter assets by name across all indexed content. Append
fto a query (e.g.characters f) to search folder names instead of asset names. Scroll position and expanded folders are restored automatically when the search is cleared. -
πΌοΈ Thumbnail grid with lazy loading: Assets are displayed in a responsive grid of rounded thumbnail cards. Images load in the background off the main thread so the UI never freezes. Thumbnails are cached in memory after the first load.
-
π Full-screen image viewer: Left-click any card to open a full-screen overlay viewer. Navigate between images in the same folder using arrow keys or the on-screen Prev / Next buttons. Right-click the image to access the card's context menu directly from the viewer. Click outside the image or press Escape to close.
-
π±οΈ Drag & drop: Drag any card out of the app to copy the image file path to another application as a file drop.
-
π Per-field copy menu: Right-click a card to copy any JSON field value individually. A
LORAbadge is shown for assets flagged with"lora": true. Thelorakey itself is excluded from copy actions. -
π·οΈ Quick tag editing: Right-click a card and choose "Add Tag" to append a tag to the asset's
tagsJSON field without opening the full editor. -
βοΈ Inline JSON editor: Open a floating, draggable editor to view and modify the full JSON file linked to any card. Changes are saved back to disk and reflected immediately in the UI.
-
π§© Folder metadata tags (
!F-<folder>.json): Right-click a folder header to add a tag or open the JSON editor for the folder's meta file. When a folder has a meta file, a Copy button appears next to the folder header for one-click copying of its stored value (e.g. a LoRA snippet). -
ποΈ Notes window: A separate floating, non-modal window for storing reusable text snippets (e.g. prompts, LoRA weights, settings). Notes are organised into optional categories displayed as collapsible folder sections. Click any note card to copy its value to the clipboard. Supports search, inline JSON editing, and an optional A-Z sort.
-
ποΈ Multiple databases: Add and manage multiple indexed folders. Switch between them via the Change Database dialog. Removing a database deletes only the index file β your original asset folder is never touched.
-
β‘ Startup scripts: Register Python scripts that run automatically on app launch (or on "Reload with Scripts"). Scripts can be given custom arguments and reordered via up/down buttons. All script execution happens in a background thread with a visible progress indicator.
-
π§ͺ Dev mode: Launch with
--devto use a safe in-memory dataset. No files are read or written; all changes vanish on exit. The real database and preferences are left completely untouched. -
β¨οΈ Keyboard shortcuts: Press
/from anywhere in the app to instantly focus the search bar and clear it. Use Left / Right arrow keys to navigate in the image viewer.
-
Clone the repository:
git clone https://github.com/Ventexx/Asset-Indexer.git cd Asset-Indexer -
Start the app using the provided script (recommended):
-
Windows:
start.bat
-
Linux / macOS:
chmod +x start.sh ./start.sh
This will automatically:
- Create a virtual environment
- Install all dependencies
- Launch the application
-
If you prefer to set things up manually:
-
Install dependencies:
pip install PySide6
-
Run the application:
python app.py
To fully remove the application:
-
Delete the project folder.
-
Remove application data stored on your system:
- Linux / macOS:
~/.asset_indexer/ - Windows:
C:\Users<YourUser>.asset_indexer\
- Linux / macOS:
This directory contains:
- Indexed databases (
.dbfiles) - File caches (
*_file_cache.json) - Preferences (
prefs.json) - Notes (
notes.json) - Startup scripts config (
startup_scripts.json)
Open the app, click β‘ β Add Folder, and select a directory containing .png images with matching .json files. The app indexes the folder automatically and displays all assets grouped by subfolder.
Use the search bar (or press / to jump to it) to filter assets by name. Results update after a short debounce as you type. Clear the search to return to exactly where you were β expanded folders and scroll position are restored.
To search by folder name instead of asset name, end your query with f. For example, typing characters f shows everything inside folders whose name contains "characters".
Click a folder header to expand it and reveal its thumbnail grid. Folders nest to reflect your directory structure. Each folder remembers its expanded state across search refreshes.
Left-click any card to open it in the full-screen viewer. Navigate to the previous or next image in the same folder with the βΉ / βΊ buttons or the Left / Right arrow keys. Press Escape or click outside the image to close.
Right-click a card to see a context menu listing every field in the linked JSON as a "Copy β¦" action. Click any entry to copy its value to the clipboard.
Right-click a card and choose Add Tag to append a value to that asset's tags field without opening the full JSON editor.
Right-click a card and choose Edit JSON⦠to open the floating JSON editor. Edit the content directly and click Save to write the changes to disk and update the index.
Click and drag any card out of the app window to copy the image as a file drop into another application (e.g. a file manager or image editor).
Right-click an expanded folder header to either:
- Add Tag β creates or updates an
!F-<FolderName>.jsonmeta file with a new tag, making a Copy button appear next to the folder header. - Edit JSONβ¦ β opens the full JSON editor for the folder's meta file.
Once a folder has a meta file, click its Copy button to instantly copy the stored value (e.g. a LoRA snippet) to the clipboard.
Click the π button in the top-right of the main window to open the Notes panel. Click + to create a new note with a name, value, and optional category path (e.g. Styles/Lighting). Notes are grouped into collapsible folder sections. Click any note card to copy its value. Right-click a note card to copy or edit its raw JSON.
Click β‘ β Change Database to switch between indexed folders or remove one from the list. Removing a database deletes the index file only β your source folder is not affected. Click β‘ β Add Folder to index a new folder at any time.
Click β‘ β Reload Database to re-index the active folder. Choose:
- without Scripts β re-indexes immediately (uses the file cache diff to skip unchanged files).
- with Scripts β runs your configured startup scripts first, then re-indexes.
Click β‘ β Startup Scripts to add, remove, edit, or reorder Python scripts that run on each app launch. Each script can be given a name and optional command-line arguments.
π‘ Tip:
To safely test the app without modifying real data, launch it in dev mode:
python app.py --devYour contributions are welcome!
- Maintainer: Ventexx (ven.private@outlook.de)
This work is licensed under a
Creative Commons Attribution-NonCommercial 4.0 International License.
You may use, modify, and share this software for non-commercial purposes, provided that appropriate credit is given.
Disclaimer: This software is provided "as is", without warranty of any kind. The author is not liable for any damages or issues arising from its use.
