Skip to content

Repository files navigation

Sift

Sift is a native macOS media library for indexing creator footage in place.

Implemented features:

  • Folders with recursive image and video indexing
  • Persistent SQLite catalog and SwiftUI gallery
  • Local JPEG thumbnail cache
  • Explicit, user-started OpenAI vision analysis for captions and visual metadata
  • Virtual AI collections that never move or duplicate original media
  • Natural-language semantic search backed by a local vector index
  • Favorites, collection overview cards, and distinct library-removal, Trash, and permanent-deletion workflows
  • Cached Library Health audits for offline folders, skipped files, missing previews, unanalyzed footage, moved originals, storage usage, and redundant exports

Run

To create a normal macOS app that opens without Terminal, run:

./Scripts/build-macos-app.sh

The app is created at dist/Sift.app and can be copied to Applications.

For development, open Package.swift in Xcode and run the Sift scheme, or use:

swift run Sift

The first launch creates the local catalog at:

~/Library/Application Support/Sift/database.sqlite

Adding or removing a folder never moves, copies, or deletes the original media.

AI setup

Open Sift → Settings, add an OpenAI API key, and choose an analysis model. The key is stored in macOS Keychain. You can also provide OPENAI_API_KEY in the environment when launching Sift.

Importing and re-indexing generate local previews but do not start AI analysis. After configuring a key, choose Start AI Analysis to analyze unprocessed media. Without a key, local indexing, previews, and Library Health remain available.

When you explicitly start AI analysis, Sift sends locally generated JPEG thumbnails to the OpenAI Responses API. It sends generated metadata to the Embeddings API to build the semantic index, and sends semantic search queries to that API when you search. Original media files remain in place and are not uploaded directly.

Semantic vectors are stored separately at:

~/Library/Application Support/Sift/embeddings.sqlite

Remove from Sift keeps the original file and excludes it from future re-indexing. Move to Trash places the original in macOS Trash before removing its generated Sift data. Delete Permanently irreversibly removes the original file and its Sift data after confirmation.

Verify

swift test
swift build -c release

About

No description, website, or topics provided.

Resources

Stars

17 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages