OffGallery

User Manual
Version 1.0  ·  April 2026  ·  English

1What is OffGallery

OffGallery is a fully offline photo cataloguing and retrieval system. It automatically analyses every image using local AI models, generating semantic embeddings, biological taxonomy, tags, descriptions and aesthetic scores — without sending a single pixel to any cloud service.

It is designed for photographers managing archives of thousands of RAW files who want to find any photo in seconds using natural language: "backlit portrait at sunset", "grey heron in flight", "snow-covered mountain landscape".

What OffGallery can do

🔒
Privacy guaranteed

No data, image or metadata ever leaves your computer. All AI models run locally. An internet connection is required only on first launch to download the models (~6.7 GB).

2First Launch

Windows: after running OffGallerySetup.exe, launch OffGallery using the shortcut created on the Desktop. Linux/macOS: use the corresponding launcher (see installer/INSTALL_GUIDE_EN.md). On first launch, the application automatically downloads the AI models (~6.7 GB total). A progress panel shows the download status. This happens only once.

  1. Windows: double-click the OffGallery shortcut on the Desktop, created by OffGallerySetup.exe. Linux/macOS: use the launcher script in the installer/ folder.

  2. On first launch a splash screen appears while downloading the AI models. An internet connection is needed only at this point.

  3. Once the download completes the main interface appears with 8 tabs.

  4. (Optional) Make sure Ollama is running if you want to generate LLM tags and descriptions. On Windows start the Ollama app; on macOS/Linux the daemon starts automatically.

💡
Subsequent launches

From the second launch onwards OffGallery is completely offline. No internet connection is needed.

3Interface Overview

The interface is organised into 8 horizontal tabs at the top of the window:

TabMain Function
ConfigurationAI model settings, LLM, UI and output language, external editors
ProcessingAI analysis of images: embeddings, BioCLIP, LLM, aesthetic/technical scores, geotagging
SearchNatural language semantic query + EXIF/score/date/colour filters
GalleryDisplay results with badges, preview and advanced sorting
ExportXMP export, file copy with original structure, Lightroom sync
StatisticsDatabase analysis: format breakdown, dates, lenses, scores, ratings
LogReal-time monitoring of processing tasks
PluginStandalone plugin management: launch, configure and monitor progress

3.1 Model Status Indicators

In the top-right corner of the main window there is a fixed bar with coloured indicators for each AI component. At a glance you can verify what is active without opening Configuration.

ColourMeaning
● GreenComponent loaded in VRAM (GPU) — optimal performance
● AmberComponent loaded on CPU — working, optimal for lightweight models (DINOv2, MUSIQ) or as fallback for heavy models when VRAM is insufficient
● RedComponent enabled but not loaded — loading error (e.g. model not found, VRAM exhausted without fallback)
● GreyComponent disabled in configuration

Monitored components: CLIP, DINOv2, BioCLIP, Aesthetic, Technical (MUSIQ), LLM Vision, ExifTool and Database.

Note: The indicator colour reflects the configured device for each model. With per-model allocation (see Device section), some models may intentionally run on CPU (amber) to leverage thread parallelism. BioCLIP has an automatic CPU fallback if VRAM is insufficient.

The LLM indicator shows the name of the detected backend (Ollama or LM Studio) and refreshes automatically every 30 seconds. With the backend set to auto (default), OffGallery automatically detects which server is running with no manual configuration needed.


4Processing Tab

OffGallery Processing Tab
The Processing tab with source selection, AI options and batch start controls

The Processing tab is OffGallery's operational centre. This is where you launch AI analysis sessions that populate the database with embeddings, tags, descriptions and metadata.

4.1 Image Source

At the top of the tab you can choose between two source types:

Source: Directory

Default behaviour. OffGallery scans the selected folder (and all sub-folders) for all supported formats. Use the Browse button to pick a directory, or type the path manually.

💡
Default INPUT folder

The INPUT/ folder in the OffGallery root is the default destination. Copy new photos here to process them.

Source: Lightroom Catalog (.lrcat)

Select a Lightroom .lrcat file directly. OffGallery reads the catalog read-only via SQLite, extracts the full list of indexed files (with absolute paths) and uses them as the source — the original catalog is never modified.

This approach is ideal for:

⚠️
Catalog in use

If Lightroom has the selected catalog open, OffGallery can still read it (read-only access). The catalog is never modified.

4.2 Processing Mode

Three modes selectable via radio buttons:

ModeBehaviour
New images only Processes only images not yet in the database. Already-analysed photos are skipped.
New + previous errors Processes new images and retries those that encountered an error in a previous session.
Complete / Reprocess all Processes all photos (new and already catalogued). With Overwrite OFF: adds only missing data — ideal for completing an interrupted import or applying a model that was not active last time. With Overwrite ON: recalculates everything from scratch. Selecting this mode reveals the AI Gen. Only checkbox: see § 4.4.

4.3 AI Options (LLM Generation)

The AI Generation panel controls the LLM Vision model behaviour:

OptionDescriptionDefault
Generate TagsEnable keyword generation for each imageOn
Generate DescriptionEnable narrative description generationOn
Generate TitleEnable short title generationOn
Max tagsMaximum number of tags to generate10
OverwriteIf selected, overwrites existing tags/description/title. If not selected: tags are merged (only new ones added); description and title are skipped if already present.Off

Grid: effect of Overwrite per field type

Field Overwrite OFF (default) Overwrite ON
Tags Merge: adds only tags not already present (case-insensitive). Existing tags are unchanged. Full replace: all existing tags are replaced with the ones generated by the LLM.
Description Skip: if a description is already present in the DB, the LLM is not called for this field. Always generate: overwrites the existing description with the LLM output.
Title Skip: if a title is already present in the DB, the LLM is not called for this field. Always generate: overwrites the existing title with the LLM output.
CLIP/DINOv2 embeddings Skips photos that already have it in the DB. Recalculates even if already present.
BioCLIP taxonomy Skips photos that already have it in the DB. Recalculates even if already present.
Aesthetic / technical scores Skips photos that already have them in the DB. Recalculates even if already present.
ℹ️
Smart tag merge

With "Overwrite" off, the merge is case-insensitive: if the database already contains "Bird" and the LLM generates "bird", the tag is not duplicated.

Combined grid: Mode × Overwrite

Mode Overwrite Tags Description Title Embeddings / BioCLIP / Scores
New images only OFF Merge (new tags only) Skip if present Skip if present New images only
ON Full replace Always generate Always generate
New + previous errors OFF Merge (new tags only) Skip if present Skip if present New or previously failed images only
ON Full replace Always generate Always generate
Complete / Reprocess all OFF Merge (new tags only) Skip if present Skip if present Only if missing from DB
ON Full replace Always generate Always generate Always regenerated
Complete / Reprocess all + AI Gen. Only OFF / ON Merge / Replace Skip / Generate Skip / Generate Not touched (EXIF, embeddings, BioCLIP, scores skipped)

4.4 "AI Gen. Only" Mode

The AI Gen. Only checkbox appears beside "Reprocess all" when that mode is selected. Checking it activates a special mode that operates only on LLM generation.

This mode is designed for a very common scenario: you have already analysed your photos but want to update tags, descriptions and titles using a better LLM model, without re-running the full pipeline (EXIF, CLIP/DINOv2 embeddings, BioCLIP, aesthetic score, etc.).

What "AI Gen. Only" does

What "AI Gen. Only" does not do

When to use it

  1. You have updated Ollama to a more capable model (e.g. from 4B to 7B)
  2. You want to regenerate tags in a different language
  3. The tags generated with the previous model were unsatisfactory
  4. You want to add descriptions to already-imported photos that have none
⚠️
Prerequisite

Select at least one of "Generate Tags", "Generate Description" or "Generate Title" before starting in AI Gen. Only mode. Otherwise OffGallery shows a warning.

4.5 Run and Monitor

Press the Start button to begin processing. During analysis:

Both completed and user-interrupted runs are safe: the database is updated after each completed image.

💡
Background processing

You can switch to other tabs (Search, Gallery) while processing is running. The process continues in the background.


5Search Tab

OffGallery Search Panel
The search panel with semantic, EXIF and score filters

The Search tab is the heart of photo discovery. It combines semantic search (natural language) with advanced filters on metadata, scores and dates.

5.1 Semantic Search (CLIP)

Semantic search uses CLIP embeddings to find images whose visual content is similar to the concept expressed in the query, regardless of the exact words used.

  1. Type a query in natural language: e.g. "sunset over the sea with boats".

  2. OffGallery automatically translates the query to English (via offline Argostranslate) and encodes it with the CLIP model.

  3. Results are ranked by cosine similarity with all embeddings in the database.

  4. Adjust the Threshold slider to filter low-relevance results (default ~0.20).

💡
Descriptive queries work best

Write descriptive queries about the visual content: "bird in flight against a blue sky" works better than just "heron" (too generic). Include colours, atmosphere, and composition clues.

5.2 Tag Search

Tag search uses fuzzy matching to find images containing specific keywords. The search is:

Combine multiple tags separated by commas for an AND search.

5.3 Advanced Filters

Filters are cumulative: enabling more than one progressively narrows results.

CategoryAvailable Filters
EXIF Camera (make/model), Lens, Focal length (mm), ISO, Shutter speed, Aperture (f/)
Score Minimum aesthetic score (0–10), Minimum technical score (0–10)
Rating Lightroom stars: 0 to 5 (compatible with XMP import/export)
Colour Colour label (red, yellow, green, blue, purple) or automatically-detected Black & White
Date Capture date range (from → to)
Format RAW only, JPEG only, or all
Location City or region with autocomplete from values in the DB (GeoNames plugin). Contains-search, case-insensitive.
GPS 4 states: All · GPS only · GPS manually modified · No GPS (GeoNames plugin)
Common name Filter by biological common name with autocomplete (BioNomen plugin). Contains-search on the field.
Habitat ESA WorldCover habitat type (forest, shrubland, grassland, urban, water…) — NaturArea plugin
Protected area Free text on the WDPA protected area name — NaturArea plugin
Weather condition Clear · Partly cloudy · Cloudy · Fog · Drizzle · Rain · Snow · Thunderstorm — Weather plugin
ℹ️
Plugin filters

The Location, GPS, Common name, Habitat, Protected area and Weather condition filters are visible only when the corresponding plugin is installed and has already processed at least one photo. If the plugin is absent, the row does not appear in the interface.

5.4 Saved Searches

You can save the complete configuration of a search (query + all active filters) with a custom name. Saved searches can be recalled in one click from the drop-down menu.

  1. Configure the desired search (query, threshold, filters).

  2. Click Save search and assign a name.

  3. To recall it: select it from the "Saved searches" drop-down and press Load.

Searches are saved in database/saved_searches.json.


6Gallery Tab

OffGallery Gallery
The gallery shows results with badges, thumbnails and hover details

The Gallery displays the results of the current search. Each image is shown as a thumbnail with informational badges overlaid.

6.1 Badges and Indicators

BadgeMeaning
★ 4.2Aesthetic score (0–10). Colour: green >7, yellow 5–7, grey <5
⚙ 8.1Technical score (sharpness/noise, JPEG/PNG only)
★★★★Lightroom star rating (1–5)
B&WBlack-and-white image detected automatically
Lightroom colour label (red/yellow/green/blue/purple)

Hover tooltip

Hovering over a thumbnail shows a tooltip with:

6.2 Sorting

The Sort by menu offers 7 criteria:

  1. Relevance (CLIP similarity score — default for semantic searches)
  2. Capture date (ascending or descending)
  3. Filename
  4. Star rating
  5. Aesthetic score
  6. Technical score
  7. Composite score (aesthetic + technical)

Each criterion supports ASC or DESC direction.

6.3 Context Menu

Right-clicking any thumbnail opens the context menu with available actions:

ActionDescription
Open in external editorOpens the original file in Lightroom, Capture One, or another configured editor
Show in file managerOpens the folder containing the original file
Find similar imagesStarts a visual similarity search (DINOv2) using this image as the query
Edit tagsOpens an inline editor to add/remove tags manually
Regenerate AIRegenerates tags, description and title for this single image
Export XMPImmediately exports the XMP sidecar for this image
Run GeoNamesUpdates the geographic hierarchy from GPS for this image (GeoNames plugin)
Run NaturAreaDetects protected area and habitat from the GPS location (NaturArea plugin)
Run WeatherRetrieves historical weather conditions at time of capture (Weather plugin — requires internet)
Run BioNomenAdds common biological names in the configured language (BioNomen plugin)
ℹ️
Plugin actions in the context menu

Plugin entries appear in the context menu only when the corresponding plugin is installed. Actions apply to the selected image. To process multiple images in batch, use the Processing tab.


7Statistics Tab

OffGallery Statistics
The statistics panel shows detailed analysis of the photo database

The Statistics tab provides an analytical overview of the entire indexed archive:


8Export Tab

OffGallery Export Tab
The Export tab with XMP metadata, CSV data sheet and image file options

The Export tab is organised into three distinct sections — XMP Metadata, CSV Data Sheet and Image Files — which can be combined freely. At the top of the panel you'll find the Presets bar for saving and recalling complete configurations.

8.1 Export Presets

The entire tab configuration (all active flags, advanced options) can be saved with a name and recalled later.

ℹ️
Automatic persistence

The last configuration used is remembered automatically: next time you open the tab, the same options are pre-selected. Presets are stored in database/saved_exports.json.

8.2 XMP Metadata

Writes .xmp sidecar or embedded files compatible with Lightroom, DxO, Capture One and any software that respects the XMP/IPTC standard.

OptionDescription
XMP SidecarSeparate .xmp file alongside the original
XMP EmbeddedMetadata written directly into the image file
Include DNGAllows embedded XMP in DNG files (disabled by default for safety)

Exported fields include: user and LLM tags (dc:subject), BioCLIP taxonomy (lr:hierarchicalSubject with prefix AI|Taxonomy|), geographic hierarchy (GeOFF|), star rating, LLM description and title. Plugin data (habitat, protected area, weather, common name) is written as additional XMP fields when present.

Grid: XMP fields exported by data type

DataXMP fieldStandardVisible in Lightroom as
User + LLM tagsdc:subjectDublin CoreFlat keywords
BioCLIP taxonomylr:hierarchicalSubjectLightroomHierarchy AI > Taxonomy > ...
Geographic hierarchy (GeoNames)lr:hierarchicalSubjectLightroomHierarchy GeOFF > Europe > Italy > ...
LLM descriptiondc:descriptionDublin CoreCaption / Description
LLM titledc:titleDublin CoreTitle
Star ratingxmp:RatingXMP BasicStars 1–5
Colour labelxmp:LabelXMP BasicColour label

Grid: XMP import → DB behaviour

Field in XMP fileImported?Notes
Tags (dc:subject) without special prefix✅ YesMerged into existing DB tags (case-insensitive)
Tags with prefix AI|Taxonomy|❌ NoFiltered: BioCLIP taxonomy is managed internally only
Tags with prefix GeOFF|❌ NoFiltered: geographic hierarchy is managed internally only
Star rating (xmp:Rating)✅ YesUpdates the star field in the DB
Colour label (xmp:Label)✅ YesUpdates the color_label field in the DB
Description (dc:description)✅ YesUpdates the description field in the DB
Title (dc:title)✅ YesUpdates the title field in the DB
Proprietary namespaces (Darktable, Capture One…)⚠️ PreservedCopied into the new XMP without interpretation — no proprietary data is lost

Grid: XMP output format by photo editor

EditorSidecar formatOption in OffGalleryNotes
Lightroomfilename.xmpOutput format: LightroomSidecar alongside the RAW, standard convention
Darktablefilename.EXT.xmpOutput format: DarktableE.g. IMG_001.NEF.xmp — double extension
Capture Onefilename.xmpOutput format: LightroomReads the standard Lightroom format
digiKam / ACDSee / FastRawViewerfilename.xmpOutput format: LightroomCompatible with the standard format

XMP destination

Choose between Next to original (the .xmp is created in the same folder as the RAW) and Single folder (all XMP files written to a folder of your choice).

8.3 CSV Data Sheet

Exports a complete CSV file with all database metadata (46 fields: file data, camera, lens, exposure settings, dates, GPS, AI scores, tags, etc.).

OptionDescription
Exclude GPSOmits GPS columns from the CSV (coordinates, city, country)
Exclude EXIFOmits technical EXIF data (camera, lens, exposure, ISO, flash, etc.)

Both options are disabled by default: the CSV includes everything. Columns remain present in the file even when excluded (fixed schema), but values are empty — useful for importers expecting a predefined schema.

8.4 Image Files

Copies original files to a destination while preserving the original folder hierarchy, even when photos come from different disks.

OptionDescription
Exclude GPSRemoves GPS tags from the copy via ExifTool. The original is never modified.
Exclude EXIFRemoves all EXIF metadata from the copy (camera, lens, settings). The original is never modified.
Preserve structureRecreates the original folder hierarchy at the destination
Overwrite existingOverwrites files already present at the destination

Example with photos on two disks:

Source:
  C:\Photos\2024\Sardinia\IMG_001.NEF
  D:\Archive\2023\Tuscany\DSC_999.NEF

Destination (e.g. E:\Backup):
  E:\Backup\C_drive\Photos\2024\Sardinia\IMG_001.NEF
  E:\Backup\D_drive\Archive\2023\Tuscany\DSC_999.NEF

On macOS the prefix uses the volume name, on Linux the mount point.


9Configuration Tab

OffGallery Configuration Tab
The Configuration tab with AI model parameters and application preferences

The Configuration tab lets you customise parameters for all AI models and application preferences. Settings are saved in config_new.yaml.

Section: LLM Connection

ParameterDescriptionDefault
BackendLLM plugin to use (Ollama, LM Studio)Ollama
EndpointLLM server URLDepends on selected plugin
ModelModel nameqwen3-vl:8b-instruct-q4_K_M
TimeoutMaximum seconds to wait for a response180

Section: Language

SettingDescription
UI languageLanguage of menus and buttons (IT/EN/FR/DE/ES/PT)
LLM output languageLanguage in which the LLM model generates tags and descriptions (independent of the UI)
💡
Independent languages

You can have the UI in English and tags generated in Italian, or any other combination. Tag search adapts to the language of the content.

Section: External editor

Configure the path to your external photo editor (Lightroom, Capture One, etc.) to open original files directly from the Gallery.

Section: Per-Model Device Allocation

This section lets you assign each AI model to GPU or CPU individually. A table shows all models with their estimated VRAM usage and a GPU/CPU selector for each.

ElementDescription
Model tableEach row shows the model, estimated VRAM (~GB), and GPU/CPU selector
VRAM budget barShows real-time total VRAM usage (models + LLM) vs available VRAM. Colour: green (≤80%), amber (≤95%), red (>95%)
LLM rowShows VRAM used by the LLM model (Ollama/LM Studio), auto-detected or estimated from model name
Auto-optimizeCalculates optimal GPU/CPU distribution based on detected hardware, VRAM budget and LLM VRAM
💡
GPU vs CPU: when is CPU better?

Heavy, slow models (CLIP, BioCLIP) benefit from GPU acceleration. Lightweight, fast models (DINOv2, MUSIQ) perform better on CPU because parallel threads don't serialize as they do on GPU. Auto-optimization accounts for this trade-off.

⚠️
Restart required

Changes to model device assignments require an application restart to take effect. A message next to the Auto-optimize button will remind you.

Section: AI Models

Path of the AI models directory (Models/). Can be relative to the OffGallery root or an absolute path (e.g. on a large external drive).


9bPlugins

OffGallery Plugins
The Plugin section showing installed modules and their configuration options

OffGallery includes an auto-discovery plugin system: plugins are detected automatically from the plugins/ folder at startup, with no manual configuration. Plugins fall into two categories: LLM (text generation) and Data (contextual enrichment).

💡
All plugins are optional

Without any plugin installed, OffGallery works normally for all core features: CLIP semantic search, DINOv2 visual similarity, BioCLIP classification, aesthetic and technical scores, EXIF filters. Plugins add further capabilities but are not prerequisites.

9b.1 LLM Plugins — text generation

Enable automatic generation of tags, descriptions and titles via local LLM Vision models. Configured from the Configuration → LLM Connection tab.

PluginBackendDefault endpointNotes
Ollama Local Ollama http://localhost:11434 Optimised for qwen3-VL, llava, gemma3. think=false support, timing diagnostics, automatic VRAM warmup/unload. Recommended for NVIDIA GPUs and Apple Silicon.
LM Studio LM Studio server
Plugin by Riccardo Merlotti
http://localhost:1234 OpenAI-compatible API. AMD/DirectML support, lms CLI unload. Recommended for AMD GPUs or users who prefer a GUI for model management.

Recommended models

ModelBackendVRAM requiredOutput quality
qwen3-vl:8b-instruct-q4_K_MOllama~6 GBExcellent — recommended
qwen3-vl:4b-instruct-q4_K_MOllama~4 GBGood — for GPUs with limited VRAM
llava:7bOllama~5 GBDecent
qwen3-VL (any quantisation)LM StudiovariableExcellent

Switching backends

  1. Open the Configuration tab
  2. In the LLM Connection section, select the backend from the dropdown
  3. Verify that endpoint and model are correct for the chosen backend
  4. Click Test Connection to verify
💡
No restart required

Switching LLM backends does not require an application restart. Tags and descriptions already in the database remain unchanged.

9b.2 Data Plugins — contextual enrichment

Enrich photos already in the database with additional information derived from GPS, date/time and BioCLIP taxonomy. Run from the Gallery (context menu) or in batch from the Processing tab.

PluginFunctionRequiresDB output
GeoNames Full geographic hierarchy from GPS: Continent → Country → Region → City. Bundled GeoNames data, no API required. GPS in photo geo_hierarchy field. Enables Location filter and 4-state GPS filter in Search.
GeoSpecies Restricts BioCLIP's search space to species biologically expected at the GPS location (GBIF/eBird data). Reduces from ~450k global species to a geographically relevant subset. Runs automatically during batch processing — not executable manually from the Gallery. GPS + BioCLIP already run Updates bioclip_taxonomy with a more precise classification.
NaturArea Identifies whether the photo was taken in a protected area (WDPA database) and the habitat type (ESA WorldCover: forest, shrubland, grassland, urban, water…). GPS protected_area and habitat fields. Enables Habitat and Protected area filters in Search.
Weather Retrieves historical weather conditions (Open-Meteo) at the exact time of capture: temperature, humidity, wind, precipitation, condition. GPS + date/time + internet connection weather_context field (JSON). Enables Weather condition filter in Search.
BioNomen Adds common biological names in the configured language (GBIF, 6 languages). Example: Ardea cinerea → "Grey Heron" (EN), "Airone cenerino" (IT). BioCLIP already run vernacular_name field. Enables Common name filter with autocomplete in Search.

Grid: data plugin combinations and prerequisites

Plugin GPS present BioCLIP run Internet Result
GeoNames✅ YesNoFull geographic hierarchy written
GeoNames❌ NoSkipped — log warning
GeoSpecies✅ Yes✅ YesNoBioCLIP refined for geographic area
GeoSpecies❌ No✅ YesSkipped — GPS required
GeoSpecies✅ Yes❌ NoSkipped — BioCLIP required
NaturArea✅ YesNoProtected area + habitat detected
NaturArea❌ NoSkipped — GPS required
Weather✅ Yes✅ YesHistorical weather conditions retrieved
Weather❌ NoSkipped — GPS required
Weather✅ Yes❌ NoConnection error — log warning
BioNomen✅ YesNo (after first setup)Common names added in configured language
BioNomen❌ NoSkipped — BioCLIP required

9b.3 Prompt Context Plugin — LLM prompt customisation

The Prompt Context plugin injects a custom CONTEXT block into OffGallery's Vision-Language prompt, steering the model towards the archive's specific photographic domain. With no active preset the behaviour is identical to the standard OffGallery prompt.

Available presets

IconNameDomain
StandardStandard OffGallery prompt — no additional context
🦋Wildlife ArchiveSpecies, habitat, animal behaviour — scientific photography
🏔Landscape & TerritoryGeomorphology, natural light, season, geographic context
🔭AstrophotographyCelestial objects, constellations, atmospheric conditions
🔬Scientific MacroExtreme detail, microscopic structures, entomology
🐠UnderwaterMarine species, behaviour, visibility conditions
📰Reportage & DocumentarySocial context, visual narrative, historical documentation
🛍Commercial & ProductProduct, brand, visual communication, technical composition
🌆Street & UrbanUrban life, architecture, ambient light, social interaction

How to select a preset

  1. Go to the Plugin tab and click Configure ▸ on the Prompt Context card
  2. Select a preset from the list
  3. Click ✅ Activate — the preset becomes active for all subsequent processing
  4. To revert to the standard prompt, select ⬜ Standard and press Activate

The active preset is shown next to the card in the Plugin tab and in the Prompt context dropdown in the Processing tab. Settings are remembered across sessions.

User presets

Custom presets can be generated using the local LLM model configured in OffGallery:

  1. In the Configure dialog, expand the Generate new preset section
  2. Describe the photographic domain in the text field (e.g. "freshwater underwater photography archive, focusing on invertebrates and algae")
  3. Click Generate — the LLM model creates an optimised CONTEXT block
  4. Review the generated text, give the preset a name and click Save

User presets are marked with ★ in the list and can be deleted with the 🗑 Delete button. Built-in presets cannot be deleted.

💡
Per-task override

From the Gallery context menu (right-click a photo → Generate with LLM) you can select a different preset for that specific run without changing the global active preset.

9b.4 Beta access and installation

📬
Beta access

During the beta testing period all plugins are distributed free of charge on request. Write to offgallery.ai.info@gmail.com stating:

  • Operating system (Windows / Linux / macOS) and version
  • System RAM
  • GPU (model and VRAM) — or "CPU only" if you have no dedicated GPU
  • Plugins requested (LLM: Ollama or LM Studio; data plugins: list which ones)

The address will be used solely to send the plugins and for update notifications — no other purpose, no sharing with third parties.

Installing a plugin (from zip)

  1. Extract the zip contents into the plugins/ folder of your OffGallery installation.
  2. The resulting structure should be:
    plugins/
    └── plugin_name/
        ├── manifest.json
        └── plugin_name.py  (or the main file indicated in the manifest)
  3. Restart OffGallery — the plugin is detected automatically. The Log panel confirms loading.
💡
Plugin folder not visible?

Make sure you extracted the plugin zip into the correct folder and that the folder structure shown above is respected.

BioNomen — species database setup

The species database must be downloaded by selecting the taxa of interest (internet required only once):

  1. Start OffGallery
  2. Go to the Plugin tab and click Configure in the BioNomen card
  3. Select the taxa of interest (Aves, Mammalia, Reptilia, Amphibia, Insecta, Plantae)
  4. Click Download database

10Log Tab

OffGallery Log Tab
The Log tab with real-time output and colour-coded syntax

The Log tab is the application's centralised monitoring panel. It captures in real time all messages produced by any module — including print() and stderr output — and displays them in a scrollable text area with colour-coded syntax.

Log content

Line format

[HH:MM:SS] LEVEL    - module.name - message

Available controls

ControlFunction
Checkbox DEBUG Show/hide detailed debug messages (very verbose, useful for diagnosis)
Checkbox INFO Show/hide normal informational messages (ongoing operations)
Checkbox WARNING Show/hide warnings (skipped files, out-of-range parameters)
Checkbox ERROR Show/hide critical errors. Also covers CRITICAL level messages
Button 🗑️ Clear Clears the log from both the display and memory
ℹ️
500-entry limit

The log keeps at most 500 lines in memory. Older entries are automatically removed to prevent performance degradation during long processing runs.

💡
Copy the log for support

Click in the text area, press Ctrl+A to select all, then Ctrl+C to copy. Paste the text into a GitHub issue or support message to provide the full technical context.


11BioCLIP Biological Taxonomy

BioCLIP2 is a Vision model specialised in biological species recognition. It was trained on ~450,000 Tree of Life species and produces a full 7-level taxonomic classification:

Kingdom › Phylum › Class › Order › Family › Genus › Species
  e.g.: Animalia › Chordata › Aves › Pelecaniformes › Ardeidae › Ardea › Ardea cinerea

Where taxonomy appears

ℹ️
Separation from tags and LLM

The Latin species name (e.g. Ardea cinerea) is inserted programmatically by OffGallery — it is never asked of the LLM, which frequently makes errors with scientific names. The LLM uses the name as context but does not generate it.

12Offline Geotagging

OffGallery reads GPS coordinates from EXIF metadata and converts them to a readable geographic hierarchy using bundled GeoNames data (~130,000 cities): no external API, no internet connection needed after installation.

The output format is:

GeOFF | Europe | Italy | Sardinia | Trinità d'Agultu

In XMP export it appears as HierarchicalSubject with prefix GeOFF|, visible in Lightroom as a separate hierarchy from user keywords.

13XMP Sync State

OffGallery tracks the synchronisation status of each image with its XMP file:

StateMeaning
PERFECT_SYNCThe XMP file exists and is up to date with the database content
DIRTYThe database was updated after the last XMP export — the XMP file is stale
NO_XMPNo XMP file has been exported yet for this image
XMP_NEWERThe XMP file was modified externally (e.g. by Lightroom) after the last import

14Multilingual Support

OffGallery manages three independent language levels:

  1. UI language: buttons, menus, labels (6 languages: IT, EN, FR, DE, ES, PT)
  2. LLM output language: language in which the model generates tags and descriptions (separately configurable)
  3. Query language: search queries are automatically translated offline via Argostranslate — you can search in English even if tags are in Italian

15FAQ — Frequently Asked Questions

Ollama is not responding / timeout

Check that Ollama is running. On Windows: look for "Ollama" in the system tray. On macOS/Linux: run ollama list in a terminal. Make sure the configured model is downloaded (e.g. ollama pull qwen3-vl:8b-instruct-q4_K_M).

Generated tags are in Italian but I want English

Go to Configuration → LLM output language and select "English". Then use "AI Gen. Only" to regenerate tags for all photos already in the database.

Semantic search is not finding relevant photos

CLIP embeddings may have been generated with an incompatible library version. Reprocess photos with "Reprocess all" after verifying library versions. On Windows and Linux reinstall using the wizard (OffGallerySetup.exe or OffGallerySetup); on macOS see installer/INSTALL_GUIDE_EN.md for version requirements.

A RAW file is not being processed

Some high-efficiency RAW formats (e.g. NEF with lossless compression) do not contain an extractable JPEG preview. In these cases OffGallery saves EXIF metadata but skips embeddings and LLM. Check the Log tab for details.

How do I update OffGallery?

Download the new ZIP from GitHub and extract it over the existing folder. Your data (database/, INPUT/, cache/) is not included in the ZIP and remains untouched. If you installed with git clone, just run git pull from the OffGallery folder.

Can I use a different LLM model or backend?

Yes. In Configuration you can select a different backend (Ollama or LM Studio) and change the model. Tested with Ollama: qwen3-vl:8b-instruct-q4_K_M (recommended), qwen3-vl:4b-instruct-q4_K_M, llava:7b, minicpm-v. With LM Studio: qwen3-VL (recommended). Best results with multimodal vision models.

How do I switch to LM Studio?

Install LM Studio, download a vision model (recommended: qwen3-VL) and start the server. In OffGallery, go to Configuration and select LM Studio: the endpoint updates automatically to http://localhost:1234. Enter the model name and click Test. No manual file editing required.

Does LM Studio work with NVIDIA GPUs?

Yes. LM Studio automatically detects NVIDIA GPUs and uses CUDA. No extra configuration needed. LM Studio is especially useful for AMD GPU users (DirectML support), where Ollama doesn't work well. With NVIDIA, both backends work equally well.

Do I need to reconfigure the LLM backend after updating?

No. If you were using Ollama, it continues to work automatically. The system detects Ollama as the default backend even if your configuration file doesn't have the backend entry yet. The backend selector appears in the Configuration tab only for those who want to switch.

BioCLIP data appears as keywords in Lightroom

This is expected behaviour. They appear as a separate AI > Taxonomy > ... hierarchy in Lightroom's keyword structure. They do not interfere with your own keywords.

16Troubleshooting

IssueLikely causeSolution
CLIP scores always near zero Embeddings generated with wrong version of transformers library Run pip install transformers==4.57.3 and reimport photos
Wrong geotagging (incorrect city) GPS West longitude not interpreted correctly (older versions) Reprocess photos with version ≥ 10 Mar 2026
App starts but window does not appear (macOS) Qt/Cocoa segfault on first launch Use the updated launcher that downloads models in a separate process
Error "mat1 and mat2 shapes cannot be multiplied" transformers version incompatibility with CLIP ViT-L/14 Install pinned versions: transformers==4.57.3 huggingface-hub==0.36.0 open-clip-torch==3.2.0
XMP import does not import some tags Tags with prefix AI|Taxonomy| or GeOFF| are intentionally filtered This is correct behaviour. These tags are managed internally by OffGallery.
Conda not found on launch (macOS) Wrong Miniconda architecture (x86_64 on Apple Silicon) Reinstall Miniconda with arm64 architecture. See README Installation section.
Support and updates

Report issues and feature requests on GitHub Issues. Announcements and discussions on GitHub Discussions.

17Uninstalling

Windows: OffGallerySetup.exe does not include an automatic uninstaller. Removal is done manually in two steps: removing the conda environment and deleting the application folder. Linux/macOS: same procedure — an extracted folder with an associated conda environment.

⚠️
Before you proceed

Export any important metadata via Export Tab → Export XMP or Export CSV if you want to keep tags, descriptions and ratings you have already generated.

Windows

  1. Open the Anaconda Prompt from the Start menu.
  2. Remove the conda environment:
    conda deactivate
    conda env remove -n OffGallery
  3. Delete the application folder (e.g. C:\OffGallery-main or wherever you extracted it) via File Explorer or from the prompt:
    rmdir /s /q C:\OffGallery-main
  4. If you created a Desktop shortcut, delete it manually.

macOS

  1. Open Terminal.
  2. Remove the conda environment:
    conda deactivate
    conda env remove -n OffGallery
  3. Delete the application folder (e.g. /Applications/OffGallery-main):
    rm -rf /Applications/OffGallery-main
  4. Remove any configuration files in your home directory:
    rm -rf ~/.offgallery

Linux

  1. Open a terminal.
  2. Remove the conda environment:
    conda deactivate
    conda env remove -n OffGallery
  3. Delete the application folder:
    rm -rf ~/OffGallery-main
    (replace with the actual path where you extracted the app)
  4. Remove any configuration files:
    rm -rf ~/.offgallery

What remains after uninstallation

ItemLocationRemoved by the steps above?
Conda environment OffGallery~/miniconda3/envs/OffGallery/Yes — conda env remove
Application folderWhere you extracted itYes — removed manually
Image databaseInside the app folder (database/)Yes — removed with the folder
Downloaded AI modelsInside the app folder (Models/) or custom path set in config_new.yamlOnly if inside the app folder; otherwise remove manually
HuggingFace cache~/.cache/huggingface/ (Linux/macOS) · %USERPROFILE%\.cache\huggingface\ (Windows)No — remove manually if desired
Miniconda / conda itself~/miniconda3/No — conda remains installed for other environments
XMP sidecar filesNext to your original photosNo — these are your data and are never touched
ℹ️
HuggingFace cache

On first launch, CLIP and DINOv2 models are downloaded from HuggingFace and saved both in Models/ (inside the app folder) and in the HF cache. The cache can occupy several GB. To remove it:

  • Linux / macOS: rm -rf ~/.cache/huggingface/
  • Windows: delete the folder %USERPROFILE%\.cache\huggingface\ via File Explorer

If you have other projects using HuggingFace, remove only the subfolder hub/models--HEGOM--OffGallery-models instead of the entire cache.

ℹ️
Models in a custom location

If you set an absolute path for AI models in config_new.yaml (e.g. E:\MyModels), that folder is not removed automatically. Delete it manually if you no longer need it for other projects.

18Reinstalling

If you have removed OffGallery and want to reinstall it from scratch, follow these steps in order to avoid conflicts with leftovers from the previous installation.

⚠️
Before you begin

If you have data to keep (tags, descriptions, ratings), export them before removing the old installation via Export tab → Export XMP or Export CSV.

1. Make sure the old installation is fully removed

Check that no leftovers from the previous installation remain:

  1. Application folder: make sure the OffGallery folder (e.g. C:\Users\name\OffGallery or wherever you installed it) has been deleted. If it still exists, remove it manually before continuing.
  2. Conda environment: open Anaconda Prompt from the Start menu and check:
    conda env list
    If OffGallery appears in the list, remove it:
    conda env remove -n OffGallery
    A corrupted environment left over from the old installation can cause errors in the new one too.

Windows — clean reinstall with Miniconda already present

If Miniconda is already installed and working, you can proceed directly:

  1. Download the new OffGallerySetup.exe from the website — do not reuse a previously downloaded installer.
  2. Run the installer. If Windows shows an "Unrecognized app" warning (SmartScreen), click More infoRun anyway: this is normal for apps without a digital signature.
  3. The wizard will detect Miniconda already present and only create the new OffGallery environment.

Windows — full reinstall from scratch (including Miniconda)

  1. Uninstall Miniconda from Control Panel → Programs.
  2. Download the new OffGallerySetup.exe from the website.
  3. Run it: it will install Miniconda, create the OffGallery environment and download all AI models (~8 GB).

Linux — reinstall

Download the new OffGallerySetup (Linux binary) from the website, make it executable and run it:

chmod +x OffGallerySetup
./OffGallerySetup

macOS — manual reinstall

On macOS there is no graphical installer. Follow the steps in installer/INSTALL_GUIDE_EN.md bundled with the application. In brief:

  1. Download the latest source archive from GitHub Releases and extract it.
  2. Open Terminal and run the setup script:
    bash installer/install.sh
  3. The script will create the OffGallery conda environment and download the AI models.
ℹ️
AI Models

If you kept the Models/ folder from the old installation, copy it into the new app folder and point to it in Config → Models directory to avoid re-downloading ~8 GB.

OffGallery  ·  User Manual v1.0  ·  April 2026  ·  github.com/HEGOM61ita/OffGallery  ·  Credits & licenses