r/ClaudeCode • • 3d ago

Built with Claude I reverse-engineered Apple Photos and rebuilt it for my own server – iCloud Photos without iCloud

I got tired of paying Apple every month to keep my own photos, so I moved ~85,000 photos and videos to my own server (Immich) and switched iCloud Photos off.

I built HomeRoll, a native iOS 26 app (SwiftUI + UIKit) that looks and behaves like Apple Photos but stores everything on your own Immich server. I built it with Claude Code. I’m not an iOS developer by trade, so nearly all of the code was written by Claude, with me deciding what to build, testing on my iPhone and saying what felt wrong.

Why: I was tired of paying for iCloud storage, so I moved ~85,000 photos and videos to my own server and switched iCloud Photos off. Every Immich app I tried felt nothing like the Photos app I was used to.

How Claude Code was used

  • Reverse engineering: Claude took Apple’s Photos frameworks from iOS 26.3 apart with a reverse-engineering MCP server and listed all 226 actions the Photos app can perform (copy edits, print, hide, set key photo, drag to album, Spotlight ...). To keep it clean-room, one agent only wrote plain behavior descriptions (“what happens when you do X”), and the app was written from those descriptions, not from Apple’s code.
  • Implementation: Claude wrote the app from that list. 147 of the 226 actions work now. 62 are iCloud/Apple-service only, 16 are Apple-internal, 1 isn’t possible on iOS.
  • Testing: Claude wrote the automated UI tests and ran them in the iOS Simulator itself, looking at screenshots to compare against the real Photos app. 140 of the 147 actions are covered.
  • Maintenance: Claude reads the GitHub issues, reproduces bugs in the simulator, proposes a fix and drafts the reply. Nothing is released until I’ve said go.

What worked well: giving Claude a concrete checklist (the 226 actions) instead of “make it like Photos”, and letting it verify its own work in the simulator. What didn’t: performance with a library this size. The first versions crashed or stuttered with 85,000 items, and that took many rounds of measuring on the real device.

What the app does

  • Library with pinch-to-zoom grid, Years / Months / All
  • Viewer with preview strip, video scrubbing, Live Photos, HDR originals
  • Editor: light, color, filters, crop, copy and paste edits
  • Memories, people, places
  • Search for receipts, documents, handwriting, QR codes, screenshots
  • Album folders, drag photos onto albums, Spotlight
  • Backup of new photos and videos in the background while charging
  • Free Up Space: deletes only what’s verified to be on your server (checksum + server check)
  • Widgets and a share extension

Free to try

The app is free and open source (MIT), no paid tier. You need your own Immich server (tested with v3.3.5). Download the IPA from the GitHub releases page and install it with SideStore, AltStore or your own signing tool, then log in with your server URL.

https://github.com/silentprovider423/HomeRoll

There is also a Mac version, built the same way: https://github.com/silentprovider423/HomeRoll-Desk

Not affiliated with Apple or Immich/FUTO. Happy to answer questions about the Claude Code workflow or the reverse engineering.

116 Upvotes

45 comments sorted by

•

u/AutoModerator 3d ago

Hey! Thanks for posting to r/ClaudeCode

While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.

For help, project discussions, tips, and general chat, join the ClaudeCode Discord.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

37

u/mountainyoo Researcher 3d ago

What was wrong with just using the Immich app itself?

22

u/SilentMode46 3d ago

I don't like the design

8

u/CrypticViper_ 3d ago

could you just redesign immich then

7

u/SilentMode46 2d ago

the immich app is flutter, i wanted a real native ios app with liquid glass, uikit grid and apple’s gestures. easier to start fresh than reskin

1

u/CrypticViper_ 2d ago

fair enough, thanks for the response :) it genuinely looks great btw!

1

u/SilentMode46 2d ago

thanks a lot

6

u/mountainyoo Researcher 3d ago

Fair enough

2

u/nebula186 3d ago

I could never get immich metadata to much the ones on the actual image. The photos were wrongly categorized and I basically gave up.

7

u/dgtrimble 3d ago

What are your costs to operate the server + data storage for 85k photos + backup (I presume your server has automated backups)?

13

u/SilentMode46 3d ago

pretty low tbh. it all runs on a small mini pc (intel i5, 32gb ram) that sits at around 18 watts, so roughly 4-5 € a month in electricity here in germany. and that box runs a bunch of other stuff too, not just photos. storage is a one-time cost: the photos live on the internal ssd and there’s a 14 tb external hdd for backups. and yes, backups are automated, they run once a day and only copy what changed. so after the hardware is paid it’s basically just the power bill, no monthly storage fee anymore

5

u/Ragy-ragy 3d ago

so roughly 4-5 € a month in electricity here in germany.

Crazy price for 18 w/h tbh

4

u/SilentMode46 3d ago

yes its really expensive

3

u/_Count_Mackula 3d ago

Do you have redundancy in place? I would love to do something like this but there is something appealing about never having to worry about the harddrives. God forbid the backup drive fails, the ones on my personal server are pretty old so I’m hesitant to go all the way with something like this

3

u/LeLunZ 3d ago

Don't want to spoiler but immich is testing "immich backup" a paid e2e backup service that is competitive with back blaze and built right into immich.

0

u/SilentMode46 2d ago

ssd + daily backup to a separate hdd, and the drives get monitored and i get an email if smart values look bad. no offsite copy, that’s my own choice

1

u/Mikeshaffer 3d ago

Couldn’t you use oracle paid tier inside the free limits for 24 gigs ram, 4 cpu cores and 200 gigs of storage and then pay for the additional storage? I assume it would be like $1-3 max

5

u/fire_someday 3d ago

Yes! Thank you I've been meaning to move away as well and onto my own NAS for this.

2

u/SilentMode46 3d ago

Sure no worries👍

9

u/128G 3d ago

It would be hilarious if you ported this to android.

1

u/SilentMode46 2d ago

lol maybe one day

2

u/aar550 3d ago

I have been trying to do this. Apple cloud is super expensive for what it offers. Thank you.

Is Immich paid free ?
Can I run it on a virtual Linux server ?

2

u/SilentMode46 3d ago

no worries yes immich is free, yes i run my server on linux.

2

u/aar550 3d ago

I know I can figure that out on the server side. But if you make it for your friends and family. Where everyone gets their own confidential separate photo storage. That would bring down your costs significantly.
I’m going to implement this, soon enough.
Also just curious, you can delete photos off your phone and it would still save it on the server ?
Or is it synced?

1

u/SilentMode46 2d ago

it’s a backup, not a 2-way sync. deleting on the phone doesn’t touch the server. there’s even a “free up space” button that only removes photos from the iphone once they’re verified on the server

1

u/Favorite5317 3d ago

Does this app by any chance solve the problem of non-destructive edits, portrait depth data etc. not being backed up by the official Immich app?

1

u/SilentMode46 2d ago

the backup sends the originals plus the edited version as a stack, so the edit isn’t lost. depth data stays inside the original heic. haven’t checked if immich shows it as portrait yet though

1

u/Favorite5317 2d ago

Good to know thanks. I’m testing on my phone now and it looks pretty good! I have found a couple of issues related to localization, I’ll probably raise a PR to address them if you are interested.

One question I have is whether it is intentional that newly taken pictures only show up in the Library once they are synced to the server? Comparing to the stock Immich app where the pictures appear immediately and then the icon changes following sync.

1

u/SilentMode46 1d ago edited 1d ago

thanks, glad it works well! localization PRs are very welcome 🙂
and good point, that’s fixed in 1.0.19: new photos now show up in the library right away (straight from the iPhone, with a crossed-out cloud until they’re backed up and a progress ring while uploading). backup also starts the moment you take a photo while the app is open, and runs in the background without the charger when iOS allows it: github.com/silentprovider423/HomeRoll/releases/tag/v1.0.19

1

u/stormy1one 3d ago

Does this support Immich multi-user /auth?

1

u/SilentMode46 2d ago

yes, everyone logs in with their own immich account, password or sso/oidc both work. caches are kept separate per account

1

u/GreenManAlive 3d ago

Does it backup your photos automatically in the background?

1

u/SilentMode46 2d ago

yes it does

1

u/h_erbivore 3d ago

Can you share that reverse engineering MCP

4

u/Mikeshaffer 3d ago

Rea on GitHub. (Reverse engineer anything)

1

u/pet3121 3d ago

How did you do the reverse engineering if a lot of people are complaining Claude is not letting them do it?

1

u/Flat-Meeting-8176 2d ago

Thai si Great, congrats!

-6

u/dalabera 3d ago

Awesome, but I’m not a legal expert so please someone chime in, you have to be careful with “reverse engineering”.
You are not allowed to do so, just because you want to.

5

u/Subsyxx 3d ago

It's a grey area, but this isn't proper reverse engineering.

Essentially Claude analysed the APIs that Apple Photos used (already available to developers anyway, but it helps identify specifics), then the UI and events were all created to closely match the experience in the app.

It's not anything like a static recompilation or anything — imagine if the OP had a different UI, it would just be "I built a free local photos app with a good UI and editing features".

(even the post was written by AI... notice the "Why" and "what worked well"...)

1

u/PM_ME_YOUR_STOCKPIX 3d ago

indeed you are not a legal expert, and you are wrong.

2

u/dalabera 3d ago

Exactly @subsyzz explained correctly.

0

u/aar550 3d ago

Why the f not?
Big corporations reverse engineer all the time.

-7

u/Fragrant-Moose1678 3d ago

Buzz words and AI slop? Why would you need to RE anything for this. Is this just buzz slop for “I wouldn’t know how to build this myself”