Search by meaning, not by filename
Type "dark cave" and find that tileset you saved as env_03_b.png three months
ago. AssetHoard runs two AI models directly on your machine to understand both what your
assets are called and what they look like.
Fully local
No data leaves your machine. No API keys, no accounts, no internet connection required after setup.
GPU-accelerated
DirectML on Windows, CoreML on macOS, CUDA on Linux. Automatic CPU fallback if no compatible GPU is detected.
Cross-modal
Text queries match against image thumbnails, not just filenames. The text and vision models share one embedding space.
What gets indexed
Every asset in your library is indexed from two angles: what it is called and what it looks like.
Text metadata
For every asset, the text model composes a rich description from all available metadata:
- Filename and category
- Tags and notes
- Audio ID3 tags (title, artist, album, genre)
- 3D model mesh, material, and scene names
- Material texture filenames
- Unity package directory structures
Visual content
For every asset that has a thumbnail, the vision model embeds the actual image:
- Textures and sprites
- 3D model preview renders
- Material previews
- Any asset with a generated thumbnail
This is what makes cross-modal search possible. Typing "lava" can match a
texture that looks like lava, even if the file is named mat_017_diffuse.png.
Try searching for...
These kinds of queries produce surprisingly good results because they search meaning, not just keywords.
"wooden crate" Finds crate textures by visual appearance, plus models with "crate" in mesh names, even if the filename is prop_12.fbx.
"epic orchestral" Matches audio files where the ID3 genre or title contains orchestral references.
"grass" Finds green tileable textures by visual appearance, plus anything tagged or named with grass.
"sci-fi corridor" Visual match on thumbnails of sci-fi environment textures, plus any notes or tags mentioning sci-fi.
"dark cave tileset" Finds cave-like tilesets by appearance, even if the filename is env_03_b.png with no tags at all.
artist name Works for audio files because ID3 artist tags are indexed. Search by composer or sound designer name.
See it in action
Performance
Initial indexing
One-time
Processes your entire library in batches (256 assets for text, 64 for images). Speed depends on library size and GPU. A progress notification keeps you informed. This is the "wait once" step.
Search queries
Sub-millisecond
The vector lookup itself uses an HNSW approximate nearest-neighbour index held in memory. The only overhead is embedding your query text, which takes a few milliseconds on top of regular search time.
New imports
Background
Newly imported assets are indexed automatically in the background. Search keeps working with text-only results while indexing completes. A notification lets you know when it is done.
App startup
Pre-loaded
If semantic search is enabled, models are pre-loaded in background threads on startup. By the time you reach the search bar, it is ready.
If the model is busy (for example, indexing new imports), search silently falls back to text-only rather than making you wait.
How to set it up
Five minutes from reading this to searching by meaning. No API keys, no accounts, no configuration files.
Open experiments
Go to Settings then Experiments.
Toggle semantic search on
One toggle. That is all it takes.
Wait for the download
The first time you enable it, AssetHoard downloads ~450 MB of model files. After that, everything runs offline.
Search as normal
Your search bar automatically uses hybrid mode, combining text search with semantic results. No changes to your workflow.
Optional settings
Available in the same Experiments panel:
- Similarity threshold (0.10 to 0.80, default 0.30). Lower values return more results. Higher values are stricter.
- Show similarity scores. Displays a percentage badge on each result showing how closely it matched your query.
- Show indexing notifications. Toggle the notification that appears when new imports are being indexed.
How it works under the hood
Two AI models run directly on your machine via ONNX Runtime. No cloud, no subscriptions, no waiting on an API.
Nomic Embed Text v1.5
A quantised language model that understands the meaning of words. It reads filenames, tags, notes, and type-specific metadata, then converts them into a vector that captures what the asset is about, not just what it is named.
Nomic Embed Vision v1.5
A vision model that understands what thumbnails look like. It embeds the actual pixel content of textures, sprites, models, and materials into the same vector space as the text model.
Both models produce vectors in the same embedding space. A text query like "wooden crate" is compared against every text description and every thumbnail simultaneously. Results from both are merged using Reciprocal Rank Fusion, which surfaces the best matches regardless of whether they came from metadata or visual content.
Frequently asked questions
Stop naming files for search. Start searching by meaning.
Local-first. Offline-capable. No subscription.