Cullstack is a photo and video culling tool that works across your entire storage stack — local drives, NAS, SFTP, Dropbox, OneDrive, Google Photos, iCloud, and your phone — without downloading or consolidating first.
No other culling tool browses all of these. Cull a wedding shoot stored across your NAS and Dropbox without downloading first.
Browse your Synology NAS, SFTP backup server, Dropbox, OneDrive, and iPhone in the same window. Star, rate, tag, and move files across storage backends without ever leaving the app.
Most culling tools treat video as an afterthought. Cullstack ships full Metal-accelerated video preview, frame-accurate scrubbing, and snapshot-to-image, so hybrid photo/video shooters can cull both kinds of footage in one workflow.
JVM memory safety, async thumbnail generation, and incremental directory loading keep Cullstack responsive at 100,000+ photos — even from a NAS — where some competitors slow to a crawl or quit mid-session.
Type what you're looking for — "car", "red dress", "the cake" — and Cullstack's on-device AI surfaces the matches. No keywords to tag first, no cloud round-trip. Just describe it and it's there.
No cloud uploads, no telemetry, no training data, no third-party processing. Cullstack reads and writes your files where they already live. Compatible with client NDAs and confidentiality contracts.
One license works on Mac, Windows, and Linux. Your ratings, tags, and collections live in a portable SQLite sidecar — open the same library on any machine and pick up where you left off.
Culling is a game of speed: you make a keep-or-cut call in the time it takes the next photo to appear. Cullstack is built around that moment.
Cullstack reads each photo's embedded preview — the same technique the pro culling tools rely on — so the image is on screen the instant you land on it, then sharpens to full resolution a heartbeat later.
iPhone libraries bring most tools to a crawl. Cullstack decodes HEIC natively, so a folder of thousands of iPhone photos loads and culls as smoothly as a card full of RAW.
Thumbnails generate in parallel and cache to disk — big folders fill in fast the first time and open instantly after. The interface stays responsive at 100,000+ photos.
Built on embedded-preview extraction and native decoding — the techniques that make professional culling feel instant. Measured on Apple Silicon with a cold cache, the next photo appears in about one screen refresh and reaches full resolution in well under a tenth of a second — the same whether you just opened the folder or have been working in it for hours.
Culling means handling your clients' most private moments — weddings, newborns, families, work under NDA. So Cullstack keeps everything on your computer by default. Nothing is uploaded unless you choose to turn on a cloud feature yourself. Private is the default; the cloud is your call, not ours.
Reading, culling, rating, AI — it all runs on your machine. No account required, no servers in the loop, no copy of your shoot leaving your computer unless you explicitly ask it to.
Cloud editors upload your clients' photos by default and ask you to trust their retention policy. Cullstack flips that: nothing leaves unless you opt in, knowingly, for that specific task.
On location with no signal, behind a client firewall, or just careful with confidential work — Cullstack runs exactly the same with the network switched off entirely.
Private by default, your choice always — your photos go to the cloud only if you decide they should.
| Cullstack | Photo Mechanic | Adobe Bridge | digiKam | Aftershoot | Evoto | ACDSee | |
|---|---|---|---|---|---|---|---|
| Multi-cloud browsing (Dropbox, OneDrive, Google Photos) | ✓ | — | — | — | — | — | — |
| SFTP / WebDAV / NAS browsing | ✓ | — | — | — | — | — | — |
| iPhone / Android USB import | ✓ | — | Partial | Partial | — | — | Partial |
| Live ingest (tethered / Wi-Fi hot folder) | ✓ | ✓ | — | — | — | ✓ | — |
| On-device AI (semantic search, face detection, smart stacking) | ✓ | — | — | Face detect only | Cloud / sub | Cloud | Keywords only |
| Runs locally — no cloud upload | ✓ | ✓ | ✓ | ✓ | ✓ | Cloud | ✓ |
| First-class video culling | ✓ | Plus only | Partial | Partial | — | — | Partial |
| Linux support | ✓ | — | — | ✓ | — | — | — |
| Pricing | Free + $99–$179/yr | $139 | Free | Free (open source) | Sub only | Credits / sub | Both |
| Cross-platform (Mac + Win + Linux) | ✓ | Mac + Win | Mac + Win | ✓ | Mac + Win | Mac + Win | Mac + Win |
| Polished pro UX (modern UI, fast culling) | ✓ | ✓ | Dated | Dated | ✓ | ✓ | ✓ |
Compared values reflect publicly documented features as of 2026. Cullstack is positioned for photographers who manage their own files across multiple storage systems and want machine-assisted speed without giving up the final call — overlapping with Aftershoot on AI helpers but not trying to be a fully-automated culler, and complementary to RAW developers (Lightroom / darktable / RawTherapee). Free Cullstack also competes directly with Adobe Bridge and digiKam for the local-files-only use case. Evoto is a cloud-based AI editor that recently added culling; its core editing uploads your photos to Evoto's servers, and whether its culling runs on-device is not publicly documented.
An Annual License with Perpetual Use Rights: your license includes every update released during your active term, and if you choose not to renew you keep your last licensed version — working — indefinitely. Mac, Windows, Linux from one license.
$0forever · no account required
A real photo manager for personal libraries.
No expiry. No nag. Yours to keep.
$99USD / year · full Pro features
Your $99/yr price is locked for good — regular Pro is $179/yr at release.
Everything Cullstack does — the full culling toolkit plus on-device AI, cloud / network drives, and the pro workflow.
30-day free trial of Pro features · 3 device activations · refunds within 14 days · all updates during your active term · keep your version if you don't renew · volume licenses for studios — contact sales@aviastone.com.
Regular pricing after Early Access: Standard $99/yr (the full culling & organizing toolkit) · Pro $179/yr (adds on-device AI, cloud & network drives, and Live Ingest). Both are annual licenses with perpetual use rights; renewals are 40% off, locked as long as you keep renewing. Early-Access buyers keep their $99/yr Pro price for good.
| Free | Standard | Pro | |
|---|---|---|---|
| Browsing & viewing | |||
| Browse local drives | ✓ | ✓ | ✓ |
| Photo viewer (RAW, JPEG, HEIC, TIFF, PSD, WebP, PNG) | ✓ | ✓ | ✓ |
| Video player (H.264, H.265, ProRes, AV1, VP9) | ✓ | ✓ | ✓ |
| Full-screen viewer, slideshow, compare | ✓ | ✓ | ✓ |
| AI generation metadata display (A1111, ComfyUI, Midjourney) | ✓ | ✓ | ✓ |
| Culling & organization | |||
| Color labels | ✓ | ✓ | ✓ |
| Reads XMP sidecars (other apps' metadata) | ✓ | ✓ | ✓ |
| Star ratings (0-5) & pick / reject flags | — | ✓ | ✓ |
| Comments per file | — | ✓ | ✓ |
| Full-screen culling mode (auto-advance on rate) | — | ✓ | ✓ |
| Tags & hierarchical keywords | — | ✓ | ✓ |
| Stacks (manual & auto-grouping) | — | ✓ | ✓ |
| Smart collections / saved filters | — | ✓ | ✓ |
| Sort persistence per folder + manual sort | — | ✓ | ✓ |
| XMP sidecar writer (round-trip with Lightroom / PM) | — | ✓ | ✓ |
| File operations | |||
| Single-file rename, delete, copy, move | ✓ | ✓ | ✓ |
| Duplicate finder — find & view duplicates (exact match) | Read-only | ✓ | ✓ |
| Duplicate finder — delete / move duplicates from results | — | ✓ | ✓ |
| Duplicate finder — perceptual (visual similarity) | — | ✓ | ✓ |
| Privacy scan + EXIF / GPS scrub | — | ✓ | ✓ |
| Export pipeline (resize, format convert, quality) | — | ✓ | ✓ |
| Template rename (with AI metadata tokens) | — | ✓ | ✓ |
| Compress to ZIP | — | ✓ | ✓ |
| AI assistance (on-device, no cloud) | |||
| CLIP semantic image search (type "sunset over water") | — | — | ✓ |
| Face detection (single + batch select) | — | — | ✓ |
| Closed-eye detection (flag blinks across a shoot) | — | — | ✓ |
| People / NSFW content flagging | — | — | ✓ |
| Auto-stack by AI similarity (CLIP) | — | — | ✓ |
| Auto-stack bursts (capture time + AI) | — | — | ✓ |
| Auto-stack by face identity (ArcFace / MobileFaceNet) | — | — | ✓ |
| Recursive CLIP indexing across full libraries | — | — | ✓ |
| Pro workflow | |||
| Cloud & network drives (WebDAV, SFTP, Dropbox, OneDrive) | — | — | ✓ |
| Google Photos & iCloud Photos browsing | — | — | ✓ |
| Live Ingest (tethered / Wi-Fi hot folder, auto-rename + metadata) | — | — | ✓ |
| Incremental phone import (only new photos, integrity-checked) | — | — | ✓ |
| Split Grid (dual-pane workflow) | — | — | ✓ |
| IPTC metadata editor + templates | — | — | ✓ |
| Batch IPTC apply across selection | — | — | ✓ |
| Batch rename, batch privacy scrub, batch export | — | — | ✓ |
| Stack-aware batch operations | — | — | ✓ |
| Priority email support | — | — | ✓ |
| Platform & licensing | |||
| Mac, Windows, Linux | ✓ | ✓ | ✓ |
| Device activations | Unlimited | 3 | 3 |
| Keep your version, working, indefinitely | ✓ | ✓ | ✓ |
| Updates | Free | During active term | During active term |
30-day free trial. Full feature set. No credit card. No account.
Prefer no installer? Grab the portable build — unzip and run, no admin rights needed: macOS · Windows · Linux.
Cullstack is signed and notarized on macOS and code-signed on Windows. Linux builds are checksum-verified — see installation notes.
"Early Access" is about the product's maturity: the app is functional and we use it daily on real shoots, but it's young and moving fast — expect frequent updates, the occasional rough edge, and a responsive team if something breaks.
As an early buyer you get full Pro features for $99/yr, and that price is locked for good — it stays $99/yr even after regular pricing begins at release. What you're buying is an Annual License with Perpetual Use Rights. At release, pricing becomes two paid tiers:
Prefer to try before you buy? The 30-day free trial unlocks the full Pro feature set — no credit card, no account.
Photo Mechanic is the gold standard for fast metadata-driven culling — particularly for sports and news photographers with deep IPTC workflows. Cullstack focuses on a different problem: helping photographers cull across multiple storage systems without consolidating to local first. We work with NAS, SFTP, Dropbox, OneDrive, Google Photos, iCloud, and your phone in one window.
Yes — via Live Ingest. Point your camera's tether software, a Wi-Fi/FTP card, or an SD auto-import at a watch folder, and Cullstack imports each new frame the moment it finishes writing — auto-renamed from a template, stamped with your IPTC creator and copyright, and jumped to in the grid so you cull as you shoot. It's the same hot-folder live-ingest workflow Photo Mechanic pioneered, with write-completion detection so a half-transferred frame is never imported truncated.
Cullstack doesn't drive the camera itself (firing the shutter or changing ISO/aperture from the computer) — that's full tethered capture, which Capture One and Lightroom handle. For the cull-as-you-shoot workflow most event, studio, and news photographers actually use, Live Ingest covers it.
Yes — Cullstack ships on-device AI helpers: semantic image search ("sunset over water"), face detection, closed-eye flagging, NSFW flagging, and AI auto-stacking by visual similarity, capture-time bursts, or face identity (with optional ArcFace / MobileFaceNet models).
What Cullstack doesn't do is pick your keepers for you. Aftershoot's lane is "give me the AI's picks and I'll refine"; Cullstack's lane is "give me AI hints + the fastest possible cockpit to drive my own cull." If you want the machine to decide, Aftershoot's a better fit. If you want machine-assisted speed but keep the final eye on every frame, that's us.
All models run locally — no photos ever leave your machine, no Cullstack server in the loop. Compatible with the strictest client NDAs.
Yes — there's an AI filter in the grid filter bar with three modes: Any, AI only, and Non-AI only. Photos detected as AI also get a magenta ✦ AI badge in the top-right of their grid cell. Useful for separating client deliverables from moodboard inspiration, auditing a delivery folder before sending, or tagging stock-license-clean photos.
Detection runs in six layers, fastest first, and stops on the first match:
Tiers 1–5 are built in and run automatically. In testing across mixed libraries they catch around 90 % of AI photos on their own.
Cullstack ships without bundled AI models —
each feature is opt-in, and you choose the model that fits
your workflow (size, accuracy, licence). All models live in
~/.cullstack/models/. Drop the right
.onnx file in with the exact filename below and
the feature lights up next launch.
Important for commercial users: Cullstack itself is commercial software. Match each model's licence before installing — permissive licences (Apache 2.0, MIT, CC-BY-4.0) allow commercial use with attribution. NonCommercial (CC-BY-NC) and strong copyleft (AGPL) licences can be problematic for paid users running professional photography businesses. When in doubt, check with the model author or a lawyer.
| Feature | Filename | Recommended model + licence |
|---|---|---|
| Semantic image search ("show me sunsets") | clip_image.onnxclip_text.onnx |
Xenova/clip-vit-base-patch32
— MIT (OpenAI CLIP). Auto-downloaded by Cullstack via
Settings → AI → Download CLIP. No
manual install needed.
|
| Face detection | face_yunet.onnx |
YuNet 2023mar (OpenCV model zoo) — Apache 2.0. ~340 KB. |
| Find this person & stack-by-face (identity) | face_embed.onnx |
A face-identity model with RGB, 112×112 input. We recommend
OpenCV SFace
(face_recognition_sface_2021dec.onnx, ~37 MB) —
it's Apache 2.0 licensed, so it's safe to use in a
commercial photography business, and in our testing it matches the
accuracy of the research-only alternatives. Rename it to
face_embed.onnx. Requires face_yunet.onnx
above as well.Cullstack also accepts an ArcFace / MobileFaceNet 512-d model (e.g. InsightFace w600k_mbf) if you prefer — but note
InsightFace's weights are released for non-commercial research
only, so SFace is the better choice for paid work.
|
| Face landmarks (used by closed-eye pipeline) | face_mesh.onnx |
MediaPipe Face Mesh
— Apache 2.0. Export the .tflite to ONNX
with tf2onnx.
|
| Eye-state blendshapes (closed-eye, tier 2) | face_blendshapes.onnx |
MediaPipe Face Blendshapes — Apache 2.0. |
| Closed-eye classifier (closed-eye, tier 1) | eye_state.onnx |
Any 1-channel sigmoid eye open/closed classifier. The PaddleClas eye-state model (Apache 2.0) works after ONNX export. |
| Face identity embeddings (face grouping / "same person") | face_embed.onnx |
OpenCV SFace — Apache 2.0, ~37 MB, 128-d output. Commercial-safe and the recommended choice. A 512-d ArcFace / MobileFaceNet also works if you have one licensed for your use. |
| NSFW flagging | nsfw.onnx |
OpenNSFW2 (Apache 2.0) or NudeNet (BSD). Both export cleanly to ONNX. |
| Person / body detection | yolov8_person.onnx |
License caveat: Ultralytics YOLOv8 is AGPL-3.0 — strong copyleft. Hobbyist use is fine; commercial workflows should either purchase an Ultralytics commercial licence or use a permissively-licensed alternative: YOLOX (Apache 2.0) or DETR (Apache 2.0) — both detect the "person" class out of the box. |
| AI-generated image detection | ai-detector.onnx |
umm-maybe/AI-image-detector
— Vision Transformer, CC-BY-4.0. PyTorch only; convert
with optimum-cli (see AI-classifier FAQ
below for the exact commands).
|
All inference runs on your machine via ONNX Runtime — no photos or model outputs leave the computer. Each feature no-ops gracefully if its model isn't installed, so you can try one at a time without disrupting the rest of the app.
Pick a photo of someone — select it in the grid, or choose a file — and Tools → AI → Find this person filters the grid to their other shots. It matches on facial identity (the geometry of the face), not clothing, pose, or background, so it follows a person across outfit and scene changes. It does need a visible, detectable face: a shot from behind, or with the face turned fully away, won't match. (Requires the two face models listed in the table above.)
The Match slider runs from Loose to Strict. It mostly controls how many true shots of the person you keep, not how many wrong faces sneak in — different people score far below the same person, so mistaken matches are rare across the whole range:
A good workflow: leave it at the balanced default, then nudge it toward Loose if a few shots you expected are missing, or toward Strict if you want only the surest matches. Hit Clear to drop the filter.
The visual classifier is opt-in because Cullstack doesn't ship with a model bundled — model licenses vary, and we'd rather you pick the one that fits your workflow than make that decision for you. Two minutes to install:
Most AI-detection models on HuggingFace ship as PyTorch only —
you'll convert to ONNX once with one command, then install the
resulting .onnx file in Cullstack. Five-minute
setup, no Python needed afterwards.
umm-maybe/AI-image-detector
— Vision Transformer (ViT), trained on a mix of AI
generators including SDXL, Midjourney v5+, and DALL·E
variants. Licence CC-BY-4.0: commercial
use allowed with attribution. ~348 MB before ONNX
conversion shrinks it.
dima806/ai_vs_real_image_detection
and Organika/sdxl-detector
look attractive but check their Files tab before
investing time — at time of writing the first has no
pre-built ONNX (PyTorch only) and the second is CC-BY-NC-3.0
(non-commercial only, not compatible with paid Cullstack use).
optimum toolkit. One-time Python setup, then
one command per model:
# One-time
pip install "optimum[onnxruntime]" transformers
# Convert
optimum-cli export onnx \
--model umm-maybe/AI-image-detector \
--task image-classification \
~/Downloads/ai-detector-export/
# Move into Cullstack's models folder
mkdir -p ~/.cullstack/models
mv ~/Downloads/ai-detector-export/model.onnx \
~/.cullstack/models/ai-detector.onnx
optimum-cli downloads the PyTorch weights from
HuggingFace, traces them through a representative input, and
emits an equivalent ONNX. The resulting file works with the
same AIImageDetector code in Cullstack.
optimum-cli with a different output folder and
then in Cullstack click Install ONNX model…
to copy the file in.
Compatibility: any 3×224×224 ONNX image classifier with 1-output sigmoid, 2-class softmax (real / AI), or N-class softmax (multiple AI generators + real) will work — Cullstack auto-detects the output shape.
License compliance: the model's licence is between you and the model author when you download from HuggingFace. Check the licence on the model's HuggingFace page before installing — Cullstack is commercial software ($99/yr Standard, $179/yr Pro), so models with a NonCommercial clause (e.g. CC-BY-NC) are off-limits for paid users running professional photography businesses. Permissive licences (Apache 2.0, MIT, CC-BY-4.0) allow commercial use with attribution and are the safe pick. Inference runs entirely on your machine — no photos or detection results leave your computer.
Yes. Cullstack's AI image detector is model-agnostic —
whatever .onnx file lives at
~/.cullstack/models/ai-detector.onnx is what
Cullstack uses. The shipped install flow
(Settings → AI → "Install ONNX model…") copies
any compatible model into that slot, so swapping in a
different detector is a 5-second operation. No code change in
Cullstack, no support ticket, no reinstall.
Compatibility envelope: any ONNX image classifier that accepts a 3×224×224 RGB tensor and outputs 1, 2, or N classes is supported automatically — Cullstack inspects the model's input/output shapes at load time and adapts. Most modern transformer + CNN classifiers fit this envelope out of the box (ViT, Swin, ConvNeXt, ResNet, EfficientNet, MobileNet, etc.).
Common substitution paths and who they're for:
torch.onnx.export or
tf2onnx, drop into Cullstack. The model never
touches Cullstack's servers (we don't have any AI-related
servers).
Power-user override: the visual classifier's
confidence threshold is fixed at 0.85 in the UI to prevent
casual false-positive floods, but the underlying preference
(ai.threshold.aiImage, integer percent 0–100) is
readable via the standard Java Preferences API. Power users
on macOS can set it via:
defaults write com.apple.java.util.prefs \
/com/aviastone/cullstack/util/AppPreferences/ai.threshold.aiImage 75
Confidence floors below ~0.70 substantially increase false- positive risk on real photography — recommended only for researchers comparing classifier behaviour, not for production photo culling.
What Cullstack doesn't do: validate model accuracy, vouch for vendors, or take responsibility for misclassification consequences. The model is your choice, the license is between you and the model author, and the downstream decisions (delivering, flagging, deleting) are always your call. Cullstack is the tool; you are the photographer.
All connections live in one place: open the Connection → Manage Connections… menu. Click + Add, pick the backend, fill in the fields, save, then Connect. Each profile becomes its own branch in the sidebar tree (☁ WebDAV, 🔒 SFTP, 📦 Dropbox, ☁ OneDrive) and you can browse, copy, move, and stack across them the same as a local folder.
~/.ssh/id_ed25519)
and PuTTY (.ppk) formats. Optional passphrase
unlocks encrypted keys.
~/Library/Mobile Documents/com~apple~CloudDocs)
— just navigate to it in the sidebar tree like any other
local folder. iCloud Photos surfaces automatically on macOS
as the iCloud Photos sidebar entry once you
grant Photos library access on first launch.
Credentials are kept locally in the macOS Keychain (or the OS-equivalent secure store on other platforms). Cullstack never relays them through any Aviastone server.
Plain drag-and-drop in Cullstack copies by default — the safer choice for photo workflows, since the original always stays put. Hold Shift (or ⌘ on macOS / Ctrl on Windows) at the start of the drag to move instead. This applies to every backend: local folders, network drives (WebDAV/SFTP), and cloud (Dropbox/OneDrive). External drags in from Finder or Explorer follow the OS's own copy-vs-move conventions.
Cullstack reads your photos from wherever they already live — we never copy them to a Cullstack server. Ratings, tags, and collections are stored locally in a SQLite sidecar database next to your photos. No telemetry, no cloud sync (unless you opt into syncing the sidecar yourself via Dropbox/iCloud Drive).
No. Cullstack reads and writes your photos where they already live — local drives, your NAS, your own SFTP / WebDAV server, or the cloud accounts you authenticate. Nothing is uploaded to a Cullstack-controlled server. This is a contractual win for wedding and portrait photographers whose NDAs prohibit transmitting images to third-party services.
Cullstack is an annual license with perpetual use rights — the version you've licensed keeps working forever, even if you stop renewing. Activation is verified at purchase and re-checked occasionally for refund/fraud protection, but the app continues to function with a long offline grace window. We will publish a final unlock build if we ever wind down the product.
Yes. Each license includes 3 device activations. You can deactivate from a machine you're retiring (Help → Manage License → Deactivate) and free up a slot for a new install. If you've run out of slots due to lost devices, email support@aviastone.com and we'll reset them.
Yes — 30% off for verified students, educators, and registered non-profits. Email sales@aviastone.com with proof of status.