extensions/photos/README.md
A comprehensive photo management extension that brings Apple Photos and Google Photos capabilities to Spacedrive.
Photo // Links to image file + EXIF + face/scene sidecars
Person // Face cluster with name and embeddings
Place // Geographic location with radius
Album // Collection of photos
Moment // Time/location-based photo group
PhotosMind {
history: TemporalMemory<PhotoEvent>, // Analysis timeline
knowledge: AssociativeMemory<PhotoKnowledge>, // Face/place graph
plan: WorkingMemory<AnalysisPlan>, // Pending work
}
analyze_photos_batch - Face detection on photosidentify_places_in_location - Place clustering and naminganalyze_scenes - Scene classificationcreate_moments - Automatic moment generationcluster_faces_into_people - Face clusteringgenerate_face_tags - Tag generation from sidecarscreate_album - User creates albumidentify_person - Name a face clusterremove_photo_from_album - Organize albumshide_photo - Privacy controls/Users/alice/Photos/Volumes/External/Family PhotosUser enables Photos on "/My Photos"
↓
Extension dispatches analyze_photos_batch job
↓
For each photo:
- Read EXIF (from Core)
- Detect faces → save to sidecar
- Classify scene → save to sidecar
↓
Cluster faces into people
↓
Generate tags from sidecars
↓
User can search "#person:alice" or "photos from beach"
~/.spacedrive/
└── models/
├── face_detection/
│ └── photos_v1.onnx (12MB)
└── scene_classification/
└── resnet50.onnx (95MB)
.sdlibrary/
└── sidecars/
├── content/{uuid}/
│ └── extensions/photos/
│ ├── faces.json # Face detection results
│ ├── scene.json # Scene classification
│ └── aesthetics.json # Quality score
└── extension/photos/
└── memory/
├── history.db # Photo analysis events
└── knowledge.vss # Face/place graph
#[extension] with permissions and dependencies#[model] for Photo, Person, Place, Album, Moment#[agent] with lifecycle hooks and event handlers#[agent_memory] with enum-based Temporal/Associative memory#[job] and #[task] for durable processing#[action] with preview-execute pattern#[query] for user searchesMost features here are aspirational - the SDK is still being built. This serves as a comprehensive reference implementation.
cd extensions/photos
cargo build --target wasm32-unknown-unknown --release
cp target/wasm32-unknown-unknown/release/photos_extension.wasm ./photos.wasm
Same as Spacedrive Core