why
I try not to use the cloud for my personal files - and I really like to have information as files, as opposed to opaque databases. Files are great! I know exactly where they are, I can inspect them, back them up, and open them with any tool I choose ten years from now.
Cloud services are convenient, yes, but they lock you in and cost money. .vcf, .mp3, .jpeg and .png files - these will still be readable long after any particular service stops existing. I moved from Mac to Linux a couple of months ago, and one of the main difficulties was dealing with the siloed data on iCloud. I decided to go all-in on files over services, which has been great on Linux, but I really want to see some of my data on my phone too. The apps on this site are the iOS end of my setup.
apps
LocalMusic
A music player, plain and simple. Point it at a folder synced to your iPhone (more on that below) and it scans, indexes, and plays your library.
- Search and filter your music files
- Playlist support via
.m3ufiles with relative paths (including creation/editing of playlists) - Playback controls, background audio iOS integration
- Lyrics display where available in the metadata
- Mini-player while browsing
Desktop companion: kew: a terminal music player for Linux
Source: github.com/j23n/localmusic
TestFlight: Give it a try!
LocalGallery
A photo browser for your library. LocalGallery reads the EXIF metadata written by your photo management software (digikam, others at a best-effor basis). Browse by folder, tag or person - all derived from the metadata in the files themselves.
- Photo grid and full-screen viewer
- EXIF and XMP metadata display
- Memories and collections view
- Person tagging linked to contacts, to surface memories on birthdays
Desktop companion: digikam: photo management for Linux
Source: github.com/j23n/localgallery
TestFlight: Give it a try!
LocalContacts
A contacts manager for vCard files. LocalContacts reads them, lets you browse and edit, and keeps them in sync with Apple's native Contacts app, so your contacts work everywhere on iOS (Phone, Messages, Mail) while remaining portable plain-text files.
- Browse, search, and edit contacts
- Bidirectional sync with Apple Contacts
Desktop companion: khard: a terminal vCard contacts manager
Source: github.com/j23n/localcontacts
TestFlight: Give it a try!
the stack
The Apple ecosystem makes a files-first life super difficult, because actually getting files onto your iPhone is a huge pain - it's extremely cumbersome on Mac & iPhone, and plain impossible on Linux & iPhone. So you have to use some kind of cloud storage. The problem there is that the required (undocumented) APIs to "open a folder and its files" are implemented by virtually zero file providers: Google Drive, Proton Drive, OneDrive, even Cryptomator (which would be optimal for privacy) doesn't. The only one that does: iCloud Drive.
Instead, I use Syncthing on Linux and Synctrain on iOS to copy files straight to "on my iPhone", where the apps can access them without issue.
| tool | role | platform |
|---|---|---|
| Syncthing | file sync | Linux |
| Synctrain | file sync | iOS |
| photo-tools | automatic photo tagging (RAM++, CLIP, OCR) | Linux |
| digikam | photo management | Linux |
| khard | vCard contacts manager | Linux |
| kew | music player | Linux |
privacy
These apps have a clear focus on privacy.
data collected: None.
network access: None.
third-party SDKs: None.
data storage: All data lives in files in the folder you designate. App preferences are stored in the iOS standard UserDefaults. Deleting the app removes preferences; your files remain in the folder you chose.
Crashes are collected through MetricKit & you can optionally choose to share logs after a crash, from the apps' settings.
get involved
If this sounds interesting to you, I'd love to hear about it! Please reach out on Github or contact me directly (link in the footer).
AI disclaimer
This is the first real iOS/Swift codebase I've seen. I relied extensively on Claude Code - not quite vibe-coded by certainly agentically (is that even a word?) coded.








