LocaliOS

Written on by j23n in privacy localgallery localcontacts localtunes

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 .m3u files 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.