Open-source AI photo culling engine.
Fixxer culls your RAW or JPEG shoot — grouping bursts, scoring sharpness, exposure, and blink detection, selecting the best frames, and writing XMP sidecar files that Lightroom and Capture One read automatically.
Runs entirely on your Mac. No subscription. No cloud upload. No black box.
If you have a stock Mac with nothing installed, follow these steps in order. This takes about 10 minutes.
Homebrew is a package manager for macOS. Open Terminal (press Cmd + Space, type "Terminal", press Enter) and run:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Follow the prompts. When it finishes, it may ask you to run two more commands to add Homebrew to your PATH — do that if shown.
Close and reopen Terminal when done.
brew install pythonThis installs Python 3 and pip3. Verify:
python3 --version
pip3 --versionBoth should print a version number.
Fixxer uses exiftool to read camera metadata from RAW files.
brew install exiftoolpip3 install git+https://github.com/a45674567/fixxer.gitThis downloads and installs Fixxer and all its dependencies automatically.
After installing, you may need to tell your terminal where to find the fixxer command. Run:
echo 'export PATH="$HOME/Library/Python/3.11/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcNote: If Python installed a different version (e.g. 3.12), replace
3.11with your version number. Check withpython3 --version.
fixxer --versionShould print: fixxer, version 0.1.1
Point Fixxer at your shoot folder. Drag the folder from Finder into Terminal to paste its path automatically.
fixxer cull ~/Desktop/MyShoot --genre weddingAvailable genres: general wedding portrait event sport landscape documentary
To keep the top 20% of frames:
fixxer cull ~/Desktop/MyShoot --genre wedding --target 20To keep exactly 400 images:
fixxer cull ~/Desktop/MyShoot --genre wedding --count 400fixxer review ~/Desktop/MyShootOpens a local web interface at http://localhost:7842. Browse your selections, click any image to see scores, press K to keep or R to reject. Hit Export XMP when done.
XMP files are written automatically after culling. To re-export after making review changes:
fixxer export ~/Desktop/MyShootfixxer status ~/Desktop/MyShoot- Run
fixxer cullon your shoot folder - Open Lightroom Classic → File → Import Photos and Video
- Navigate to your shoot folder and import as normal
- In the Library module, filter by Flagged or ★★★+ to see Fixxer's picks
If you've already imported the folder into Lightroom before culling:
- Select all images → Metadata → Read Metadata from Files
XMP sidecars are read automatically for DNG files. For manufacturer RAW formats (CR3, ARW, NEF):
- Go to File → Import XMP or enable XMP reading in your session settings
Fixxer reads every image file during processing. Files stored in iCloud, OneDrive, or Google Drive must be downloaded locally first.
In Finder: select your shoot folder → right-click → "Keep Downloaded" or "Always keep on this device". Wait for the download to complete before running Fixxer.
Working from a local drive (e.g. your Desktop or an external SSD) is faster and more reliable than working from cloud storage.
Each genre adjusts how Fixxer weights quality factors:
| Genre | Sharpness | Exposure | Blink penalty | Expression |
|---|---|---|---|---|
wedding |
medium | medium | high | low |
portrait |
high | medium | high | — |
event |
medium | medium | medium | medium |
sport |
high | medium | low | low |
landscape |
high | high | none | none |
documentary |
low | medium | medium | high |
general |
medium | medium | medium | low |
Sport has a low blink penalty because athletes often have closed eyes mid-action. Landscape ignores faces entirely.
After running, your shoot folder will contain:
MyShoot/
├── IMG_0001.CR3
├── IMG_0001.xmp ← star rating + pick flag
├── IMG_0002.CR3
├── IMG_0002.xmp
├── ...
├── fixxer_selections.csv ← full scoring report (open in Excel)
└── .fixxer.db ← project database (safe to delete to reset)
To start fresh on a shoot, delete .fixxer.db and run fixxer cull again.
zsh: command not found: fixxer
Run the PATH setup from Step 5 again, then open a new Terminal window.
fixxer cull says "No supported image files found"
Check that the folder path is correct and the files are downloaded locally (not cloud stubs).
Files are on OneDrive/iCloud and showing I/O errors The files aren't downloaded. In Finder, right-click the folder → "Keep Downloaded". Wait for sync to complete.
Review UI shows "Failed to load project"
The cull may not have completed. Run fixxer status /path/to/shoot to check.
Want to re-cull with different settings
Delete .fixxer.db from the shoot folder and run fixxer cull again with new options.
Fixxer runs entirely on your machine. No images, previews, or metadata are sent anywhere. The review UI is a local web server — http://localhost:7842 is only accessible on your own computer.
MIT © Andre De Jager
github.com/a45674567/fixxer