Each time rbv-index@.service completes successfully, systemd fires
rbv-cluster.service (a oneshot) to assign unprocessed faces to persons.
Keeping them as separate units gives each its own status and journal,
and allows cluster to be triggered independently. deploy_index now
deploys and password-substitutes both unit files.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Split deploy.sh into deploy_db, deploy_index, deploy_api, deploy_ui
functions. Components are selected via script args (e.g. "db index"),
"all" deploys everything, and no args defaults to index+api+ui.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rust workspace with crates for entity types, hashing, database access,
ML client (immich-ml compatible), ingest pipeline, clustering, auth,
search, CLI, and axum API server. Vite/React UI. SQL migrations.
Includes retry/backoff on transient ML API connection errors.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>