Install fineshyt on Windows.
No command-line experience required. About 20 minutes, most of it download time.
This guide assumes you've never touched Docker before. If any step doesn't match what you see on your screen, check the troubleshooting section at the bottom.
http://localhost:4000, reading photos out of a folder you choose,
and storing its ratings and AI metadata in a database that lives entirely
on your computer.
1 Install Docker Desktop
Docker is a tool that lets fineshyt run as a self-contained package without you having to install Elixir, Python, Postgres, and a dozen other things by hand.
- Go to docker.com/products/docker-desktop.
- Click Download for Windows. Run the installer.
- When it asks about WSL2, leave it checked. Reboot if it asks you to.
- After reboot, open Docker Desktop from the Start Menu and let it finish first-time setup. You'll see a whale icon in your system tray when it's running.
You don't need a Docker account — close the sign-in prompt if it bugs you.
2 Install Ollama
Ollama runs the AI vision model (LLaVA) that describes what's in each photo. fineshyt talks to it locally — nothing leaves your machine.
- Go to ollama.com/download, click Download for Windows, run the installer.
- Once installed, open PowerShell (Start Menu → type "PowerShell" → Enter) and run:
ollama pull llava
- This downloads about 4 GB. When it says
success, you're done.
3 Install Git
Git is how you'll download the fineshyt source. The tiny installer takes 90 seconds.
- Go to git-scm.com/download/win. The download starts automatically.
- Run the installer. You can accept every default — none of them matter for fineshyt.
4 Download fineshyt
This step uses PowerShell — Windows' built-in text-based command prompt. You probably haven't opened it before. That's fine; you only need three commands.
4a. Open PowerShell
- Press the Windows key on your keyboard (or click the Start button).
- Type PowerShell.
- Click Windows PowerShell when it appears at the top of the menu. (Don't click "PowerShell ISE" — that's a different tool.)
A blue or black window opens with a blinking cursor and a line that
ends in >. That's the prompt — it's waiting for you to
type a command and press Enter.
4b. Move into your Documents folder
Type this command and press Enter:
cd $HOME\Documents
cd is short for "change directory" — it moves you into a
folder. $HOME is a shortcut PowerShell understands as
"your user folder" (the same place your Documents, Pictures, and
Downloads live). So this whole line means: go into the
Documents folder.
What success looks like: the prompt changes to end with
Documents>. No error messages. If you see
cannot find path, you typed it wrong; try again exactly
as shown above.
4c. Download (clone) fineshyt
Type this and press Enter:
git clone https://github.com/qweliant/fineshyt.git
git clone downloads a copy of the fineshyt project from
GitHub onto your machine. It creates a new folder called
fineshyt inside your Documents.
What success looks like: several lines like Cloning into
'fineshyt'..., Receiving objects: 100%, and
finally a fresh prompt. Takes about 10–30 seconds depending on your
internet.
4d. Step into the fineshyt folder
cd fineshyt
Now you're inside the project folder. The prompt should end with
fineshyt>.
Quick sanity check — type ls and press Enter. You should
see a list of files including docker-compose.yml,
Makefile, and a folder called orchestrator.
If you see those, step 4 is done.
5 Configure two things
fineshyt reads its settings from a file called .env. The
project ships with a template called .env.example — you'll
copy it, then fill in two values.
5a. Make a working copy of the template
In PowerShell, still inside the fineshyt folder:
copy .env.example .env
copy duplicates a file. This makes .env
(without the .example) — that's the file fineshyt will
actually read.
What success looks like: PowerShell prints
1 file(s) copied. and gives you a fresh prompt.
5b. Open .env in Notepad
notepad .env
Notepad opens with the .env file. You'll see comments
(lines starting with #) and a few empty
NAME= lines. You only need to fill in two of them.
5c. Set PHOTO_LIBRARY
Set this to the folder on your computer where your photos live. fineshyt will see this folder (and all subfolders) inside the app.
PHOTO_LIBRARY=C:\Users\YourName\Pictures
Use your real path. Backslashes are fine. Don't put quotes around it, even if the path has spaces.
PHOTO_LIBRARY=D:\Photos or PHOTO_LIBRARY=E:\Wedding-2024.
Docker Desktop on Windows shares all attached drives with WSL2
automatically — no extra configuration needed. Just don't unplug the
drive while fineshyt is running, or you'll have to restart the
containers (docker compose down, then docker compose up) once the drive is back.
PHOTO_LIBRARY in .env and run
docker compose up again. Drive letters and Docker's WSL2
filesystem don't combine cleanly enough for the multi-drive
PHOTO_LIBRARIES workflow that macOS and Linux users get;
the ratings and metadata fineshyt already learned about your photos
persist across drive switches because the database lives in its own
Docker volume.
5d. Set SECRET_KEY_BASE
This is a random string used internally by the web app. Generate one in PowerShell with:
[Convert]::ToBase64String((1..48 | ForEach-Object { Get-Random -Max 256 }))
Copy the output, paste it after SECRET_KEY_BASE=, save and close Notepad.
PHOTO_LIBRARY tells fineshyt where to
look. SECRET_KEY_BASE is a security token that the web app
uses to sign session cookies — needed even for a localhost-only install.
6 Start fineshyt
Back in PowerShell (still in the fineshyt folder):
docker compose up
This is the long step. Docker has to download a few base images, build the fineshyt containers, and the AI worker has to fetch its CLIP image-encoder model on first run. Plan for 10–20 minutes the first time. Subsequent runs start in seconds.
When you see lines like orchestrator-1 | [info] Running OrchestratorWeb.Endpoint,
you're up.
7 Open it in your browser
Go to http://localhost:4000.
In the Directory field, type /photos/ followed by the
subfolder of your library you want to ingest. So if your library is at
C:\Users\You\Pictures and you want to cull the 2024-spring
subfolder inside it, type:
/photos/2024-spring
(fineshyt sees your photo library at /photos inside the
container — you don't need to use Windows-style paths in the app.)
Set a sample size, hit Ingest, and watch the activity log fill up. When it's done, head to the Gallery to start rating.
Troubleshooting
"docker: command not found"
Docker Desktop isn't running. Open it from the Start Menu, wait for the whale icon to stop animating, then try the command again.
The container says "PHOTO_LIBRARY is missing"
Your .env file isn't filled in, or you copied .env.example
but never edited it. Re-do step 5.
"Cannot connect to LLM at host.docker.internal:11434"
Ollama isn't running. Open it from the Start Menu (it lives in the system
tray, no main window). If you never ran ollama pull llava, do
that too.
It's slow / it crashes / fans are spinning
Vision LLM inference is genuinely heavy. fineshyt processes one photo at a time on purpose. Plan for ~10–30 seconds per photo on a modern laptop. If you have an NVIDIA GPU, Ollama will use it automatically.
Stopping fineshyt
In the PowerShell window where you ran docker compose up:
press Ctrl+C. Or to stop from any window:
cd $HOME\Documents\fineshyt docker compose down
Your photos, ratings, and AI metadata persist between restarts.
docker compose down -v (with the -v) wipes the
database. Don't run that unless you want a fresh start.
Updating to a new version
cd $HOME\Documents\fineshyt git pull docker compose up --build
Getting help
Open an issue on GitHub with the contents of the PowerShell window when things went wrong. The more output you paste, the faster the fix.