Keepix is a blazing-fast, desktop-native photo and video culling app designed specifically for professional photographers, videographers, and post-production studios. By offloading resource-heavy tasks to multi-threaded Rust binaries and SIMD-accelerated processors, Keepix delivers near-zero latency, allowing you to sort, inspect, and draft tens of thousands of media items in record time.
β¨ Getting Started β’ ποΈ Technical Architecture β’ π¨ Photo Editor Engine β’ π₯ Video Culling β’ π Installer & Signing β’ π Localization
For professional creators, the first stage of post-productionβcullingβis often the biggest bottleneck. Heavy creative suites are built for editing, not sorting; they suffer from high image loading overhead and UI stuttering.
Keepix solves this by treating culling as a performance-critical system operation:
- Sub-millisecond navigation: Move between RAW and compressed image assets instantly.
- Zero cloud reliance: Your media never leaves your SSD. Privacy is built-in.
- System-level acceleration: Resizes thumbnails in background threads using raw CPU SIMD instructions.
- Persistent undo chain: Maintain unlimited history of sorting categories across app restarts.
- Concurrently Scanned Catalogs: The backend scanner indexes directories recursively on background threads, processing 10,000+ images in seconds.
- SIMD Hardware Resizing: Leverages
fast_image_resizeusing AVX2, SSE4, or ARM NEON vector instructions to output highly compressed WebP previews. - Preloading Worker: Smart look-ahead cache decodes the next 2 images in your selection sequence before you click, eliminating loading screens.
- 4-Category Sorting Scheme: Instantly tag media into customizable workflows:
1: Trash / Discard (Red) β Mark files for permanent deletion.2: Keep / Best Shots (Green) β Master selection.3: Draft / Secondary (Blue) β Low-priority keeps.4: Review Needed (Yellow) β Requires closer examination.
- Auto-Advance Mode: Once categorized, Keepix advances your selection to the next item automatically, letting you cull at the speed of thought.
- Full History: Press
Ctrl + Zto undo sorting mistakes, backed by database transaction rollbacks.
- Multimodal Visual Sorting: Automate initial photo culling using Google Gemini API (
gemini-2.5-flashorgemini-2.5-provision models) directly from the client. - Custom Culling Rules: Write custom instructions in natural language (e.g., "Keep sharp, expressive portraits; trash blurry shots, blinking eyes, or duplicate test exposures").
- Metadata Integration: Automatically injects camera model, aperture, shutter speed, ISO, and lens info into the AI context for EXIF-aware culling decisions.
- Real-Time Reasoning Dashboard: Displays progress bars, decision stats, and a live agent reasoning console showing the AI's step-by-step logic for rating and categorizing each image.
- Local Key Storage: Keeps your Gemini API key 100% private in local storage.
- HTML5 Canvas Pipeline: Pixel-level adjustments applied instantly without layout reflows or CPU bottlenecks.
- 12 Sliders: Control Exposure, Contrast, Highlights, Shadows, Temperature, Tint, Saturation, Vibrance, Clarity, Vignette, Sharpening, and Noise Reduction.
- Live Preset Hover Previews: Hover over presets (built-in or custom) to instantly render the preset look in real-time. Unhovering immediately restores active editing state.
- Custom Preset Manager: Save active slider edits under a custom name, persisted in
localStorage. - Lightroom Preset Importer: Import develop settings from
.xmp,.lrtemplate, or RAW files (extracts embedded develop metadata) and save them to your Custom Presets. - Active Adjustments HUD: High-utility HUD panel summarizing active edits with a single-click "Reset All" option, engineered with layout-stabilization to prevent preset-selection jumps.
- Circular Healing Brush: Adjust brush radius with mouse scroll.
- Content-Aware Texture Synthesis: Samples surrounding pixel gradients to automatically remove sensor dust, lens spots, or minor skin blemishes non-destructively.
- Interactive Split Slider: A glassmorphic divider bar you can drag to inspect your adjustments vs the original raw pixel details.
- Multi-Canvas Grid Rendering: In 2-Up and 4-Up modes, every photo in the compare grid renders its respective adjustments in real-time, allowing side-by-side preset comparisons.
- Containers: Plays
.mp4,.mov, and.mkvfiles natively. - OS Native Integration: Decodes 4K footage using GPU hardware encoders. Includes playback speed toggles (up to
2x) for fast timeline scrubs. - Fail-Safe Fallbacks: Auto-detects codec incompatibilities, displays diagnostic warnings, and provides links to launch unsupported items directly inside VLC or QuickTime.
Keepix uses a custom hybrid architecture to combine Svelte's reactive bindings with Rust's bare-metal speed:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SvelteKit 5 Frontend β
β (Reactive Runes, Virtual Grid, Offscreen Canvas) β
ββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββ
β (JSON IPC Messages / Asset Protocol)
ββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββ
β Tauri 2.0 Bridge β
β (Command Dispatcher, Custom Asset Handlers) β
ββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββ
β Rust Backend β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β - sqlite3 Database (WAL mode, index optimizations) β β
β β - SIMD fast_image_resize (AVX2 / SSE4.1 / NEON) β β
β β - kamadak-exif parser & metadata serializer β β
β β - In-Memory preloading LRU image cache β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Note
Read the complete architectural overview in our Technical Architecture Guide to understand database schemes, concurrency layers, and SIMD optimizations.
| Category | Command | Hotkey |
|---|---|---|
| Navigation | Move Selection | Arrow Left / Arrow Right |
| Toggle View Mode (Grid / Preview) | Space |
|
| Toggle Metadata Panel | i |
|
| Open Shortcut Reference | ? |
|
| Culling | Mark Category 1 (Trash) | 1 |
| Mark Category 2 (Keep) | 2 |
|
| Mark Category 3 (Draft) | 3 |
|
| Mark Category 4 (Review) | 4 |
|
| Quick Trash | Delete |
|
| Revert Last Action | Ctrl + Z |
|
| Editing | Toggle Before/After | B |
| Copy Image Adjustments | Ctrl + Shift + C |
|
| Paste Image Adjustments | Ctrl + Shift + V |
- Node.js (v18.x or higher)
- Rust & Cargo (v1.75 or higher)
- C++ Build Tools (For Windows compilation, see the Tauri Installation Guide)
- Clone the project repository and install dependencies:
npm install
- Launch the application in hot-reloading development mode:
The Svelte frontend compiles, the Rust backend starts, and Keepix opens in a native window.
npm run tauri dev
To build an optimized standalone executable installer:
npm run tauri buildThis compiles Svelte assets, triggers compiler optimizations in the Rust backend (-C target-cpu=native), and generates:
- Windows: Branded NSIS installers (
.exe) and Enterprise MSI packages (.msi). - macOS: Signed and notarized DMG disk images (
.dmg).
Tip
To configure custom icons, NSIS installer layouts, background sidebars, or code signing certificates, refer to the Custom Installer & Signing Guide.
Keepix is fully localization-ready, featuring dynamic locale switching between English and Indonesian:
- Translation configurations are stored as optimized key-value hashes in
src/lib/i18n/index.ts. - Language configurations are persisted locally in SQLite settings.
- Read the Internationalization Guide to learn how to add custom locale mappings.
Keepix is open-source software licensed under the MIT License.