The most versatile AI-powered photo assistant. Designed for NAS/Docker deployment.
- AI Search — Find photos by natural language or image similarity, powered by embedding vectors
- AI Management — Chat with an AI agent to organize, move, and manage your photos
- AI Chat — Conversational interface for photo operations with tool confirmation workflow
- Universal Compatibility — Integrate with any photo album app via CLI or HTTP API tools
Rust backend + React frontend. Supports Anthropic, Google, OpenAI, and any OpenAI-compatible provider.
cd ~/ETProject/PhotoMind
# Install frontend dependencies (first time only)
cd web && npm install && cd ..
# Build and run
make run# Development mode — backend debug + frontend HMR hot reload
make dev # then open http://localhost:5173
# Production mode — build everything and start
make run # then open http://localhost:8080
# Build only (no start)
make build
# Clean all build artifacts
make clean# Debug build + run
cargo run
# Or release build + run
cargo build --release
./target/release/photomindBackend listens on http://localhost:8080. Serves the frontend from web/dist/ (must be built first).
cd web
# Development server with hot reload (proxies API to :8080)
npm run dev # http://localhost:5173
# Production build (outputs to web/dist/)
npm run build# Edit docker-compose.yml to set your photos directory, then:
docker compose up --build| Variable | Default | Description |
|---|---|---|
PHOTOMIND_DATA_DIR |
data |
SQLite database + thumbnail cache |
PHOTOMIND_ADDR |
0.0.0.0:8080 |
Server listen address |
RUST_LOG |
info |
Log level (debug, info, warn, error) |
- Open Settings page
- Add Scan Directories — paths to your photo folders
- Configure Embedding Model — Google API URL + Key, select
gemini-embedding - Configure Agent Model — choose provider (Anthropic/Google/OpenAI), enter URL + Key, select model
- Click Save Settings → Scan & Embed
- Go to Search to find photos, or Chat to talk with the agent
PhotoMind/
├── crates/
│ ├── server/ Axum HTTP server + API routes
│ ├── core/ Scanner, embedding, search, agent, file watcher
│ ├── storage/ SQLite database layer (photos, embeddings, configs, tools, chat)
│ └── tools/ Tool error types
├── web/ React frontend (Vite + TypeScript + Tailwind)
├── Dockerfile Multi-stage build
├── docker-compose.yml
└── Makefile