Cull where your photos live.

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.

Mac · Windows · Linux  ·  Annual license  ·  Keep your version if you don't renew

One app for every storage backend

💻Local drives
🗄️NAS (SMB / NFS)
📡SFTP / WebDAV
☁️Dropbox
☁️OneDrive
📷Google Photos
📷iCloud Photos
📱iPhone / Android

No other culling tool browses all of these. Cull a wedding shoot stored across your NAS and Dropbox without downloading first.

Built for photographers who manage their own files.

Cull across local, network, and cloud — in place.

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.

Cullstack browsing a single shoot spread across a local drive, a Synology NAS, Dropbox, and an iPhone in one window

Photos and video, treated equally.

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.

Cullstack culling a video clip — full-frame preview with a frame-accurate scrubber

Built for the libraries that bog down everything else.

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.

Cullstack thumbnail grid of a large wedding shoot with AI flags marking closed-eye frames

Find any photo by describing it.

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.

Cullstack semantic search — typing 'car' surfaces the matching photo from the shoot

Your photos never leave your machine.

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.

Cross-platform, same workflow everywhere.

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.

Fast where it counts — the cull.

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.

Instant previews

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.

📱

HEIC as fast as RAW

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.

🗂️

Thousands of files, no stalls

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.

Your photos stay yours.

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.

🔒

Local by default

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.

📝

You decide, per choice

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.

✈️

Works fully offline

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.

How Cullstack compares.

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.

Pick the tier that fits your workflow.

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.

Cullstack is in Early Access. It's functional and runs on real shoots, but it's young and moving fast — features ship continuously and early users help steer where it goes. Early buyers get full Pro features for $99/yr — and that price is locked for good, even after regular tiered pricing begins at release.

Free

$0forever · no account required

A real photo manager for personal libraries.

  • Browse local drives, view photos & videos
  • Full-screen viewer, slideshow, compare mode
  • Color labels
  • AI metadata display (Stable Diffusion, ComfyUI, Midjourney)
  • Single-file rename, delete, copy, move
  • Duplicate finder — read-only (find them, don't act on them)
  • Reads XMP sidecars (Lightroom / Bridge / PM compatible)

No expiry. No nag. Yours to keep.

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.

Detailed feature comparison

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 activationsUnlimited33
Keep your version, working, indefinitely
UpdatesFreeDuring active termDuring active term

Download Cullstack.

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.

Questions, answered.

What does "Early Access" mean — and what am I actually buying?

"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:

  • Standard — $99/year: the full culling & organizing toolkit.
  • Pro — $179/year: everything, plus on-device AI, cloud / network drives, and the pro workflow.
  • Loyalty renewal pricing — renewals are 40% off ($59/yr Standard, $107/yr Pro), and that rate is locked for as long as you keep renewing. If you let your license lapse for more than 30 days, renewing later starts again at full price.
  • Updates during your active term — every release we ship while your license is active is included.
  • Perpetual use rights — if you choose not to renew, you keep your last licensed version, working, indefinitely; you only stop receiving new updates.
  • 14-day refund window, no questions asked, plus 3 device activations (desktop + laptop + backup).

Prefer to try before you buy? The 30-day free trial unlocks the full Pro feature set — no credit card, no account.

How is Cullstack different from Photo Mechanic?

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.

Does Cullstack support tethered or Wi-Fi shooting?

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.

Does Cullstack use AI? How is it different from Aftershoot?

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.

Can Cullstack tell me which photos in my library are AI-generated?

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:

  1. Embedded provenance metadata — A1111, Forge, Fooocus, ComfyUI PNGs; A1111 JPEGs/WebPs; Midjourney JPEGs all leave their own tags, and Cullstack reads them.
  2. Filename pattern match — DALL-E, ChatGPT, Stable Diffusion, Midjourney, Flux, Ideogram, OpenArt, Leonardo, Playground AI, Adobe Firefly, Bing Create, Runway, Imagen, StarryAI, NightCafe + more.
  3. Parent folder name — folders called AI, Generated, Renders, etc.
  4. C2PA Content Credentials — catches ChatGPT, DALL·E 3, Adobe Firefly, Bing Create, and anything else signed with the C2PA industry standard.
  5. EXIF camera-field shape — real photos carry camera Make, Model, ExposureTime, ISO; AI photos almost never do. Combined with format/dimension heuristics (PNG, or sides divisible by 64 ≤ 2048).
  6. ONNX visual classifier (optional, described below).

Tiers 1–5 are built in and run automatically. In testing across mixed libraries they catch around 90 % of AI photos on their own.

Which AI models does Cullstack use, and where do I get them?

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.

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.

How does "Find this person" work, and what does the match slider do?

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:

  • Strict (right). Only the most confident matches. Cleanest results, but you may miss harder shots (sharp profiles, poor light, motion blur).
  • Loose (left). Casts a wider net and pulls in more of their shots, including tough angles — with little risk of look-alikes, since strangers sit well outside the 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.

How do I enable the visual AI classifier for the last 10 %?

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.

  1. Pick a model. Recommended for commercial use:
    • 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.
    Both 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).
  2. Convert to ONNX with HuggingFace's 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.
  3. (Optional) Verify in Cullstack. Open Settings → AI and confirm "AI image detector model: Installed". If you'd rather use the file picker than the command line in step 2, run optimum-cli with a different output folder and then in Cullstack click Install ONNX model… to copy the file in.
  4. Each scanned file is classified once and the verdict is cached, so the new AI badges appear on previously-uncaught photos immediately and stay there across restarts.

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.

Can I use a different AI image detector? Commercial, specialized, custom-trained?

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:

  • Free HuggingFace models — covered in the "How do I enable the visual AI classifier" FAQ above. Best starting point for most users.
  • Commercial detectors with budget — services like Hive AI, Reality Defender, Sensity, etc. sell paid AI- detection models. If they offer an ONNX or PyTorch export (ask their sales team — many will export for self-hosting customers), Cullstack runs the inference locally with the same install flow. Useful for studios that need higher accuracy than open-source models provide, or that need contractual SLAs on detection quality.
  • Generator-specific detectors — fine-tuned for one tool (Midjourney-only, SDXL-only, deepfake-specific face detectors). Useful when your library contains a predictable AI source — e.g. concept-art studios reviewing junior submissions against a known Midjourney pipeline. Search HuggingFace for keywords like midjourney detector, sdxl detector, deepfake detection.
  • Custom-trained models — ML engineers and large studios sometimes train their own detectors on proprietary data (their own historical archive vs. their AI tool's output, for example). Export from PyTorch / TensorFlow with torch.onnx.export or tf2onnx, drop into Cullstack. The model never touches Cullstack's servers (we don't have any AI-related servers).
  • Multiple models, one workflow — Cullstack only loads one detector at a time, but you can swap them in and out instantly. A wedding photographer might run a general classifier on import day, then swap to a Midjourney- specific one when auditing a concept-art folder. The per-file verdict cache is keyed to file path + mtime, so the old verdicts are kept; only files that haven't been scanned yet by the new model get re-classified.

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.

How do I connect my Dropbox, OneDrive, iCloud, WebDAV, or SFTP accounts?

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.

  • Dropbox — one-click OAuth. Choose Dropbox, give the profile a label, click Authorize, approve in your browser. Tokens stay on your machine; we never see them.
  • OneDrive — same OAuth flow as Dropbox. Choose OneDrive → Authorize → sign in with Microsoft. Works for personal accounts and Microsoft 365.
  • WebDAV — server URL (https://… or http://…), username, password. Toggle Bypass SSL check only if you're connecting to a self-signed-cert NAS on your own LAN. Works with Nextcloud, ownCloud, Synology WebDAV, Box (with WebDAV enabled), and any standards-compliant server.
  • SFTP — host, port (default 22), username, and either a password or a private key file. Key paths support both OpenSSH (~/.ssh/id_ed25519) and PuTTY (.ppk) formats. Optional passphrase unlocks encrypted keys.
  • iCloud — no setup needed. iCloud Drive appears as a normal folder under your macOS home directory (~/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.

How does drag-and-drop work? Does plain drag copy or move?

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.

Where is my data stored?

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).

Does Cullstack send my client photos anywhere?

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.

What happens to my license if Aviastone disappears?

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.

Can I move my license between machines?

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.

Do you offer a discount for students or non-profits?

Yes — 30% off for verified students, educators, and registered non-profits. Email sales@aviastone.com with proof of status.