Keeping libraries separate
A library is a directory. Everything a collection accumulates lives in the
.videre/ state directory at its root, so two collections in two different
directories are already completely separate: separate database, separate
per-model embeddings, separate locks, separate config, and separate caches.
There is nothing to configure and no shared default to get wrong.
You pick which library a command acts on the same way every time: it is the
directory you run the command in, or the one named by --library <dir>. See
where your data lives for the full resolution rule.
Two collections, side by side
Section titled “Two collections, side by side”videre --library ~/Photos scan # the personal libraryvidere --library ~/WorkShoots scan # the work library
videre --library ~/WorkShoots dedupe # only ever considers work photosvidere --library ~/WorkShoots search "client logo"Or run each command from inside the library, with no flag at all:
cd ~/WorkShootsvidere scanvidere dedupe # still only work photosEach library keeps its own embeddings directory and its own locks, so the two
never block or contaminate each other. dedupe on one cannot propose deleting
a file recorded in the other, because it cannot see it.
What each library owns
Section titled “What each library owns”| Per library | |
|---|---|
Database (.videre/hashes.db) |
separate |
| Per-model embeddings | separate |
| Locks | separate |
Config (.videre/config.toml) |
separate |
| Thumbnail and geocoding caches | separate |
A command run against one library cannot read or write another’s state, and
prune sweeps only the cache entries belonging to the library it runs in, so it
can never delete another library’s cached thumbnails.
What is still shared
Section titled “What is still shared”The Hugging Face model cache, at ~/.cache/huggingface/hub/, is shared by
everything on the machine unless you set HF_HOME. That is a benefit, not a
leak: model weights are downloaded once and reused, while each library’s own
embeddings stay private to it. See caches.
A scratch library
Section titled “A scratch library”Because a library is just a directory, an experiment is a throwaway directory:
videre --library /tmp/videre-scratch scan ~/some-folderNothing you do there can touch a real collection: its database, config and
caches all live under /tmp/videre-scratch/.videre/, and deleting the directory
removes every trace.
Caveats
Section titled “Caveats”Nothing warns you when you point at the wrong library. A command run in the
wrong directory, or with the wrong --library, acts on whatever library is
there. The scoped output always prints N of M, so a filter matching nothing in
the library you meant is visible rather than silent.
A directory with no .videre/ is not yet a library. The commands that read
a library (search, stats, dedupe, and the rest) report that it is not
initialized rather than creating an empty one; only scan and watch bring a
library into being.
Locks are keyed by the canonical library root, so a symlink or a relative path to the same library resolves to the same locks, and two libraries in different directories never share one.