A fast Windows desktop gallery for a large local photo library — built for a quarter-million photos and videos in a
OneDrive-synced Pictures folder. It finds things by what's in them, not just by file name: people, places, text in
photos, what was said in videos, and what a photo looks like. The AI work runs on your own PC.
Your files are never changed unless you ask (edit and save, or delete). Ratings, tags, albums and everything the app works out live in its own database.
.MOV stored next to the photo (older iPhone photos);People from OneDrive: the names you gave and the people OneDrive merged, with face positions and avatars.
Who's this? (People › Who's this?) goes through the people OneDrive found but nobody named, most photos first, with a few of their faces from over the years. Type a name, or pick someone already named to join them. Names and joins go back to OneDrive too, the way OneDrive's own People page sends them: right away, or when OneDrive is connected again (Settings shows anything waiting or refused). Or set someone aside, on this PC only:
People › Show has both, to change your mind. Right-click anyone on People to name, join or set them aside.
Place names:
Map with clustered photo markers. The photos in view are listed beside it, and clicking a cluster lists just those.
Find a place on the map by name: your places, the parks, schools and restaurants your photos were taken at, and towns (GeoNames, biggest first; "Springfield, IL" or "Paris, France" narrows it down), as you type. Anywhere else (an address, a landmark) comes from OpenStreetMap, only when you ask.
Open the library from another computer on the same network:
Organize from there too:
Edit from there too:
Everything but rating needs the main PC's permission (Settings › Remote access › Let them change things too).
The viewer:
In a browser (any computer, tablet or phone) at https://<computer name>:47813, or in Photo Gallery on the
other computer: Another computer at the bottom of the menu. There, the title bar's search box searches the
other computer's photos.
The main PC does the work: searching by description on its graphics card, decoding HEIC for browsers, fetching Live Photo videos from OneDrive. The other computer needs nothing installed but a browser.
Off until you turn it on (Settings › Remote access, with a passphrase). Other computers can browse, search, view, download and rate; changing or editing anything else is a separate switch. OneDrive's sign-in never leaves the main PC.
Secured for a home network:
Photo Gallery on the other computer shows the main PC's security code the first time, to compare with the one in its Settings; after that it only accepts that certificate. Browsers warn once that the connection isn't private, because nothing vouches for a certificate the PC made itself.
Double-click PhotoGallery.bat in the repo root. It builds the app (quick when nothing changed, so it's always
the latest after pulling), then starts it. PhotoGallery.bat nobuild starts the last build as it is. It won't start
a second copy, or build while one is running.
Or from a terminal:
dotnet build PhotoGallery.slnx
dotnet run --project src/PhotoGallery.App
%OneDrive%\Pictures. Add or remove folders in Settings › Library folders.https://<computer name>:47813 in a browser, accept the warning about the certificate, and enter the
passphrase; ordotnet run --project tools/PhotoGallery.Cli -- remote-check <computer> checks a host from the command line.| Where | Keys |
|---|---|
| Anywhere | Ctrl+E search · Alt+←/→ or mouse back/forward buttons: back/forward |
| Gallery | Enter open · Del delete · Ctrl+wheel tile size |
| Viewer | ←/→ previous/next · Space play Live Photo/video · 1–5 rate, 0 clear · E edit · I info · Del delete · Ctrl+Shift+C copy path · Ctrl+F find in transcript or photo text · Esc close |
| Viewer, video | , / . previous/next frame · S save frame |
| Photo editor | [ / ] rotate · Ctrl+S save as copy · Esc close |
| Video editor | Space play/pause · I / O set start/end · Ctrl+S save · Esc close |
| Remote (web) | / or Ctrl+E search · grid: Ctrl+A select all, Del delete, Esc clear · viewer: ←/→, Space play Live Photo, 1–5 rate, 0 clear, I info, F faces, T text, +/− zoom, E edit, , / . frames, S save frame, Del delete, Esc close · editor: [ / ] rotate, Ctrl+S save as copy |
The database, thumbnail and video caches, AI models, settings and app.log live in %LocalAppData%\PhotoGallery.
Deleting that folder resets the app; your photos aren't touched. Caches are never kept inside a OneDrive folder.
| Path | What |
|---|---|
src/PhotoGallery.App | WinUI 3 app (Windows App SDK, unpackaged) |
src/PhotoGallery.Core | Indexing, metadata, SQLite data layer, search, thumbnails, OneDrive clients, places, similarity |
src/PhotoGallery.Embedder | CLIP on the graphics card (DirectML), a separate process so its ONNX Runtime doesn't clash with the app's |
src/PhotoGallery.Remote | Remote access: the HTTPS server (Kestrel) and the web app it serves (web/) |
tests/PhotoGallery.Core.Tests | xUnit v3 tests (dotnet test --project tests/PhotoGallery.Core.Tests) |
tools/PhotoGallery.Cli | Headless indexing, stats, a thumbnail benchmark and a remote access check (dotnet run --project tools/PhotoGallery.Cli -- stats) |
tools/remote-testing | The message channel for testing remote access from another computer |
spikes/ | Early experiments (OneDrive Live Photo video) |
docs/plan.md | Plan, decisions and findings |
docs/store-plan.md | What it would take to publish in the Microsoft Store |
docs/remote-testing.md | How to test remote access from another computer |
docs/web-plan.md | Ways to use the app on the web, away from home |
Built with the Windows App SDK (WinUI 3), Win2D, SQLite (Microsoft.Data.Sqlite, Dapper) and MetadataExtractor. Also:
Each component and model keeps its own license; see their projects.
A fast Windows desktop gallery for a large local photo library — built for a quarter-million photos and videos in a
OneDrive-synced Pictures folder. It finds things by what's in them, not just by file name: people, places, text in
photos, what was said in videos, and what a photo looks like. The AI work runs on your own PC.
Your files are never changed unless you ask (edit and save, or delete). Ratings, tags, albums and everything the app works out live in its own database.
.MOV stored next to the photo (older iPhone photos);People from OneDrive: the names you gave and the people OneDrive merged, with face positions and avatars.
Who's this? (People › Who's this?) goes through the people OneDrive found but nobody named, most photos first, with a few of their faces from over the years. Type a name, or pick someone already named to join them. Names and joins go back to OneDrive too, the way OneDrive's own People page sends them: right away, or when OneDrive is connected again (Settings shows anything waiting or refused). Or set someone aside, on this PC only:
People › Show has both, to change your mind. Right-click anyone on People to name, join or set them aside.
Place names:
Map with clustered photo markers. The photos in view are listed beside it, and clicking a cluster lists just those.
Find a place on the map by name: your places, the parks, schools and restaurants your photos were taken at, and towns (GeoNames, biggest first; "Springfield, IL" or "Paris, France" narrows it down), as you type. Anywhere else (an address, a landmark) comes from OpenStreetMap, only when you ask.
Open the library from another computer on the same network:
Organize from there too:
Edit from there too:
Everything but rating needs the main PC's permission (Settings › Remote access › Let them change things too).
The viewer:
In a browser (any computer, tablet or phone) at https://<computer name>:47813, or in Photo Gallery on the
other computer: Another computer at the bottom of the menu. There, the title bar's search box searches the
other computer's photos.
The main PC does the work: searching by description on its graphics card, decoding HEIC for browsers, fetching Live Photo videos from OneDrive. The other computer needs nothing installed but a browser.
Off until you turn it on (Settings › Remote access, with a passphrase). Other computers can browse, search, view, download and rate; changing or editing anything else is a separate switch. OneDrive's sign-in never leaves the main PC.
Secured for a home network:
Photo Gallery on the other computer shows the main PC's security code the first time, to compare with the one in its Settings; after that it only accepts that certificate. Browsers warn once that the connection isn't private, because nothing vouches for a certificate the PC made itself.
Double-click PhotoGallery.bat in the repo root. It builds the app (quick when nothing changed, so it's always
the latest after pulling), then starts it. PhotoGallery.bat nobuild starts the last build as it is. It won't start
a second copy, or build while one is running.
Or from a terminal:
dotnet build PhotoGallery.slnx
dotnet run --project src/PhotoGallery.App
%OneDrive%\Pictures. Add or remove folders in Settings › Library folders.https://<computer name>:47813 in a browser, accept the warning about the certificate, and enter the
passphrase; ordotnet run --project tools/PhotoGallery.Cli -- remote-check <computer> checks a host from the command line.| Where | Keys |
|---|---|
| Anywhere | Ctrl+E search · Alt+←/→ or mouse back/forward buttons: back/forward |
| Gallery | Enter open · Del delete · Ctrl+wheel tile size |
| Viewer | ←/→ previous/next · Space play Live Photo/video · 1–5 rate, 0 clear · E edit · I info · Del delete · Ctrl+Shift+C copy path · Ctrl+F find in transcript or photo text · Esc close |
| Viewer, video | , / . previous/next frame · S save frame |
| Photo editor | [ / ] rotate · Ctrl+S save as copy · Esc close |
| Video editor | Space play/pause · I / O set start/end · Ctrl+S save · Esc close |
| Remote (web) | / or Ctrl+E search · grid: Ctrl+A select all, Del delete, Esc clear · viewer: ←/→, Space play Live Photo, 1–5 rate, 0 clear, I info, F faces, T text, +/− zoom, E edit, , / . frames, S save frame, Del delete, Esc close · editor: [ / ] rotate, Ctrl+S save as copy |
The database, thumbnail and video caches, AI models, settings and app.log live in %LocalAppData%\PhotoGallery.
Deleting that folder resets the app; your photos aren't touched. Caches are never kept inside a OneDrive folder.
| Path | What |
|---|---|
src/PhotoGallery.App | WinUI 3 app (Windows App SDK, unpackaged) |
src/PhotoGallery.Core | Indexing, metadata, SQLite data layer, search, thumbnails, OneDrive clients, places, similarity |
src/PhotoGallery.Embedder | CLIP on the graphics card (DirectML), a separate process so its ONNX Runtime doesn't clash with the app's |
src/PhotoGallery.Remote | Remote access: the HTTPS server (Kestrel) and the web app it serves (web/) |
tests/PhotoGallery.Core.Tests | xUnit v3 tests (dotnet test --project tests/PhotoGallery.Core.Tests) |
tools/PhotoGallery.Cli | Headless indexing, stats, a thumbnail benchmark and a remote access check (dotnet run --project tools/PhotoGallery.Cli -- stats) |
tools/remote-testing | The message channel for testing remote access from another computer |
spikes/ | Early experiments (OneDrive Live Photo video) |
docs/plan.md | Plan, decisions and findings |
docs/store-plan.md | What it would take to publish in the Microsoft Store |
docs/remote-testing.md | How to test remote access from another computer |
docs/web-plan.md | Ways to use the app on the web, away from home |
Built with the Windows App SDK (WinUI 3), Win2D, SQLite (Microsoft.Data.Sqlite, Dapper) and MetadataExtractor. Also:
Each component and model keeps its own license; see their projects.