A personal project to help sort through all my photos by building a photo management tool with AI features while keeping everything local.
- 📁 Scanning: recursive, EXIF extraction, HEIF support
- 🔍 Search: semantic search with CLIP embeddings, geographic/temporal filtering and person-based search.
- 👤 Face recognition: face detection, clustering, and person identification with manual review workflows
- 🛠️ Multiple Interfaces: CLI, GUI, and MCP server
Tauri-based desktop application with React/TypeScript frontend
Built with clap-rs for quick testing and running batch operations
# Scan and index photos
cargo make cli scan /path/to/photos --with-exif --with-hash
# Generate embeddings for semantic search
cargo make cli embed
# Search photos with natural language
cargo make cli search --text "sunset over mountains" --country "Spain"
# Face detection and recognition
cargo make cli face detect
cargo make cli face recognize --similarity-threshold 0.7 --dry-run
Integrate with AI assistants like Claude Desktop via Model Context Protocol:
Usage with Claude Desktop:
{
"mcpServers": {
"Picasa": {
"command": "<picasa-rs>/target/release/picasa-mcp",
"env": {
"PICASA__CLIP_MODEL__DIR": "<picasa-rs>"
}
}
}
}
System Dependencies:
libheif
(for HEIC image support)libpq
(PostgreSQL client library)
AI Models:
- CLIP model files for semantic search and embeddings
- Set up database:
cargo make --profile development db-build
cargo make --profile development db-start
cargo make --profile development db-migrations
- Set up face detection server:
(cd python/face_detection && uv sync)
cargo make face-ws
- Scan Photos:
cargo make cli scan /path/to/photos --with-exif --with-hash
- Generate Embeddings:
cargo make cli embed
- Detect Faces:
cargo make cli face detect
- Launch GUI:
cargo make gui
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Desktop GUI │ │ CLI Tool │ │ MCP Server │
│ (Tauri/React) │ │ (clap) │ │ (rmcp) │
└─────────┬───────┘ └─────────┬───────┘ └─────────┬───────┘
│ │ │
└──────────────────────┼──────────────────────┘
│
┌─────────────▼─────────────┐ ┌──────────────────┐
│ Picasa Core │───►│ Face Detection │
│ (Rust Library) │ │ Server │
│ - Photo Management │ │ (Python/ │
│ - AI Services │ │ InsightFace) │
│ - Database Layer │ └──────────────────┘
└─────────────┬─────────────┘
│
┌─────────────▼─────────────┐
│ PostgreSQL │
│ + pgvector + postgis │
│(metadata, embeddings,...) │
└───────────────────────────┘
🚧 In progress:
- Packaging (tauri, clip model, postgres, python server)
- Albums/collections feature
- Photo import interface with background embedding process
- Settings interface
- ...