Apps
Photos
Your own photo library, with albums, the map, search, links you control, Google Takeout import, iCloud Photos sync and a full export at any time.
Photos is a photo and video library that belongs to you alone. Open it at photos.cactive.com.au or from the app switcher.
Private by default
- It's yours, not an organization's. The library lives in your personal space: no organization, its owners or admins, its keys or its AI clients can open it, and nothing goes to an organization's audit log. Caity doesn't reach it either.
- Nothing is shared until you make a link, and every link can be turned off. Links remove location and camera details unless you keep them.
- AI features are off. Faces, objects and text, and memories each wait for you to turn them on in Settings, and their results stay in your library.
- Everything is in your activity log (Settings → Activity): every change, every view and download, by you, your tokens or someone with a link, including wrong link passwords. Only you can read it; it's kept a year.
- Export everything any time (Settings → Export).
- Encrypted with your own key: the files are stored like the rest of your personal space, under its encryption key (see Drive).
Your library shares your personal space's storage with Drive (every version, the trash included). In Drive it's a drive of its own, with the files in year and month folders, and it can't be shared from there: only Photos' links share it.
Adding photos
- Upload, or drop files and folders anywhere. Uploads go straight to storage and resume after a dropped connection (pick the same files again).
- Files already in your library are skipped: the app checks each file's fingerprint (SHA-256) first, and anything that slips through is recognised by its content and removed.
- Originals are kept as they are: JPEG, HEIC, PNG, WebP, AVIF, GIF, TIFF, RAW (DNG, CR2, CR3, NEF, ARW, ORF, RW2, RAF, PEF and others) and videos (MP4, MOV and others).
- Live Photos: a still and its video (from an iPhone, or a pair with the same name) become one photo that plays when you press LIVE. Google's motion photos are split the same way.
- Every photo gets a thumbnail and a large preview (HEIC and RAW included; RAW shows the preview the camera embedded). Videos get a poster frame when you upload them from the browser.
When and where a photo was taken come from the file: the camera's time and its time zone, GPS, camera and lens. You can change the date and the place, or remove the place, in the photo's info (i); the file's own details come back with Use the file's.
Your library
- Photos: everything by day, newest first, with the scrubber on the right to jump through months and years.
- Explore: search by words in names and descriptions, by date, by place (place names are looked up in your browser; nothing about them is stored), by type (photos, videos, Live Photos, RAW) and favourites.
- Map: every photo with a place, in clusters.
- Favourites, Albums (a photo can be in any number; choose a cover and the order), Archive (out of the timeline, still in albums and search) and Trash (deleted for good after 30 days).
- Select several with the checkbox (Shift-click for a range) to favourite, add to an album, share, download, archive or move to the trash.
Links
Share on an album, a photo or a selection makes a link anyone can open without signing in. Each link can:
| Setting | |
|---|---|
| Keep location | Off by default: visitors get previews without any metadata and originals with their location and camera details removed (JPEG, PNG, WebP, HEIC and videos up to 100 MB are cleaned in place; others are left out). Choose the default in Settings. |
| Allow downloads | Originals and a ZIP of everything. Off: previews only. |
| Expires | On a date. |
| Password | Asked once per browser for 12 hours. |
An album's link shows the album as it is, photos added later included. New link replaces the address; Turn off stops it at once. Settings → Who has access lists every link and token.
Import from Google Photos
- Go to takeout.google.com, choose Deselect all, then only Google Photos.
- Choose Export once, file type .zip (Takeout splits big libraries into several archives; up to 50 GB each is fine) and create the export.
- When Google's email arrives, download every archive.
- In Photos, open Import and choose all the archives together.
Photos keeps the times and places Google recorded, descriptions, favourites, archived photos and albums; edited copies become the photo's current version with the original kept underneath; Live Photos and motion photos keep their motion; photos you'd put in Google's trash are skipped. Importing the same archives again only adds what's missing. Archives you upload don't count toward your storage and are deleted when the import finishes (or after 14 days if it never starts). An archive already in your Drive works too.
Picking a few photos straight from Google Photos is coming later.
iCloud Photos
Apple has no way for other services to read iCloud Photos, and Photos never asks for your Apple ID. Two ways in, both with a photo token you make in Settings → Devices (a token can upload, read for AI clients, or both; it opens only your library, and you can remove it there or in your account's Photos access):
From your iPhone (Shortcuts)
Make a token that can upload, then create a shortcut in the Shortcuts app:
- Find Photos where Date Taken is in the last 1 day (or use Select Photos for a share-sheet shortcut).
- Repeat with Each item:
- Get Contents of URL:
https://api.cactive.com.au/v1/me/photos/uploads, method POST, headerAuthorization: Bearer <your token>, request body JSON withname= Repeat Item › Name,ext= Repeat Item › File Extension,singlePart= true,source=shortcut. - If the answer's duplicate is false: Get Contents of URL with urls › 1 from the answer, method PUT, request body File = Repeat Item.
- Get Contents of URL:
https://api.cactive.com.au/v1/me/photos/uploads/<uploadId from the first answer>/complete, method POST, same header.
- Get Contents of URL:
- In Automation, run it every day at a time your phone is charging (Time of Day, Run Immediately).
The original is uploaded (HEIC stays HEIC); photos already in your library are recognised and dropped. Live Photos arrive as their still.
From your Mac (the agent)
Install the self-hosted agent, then:
si-agent photos connect # paste the token
si-agent photos sync ~/Pictures/Photos-export --watch
si-agent photos install ~/Pictures/Photos-export # keep it running in the backgroundPoint it at a folder of originals: either export from the Photos app (File → Export → Export Unmodified Original, with Live Photos' videos), or, with Download Originals to this Mac on, the library's own originals folder (~/Pictures/Photos Library.photoslibrary/originals, which needs Full Disk Access for the agent). It uploads what's new or changed, skips what's already there, pairs Live Photos and watches the folder. Albums from the Photos app aren't read yet.
AI clients (MCP)
A token that can read also works with the MCP server at https://mcp.cactive.com.au/mcp, for your library only: photos_albums, photos_album, photos_search (dates, a place as coordinates, words, type, favourites) and photos_get (details and a one-hour link to see the photo). Every call is in your activity log. Organization keys and OAuth tokens never see these tools.
Export
Settings → Export makes ZIPs of every original (the archive and Live Photos' videos included, not the trash), up to 10,000 files and 10 GB each, organised by year and month, with photos.json (each file's time, time zone, place, camera, description, favourite and archive state) and albums.json. The ZIPs can be downloaded for a day.
API
Everything the app does is in the API under /v1/me/photos (see Photos), for you signed in, or your photo token for uploads (photos:upload) and reading (photos:read). See Limits for every Photos limit.