Lift subjects out of photos. Offline, free, open source.
English · 简体中文
Pluck is a native macOS app (and CLI) that removes image backgrounds entirely on-device. Your photos never leave your Mac — no account, no upload, no subscription, no watermark.
- Download: grab
Pluck.zipfrom the latest release, unzip, drag to Applications. Signed & notarized. - Homebrew:
brew tap RuochenLyu/pluck && brew install --cask pluck(app) ·brew install RuochenLyu/pluck/pluck(CLI) - Requires macOS 26+ on Apple silicon.
- Offline by default. Apple's on-device Vision framework; optional higher-quality BiRefNet models (MIT-licensed, published here) downloaded on demand and verified against pinned SHA256 digests. Auditable — it's all here.
- Engines that disagree usefully. Vision is instant and honest about "no subject"; BiRefNet Clean Cut rescues line art and reaches into a photographed painting where Vision lifts the framed object; Fine Edges renders glass actually transparent. Measured, not marketed — see the audit.
- Native and zero-config. One standard window: drag images in (or ⌘V straight from the clipboard), compare before/after side by side, switch engines per image, export the batch. Grid and list views, history that survives relaunches.
- Built for AI agents too. The same engine ships as a
pluckCLI:--jsonNDJSON output, semantic exit codes, no GUI, no TTY assumptions. - Free forever. No "HD behind a paywall", no weekly subscription.
PluckKit (Swift library, the only engine) → thin shells: a SwiftUI app and the
pluck CLI. Vision runs built-in; BiRefNet variants run through Core ML after an explicit
pluck models pull <id> (or a click in Settings). Model updates arrive with app updates
and are compared locally against install receipts — checking costs no network request.
Requires macOS 26+.
swift build # library + CLI
swift test # the whole suite, no network needed
./Scripts/bundle.sh # a runnable Pluck.app in .build/Your images never do. Matting runs entirely on this Mac, and there is no account, no telemetry and no upload path in the app at all. Two things do connect, both listed here because a privacy claim is worth exactly what its exceptions are worth:
| What | When | Turn it off |
|---|---|---|
| Model download | Only when you click Download in Settings ▸ Models, or run pluck models pull. Fetches a BiRefNet package from this repo's GitHub Releases and checks it against a SHA256 digest pinned in models/manifest.json. |
Never happens unless you ask. |
| Update check | Once a day, the app asks GitHub whether a newer version exists. Nothing about you or your images is sent. Updates are signed with EdDSA and verified before installation (Sparkle). | Settings ▸ General ▸ Check for updates automatically. Off means Pluck makes no request of its own, ever. |
The pluck CLI never checks for updates — the only network call it can make is an explicit
models pull.
Pluck ships an agent skill in skills/pluck/. Install it by
copying or symlinking the directory:
ln -s "$PWD/skills/pluck" ~/.claude/skills/pluck # or: cp -r skills/pluck ~/.claude/skills/The agent then drives the same CLI you would:
pluck shots/*.jpg -o cutouts/ --json # NDJSON per image on stdout
pluck photo.jpg --model birefnet-lite-matting -o cut.pngSKILL.md documents the full --json contract, the error slugs
and the exit codes (0 ok · 1 error · 2 no subject · 3 model problem).
- Product plan · Roadmap · Research · Decisions
- Agents: start at AGENTS.md
MIT. Bundled model conversions remain under their upstream MIT license with attribution — see the NOTICE inside each model asset.