The photos on your phone.
Your choices in Lightroom.
Keepers fetches photos from your Sony camera over the camera's own Wi-Fi and shows them as a
contact sheet. What you mark and edit on the phone travels home – as .xmp sidecars next to your RAW files.
phone (Keepers) ──PUT──▶ this server ◀──GET── keeper (at home) ──▶ DSC04973.xmp next to DSC04973.ARW
How it fits together
The phone is on the camera's Wi-Fi when it writes the sidecar, and there is no internet there. Your library sits at home behind the router, with no open ports. The two cannot talk directly – so the phone delivers here once it is back online, and keeper, a small program at your place, fetches the file and puts it where it belongs. This server is a post office, not an archive: what has been fetched is deleted.
The sidecar holds the file name, the keyword rullen and – if you edited in Snapseed – crop, curve and a
plain-language description. Never the photo, never location, never anything about you. Lightroom Classic reads it on import,
or with Metadata → Read Metadata from File.
Download keeper
One Python script and a service. Runs wherever the library lives: a Raspberry Pi with the NAS mounted, a Linux box, or the Mac. Needs Python 3.10 or newer and nothing else.
Get started
One line in Terminal, on the machine where the photos live:
curl -fsSL https://keepers.apps.hoi.by/installer.sh | bash
The installer asks for the address, the pairing code and where your RAW files are – and reads the Lightroom catalog to
suggest the folders where it can. It pairs with Keepers in one trial round and sets keeper up as a service: systemd on Linux
and Raspberry Pi, launchd on Mac. No sudo. Run it again to upgrade; --konfigurer asks the
questions again, --fjern removes it. The prompts are in English; the config keys are Norwegian, like the rest of keeper:
keepers_url, paringskode, bibliotek and arbeidsmappe.
Without the installer
curl -fsSLO https://keepers.apps.hoi.by/last-ned/keeper.tar.gz
tar xzf keeper.tar.gz && cd keeper
cp config.example.json config.json # address, pairing code, library
EN_RUNDE=1 python3 keeper.py
Set bibliotek to the folder (or folders, :-separated) with your RAW files and
paringskode to the code you were given. The first run exchanges it for a key and stores it in
config.json. keeper.service in the package runs it under systemd; adjust the paths.
keeper never overwrites an .xmp it did not write itself. If Lightroom's own is there, ours goes
to konflikt/ and the log says so.
Pairing codes
Every user has their own queue and keys; nobody sees anyone else's sidecars. Keys are never typed: you get pairing codes of eight characters, valid for fifteen minutes and once only. The phone enters its code under Settings → At home, keeper gets its own through the installer. Both exchange the code for a key and keep it themselves. If keeper needs a new code later, the phone makes one – and the other way round.
Register You need the invitation code from whoever runs the server. Sign in with Apple or Google comes when it is needed.
The app
Keepers is for the Sony α6000 and α7 III, and for FlashAir cards in the camera. It is in TestFlight now, on its way to the App Store. No account, no cloud, no tracking – all traffic goes to the camera, except the sidecars you choose to send here.
Keepers is not made by or affiliated with Sony, Google or Kioxia.