⚠️ Sailjail permissions changed in 0.9.1: a Videos permission was added.
Please read the "sandbox permissions" section.
Nami looks through your photographs and works out who is in them. Then, because that was apparently not enough, it decides which of them mattered and cuts them into short films set to music, which you can save as a video.
All of it happens on the phone. Nothing is uploaded, because there is nowhere to upload it to: the app declares no Internet permission and could not make a request if it wanted to.
⚠️ v0.9.1, still experimental. It works. That is a different claim from "it works for you".
Source code: https://github.com/nicosouv/harbour-nami
Written by a human developer with LLMs (Claude and Mistral Vibe). It is also an experiment: packaging a Sailfish OS app with its ML models fully bundled, so it runs offline out of the box.
- YuNet (face detection, MIT) and SFace (face recognition, Apache-2.0), both from the OpenCV Model Zoo. Not downloaded at runtime: fetched during the CI build, SHA-256 verified, and shipped inside the RPM.
Source: https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet
Direct file: https://media.githubusercontent.com/media/opencv/opencv_zoo/main/models/face_detection_yunet/face_detection_yunet_2023mar.onnx
- SFace (face recognition, Apache-2.0 license)
Source: https://github.com/opencv/opencv_zoo/tree/main/models/face_recognition_sface
Direct file: https://media.githubusercontent.com/media/opencv/opencv_zoo/main/models/face_recognition_sface/face_recognition_sface_2021dec.onnx
- Four music tracks, one per clip style, about 2.9 MB in total. All from Pixabay, under a licence that asks for no attribution. They are credited anyway, in the About page, because somebody wrote them.
Videos are encoded with whatever encoder your phone already owns. Nothing is bundled for that either.
- Pictures: to scan your gallery.
- Videos: to write an exported clip to ~/Videos/Nami. Nami only writes there, it never reads your existing videos.
- Documents: for the data export and the encrypted backup, nothing else.
- RemovableMedia: so SD card folders can be scanned. Only the folders you whitelist in Settings are ever read.
- Contacts + Privileged: to read your address book for the optional "link a person to a contact" feature. On current Sailfish OS versions the contacts database lives in privileged storage, so the Contacts permission alone returns an empty store. Same approach as Fernschreiber.
Contacts, precisely: read-only, never created, modified or deleted. Only the numeric ID and display name of contacts you link are stored. A Settings toggle disables contact reading entirely, permission granted or not, and the related UI disappears with it.
- Faces, biometric embeddings, names and your corrections live in a local SQLite database, owner-only (0600). It is not encrypted: the security model is your lock screen, like everything else on the device.
- Settings hold preferences and app state only. No names, no biometrics.
- "Clear all data" wipes every photo record, face, embedding, name, correction, memory and trip, deletes the cached face crops, then vacuums the database, so the deleted parts of your life are not merely marked as free.
- Data export writes metadata to ~/Documents as readable JSON. Never the raw biometric templates: they are unreadable to you and reusable by others.
- Encrypted backup writes to ~/Documents, AES-256-GCM under a passphrase you choose (PBKDF2-SHA256). The passphrase is not stored, so a backup without it is a file of noise.
- Sharing is the one way anything leaves, and it is your doing: the file goes to the app you picked, and what happens next is that app's business.
- Exported videos are ordinary files in ~/Videos/Nami. They are yours. Delete one and Nami stops mentioning it, which is more than can be said for most things.
If it does not work for you, or you dislike it, say so. Both happen.
https://github.com/nicosouv/harbour-nami/issues
| Attachment | Size | Date |
|---|---|---|
| 40.17 MB | 08/07/2026 - 13:56 | |
| 40.2 MB | 13/07/2026 - 15:25 | |
| 39.77 MB | 13/07/2026 - 15:25 | |
| 40.29 MB | 19/08/2026 - 00:42 | |
| 39.87 MB | 19/08/2026 - 00:42 | |
| 39.92 MB | 22/08/2026 - 13:55 | |
| 40.33 MB | 22/08/2026 - 13:55 | |
| 43.23 MB | 03/09/2026 - 10:15 | |
| 42.8 MB | 03/09/2026 - 10:15 |
- Once a day, unprompted, the app goes through your gallery and decides which parts of your life were significant: an anniversary, a trip, a busy day, someone you see a great deal of, two people who keep appearing together, the month you just finished.
- Every memory plays as a clip, cut to the beat of its music, the camera drifting across each photo and landing on the faces in it. Yes, like the one on the other phone. No, nothing left the device.
- Four styles, each with its own track: sentimental, energetic, polaroid and bauhaus. Four, because one would have looked like a decision.
- Build one from whoever you like: pick several people and get either the photos where they are all present, or every photo any of them wandered into.
- Edit it, since the recipes are confident rather than right: reorder the photos, throw some out of the clip, put them back, choose the cover, rename it, hide it entirely.
- Save it as a video in `~/Videos/Nami` and share it from there. It is written with encoders your phone already had, so nothing is bundled
- Revamp the homepage entirely!
- New icon. The previous one is not discussed.
New
- Swipe sideways in the photo viewer to move through the photos!
- Share photos from anywhere: a single photo, a person, a day, a trip or a memory
- Confirming suggested matches screen
- Photo details: capture date, dimensions, file path and where it was taken, drawn on an offline map (the same used for Events)
- Sort people by photos, name or most recent photo
Improved
- Some UI improvements: lighter interface, removed the square picture everywhere...etc
- Much faster: photos come back in a single database query instead of one per photo, thumbnails are kept on disk, and photos decode at screen size rather than at their full megapixels
Fixed
- Sharing now goes through the standard Sailfish share
- "Remove from person" did nothing
- Double tap in the photo viewer only reset the zoom instead of zooming in
- The zoom buttons jumped to the top-left corner instead of keeping the middle of the screen in view
- Photos deleted from your phone lingered as empty tiles; they are forgotten after every scan, and Settings can do it without rescanning
- Fix a crash after identifying a face. It happened every time, whether you typed a new name or picked a contact from the address book.
- Fix the same crash when merging two people together.
- Fix the trip route map rendering as an empty sheet of paper.
- Land and sea are now filled in, instead of a bare coastline outline.
- When identifying a face, Nami now suggests the most likely people
- Name autocomplete while typing a new person
- Group several days into a named trip!
- Trip page: browse by day or by geographic stop, total route distance, and an offline route map. Still no network, no map service.
- Add more days to an existing trip, merge two trips, ungroup, or hide a day/trip from the Events list without touching the photos.
- Optional setting to include photos with no identified person in Events.
- Full backup and restore (on an offline file), encrypted with a passphrase you choose.
- Restoring finds your photos again by content hash even if they ended up at a different path on the new device.
- Restore is additive and safe to run on a database that already has data. Scan the gallery first, then restore. Contact links are not included in a backup
- Norwegian Bokmal translation, contributed by Frank Paul Silye, thanks!!
- ARMv7 build (untested cause I only have a C2 now) !
- Sailjail update: Contacts and Privileged permissions added! It's required to read your address book for the optional "link a person to a contact" feature. On current Sailfish OS version, the contacts database lives in privileged storage, and reading it from a sandboxed app requires the Privileged permission, the Contacts permission alone gives access to an empty store. This is the same approach used by other apps (e.g. Fernschreiber)
- Link people to your device contacts (adopts the contact's name, badge on linked people)
- Open the People app directly on the linked contact
- Link a face to a contact straight from the identify flow, or keep app-only people
- Duplicate merge suggestion when linking a contact already linked to someone else
- Privacy toggle to disable all contact reading
- People gallery in list, grid x2 or grid x4 layout
- Full context menu on long press in grid layout
- Scan folders of your choice, SD card supported
- Photos honor EXIF orientation; manual rotation persisted in the viewer
- Events fixed (no more empty events) and tapping one opens its photos
- Memories match a configurable day window (default 20) and open a polaroid-style spread
- Scan results show unknown faces first, with a note when everything was auto-matched
- Fix search fields losing focus while typing
- Fix rename and delete dialogs failing to open
- Fix removing a photo from a person not persisting
- About page: app logo, dynamic version, updated feature list
- Complete translations (en, fr, de, it, es, fi)
- Fix sailjail permissions
- Local, on-device face detection and recognition (YuNet + SFace, OpenCV DNN), no cloud, no network at runtime
- Automatic photo gallery scan with batch processing and progress, cancellable
- Face grouping, naming and tagging by person
- UI to identify and sort faces quickly
- Person pages with photo gallery, "view face in photo" highlight, and one-tap confirm of all matches
- Distinct badges for manual vs auto-matched faces, with similarity scores
- Person merge, incremental scan, and persistent manual corrections
- Configurable scan folder and recognition strictness
- Events and Memories views based on EXIF capture dates
- Face thumbnail provider with disk cache (avatars, identify flow)
- Full-screen photo viewer with pinch-to-zoom
- Full translations: English, French, German, Italian, Spanish, Finnish
- ML models bundled and SHA-256 checksum-verified at build time
Comments
mkz
Thu, 2026/08/20 - 21:45
Permalink
After use, just suggestions :
- a link to share pictures
- path of picture
- possibility of showing only unconfirmed pictures
- sorting by date
Thanks again for this very nice app !
mkz
Wed, 2026/08/19 - 01:33
Permalink
It works nice !! Thanxx a lot !
mkz
Tue, 2026/08/18 - 22:35
Permalink
Beautiful update! Thanx Nico !
Unfortunately app is crashing after each identification from contact of the address book...
Update : it crashes each time it add a new name in its database.
App tested on J2 SFOS 5.2.
nicosouv
Wed, 2026/08/19 - 00:46
Permalink
I finally figured it out! It was a nasty bug: the dialog was still holding on to something the app had already thrown away.
I removed the 0.8.3, and uploaded a 0.8.4 which is way better.
nicosouv
Tue, 2026/08/18 - 20:55
Permalink
Thanks! I'll take a look at it, I may have find the issue! Not sure I can reproduce correctly on my device, so I guess it'll be a "test" release :/
mkz
Wed, 2026/07/15 - 11:01
Permalink
Great ! Thanx a lot !
Contact link works fine ☺
Unfortunately, it doesn't show SD card path (or I can't find it).
nicosouv
Thu, 2026/07/16 - 10:31
Permalink
I added some settings about that. You may need to whitelist the SD card path. I know it is a little overkill but since I added the sailjail permission, I wanted users to be in full control about what the app is allowed to read.
Could you check the settings add the path and try again ? Thanks !
mkz
Sat, 2026/07/11 - 01:29
Permalink
Hi thanks for this amazing app.
Two requests/comments :
- should it possible to read pictures from SD in the future ?
- is it possible to connect Nami's persons to Contacts ?
Thanxxx a lot !
nicosouv
Mon, 2026/07/13 - 15:57
Permalink
It's now implemented in 0.8.0! But it needed a sailjail permission update, I put some settings incase someone does not want some functionnalities.
Let me know if it's ok for you :)
nicosouv
Sun, 2026/07/12 - 00:07
Permalink
Thanks for the feedback! I'm looking into that, I'll let you know!
dalas_revo
Wed, 2026/07/08 - 14:59
Permalink
Thanks for the quick fix!
dalas_revo
Wed, 2026/07/08 - 11:53
Permalink
Maybe it is a nice app, but I didn't dare to test it, although I'd very much like to. In the description, it is called privacy-first and it claims to not send any data. I think in that case all the superfluous permissions which it asks for should be removed.
nicosouv
Wed, 2026/07/08 - 13:58
Permalink
Fixed (0.7.1) the app is now properly sandboxed and only requests Pictures and Documents.
Sorry about that I hadn't paid attention to it. The app wasn't declaring its Sailjail permissions, so the system showed the full unconfined set.
Thanks for the feedback!
nicosouv
Wed, 2026/07/08 - 13:14
Permalink
Oops yeah my bad, I'll change that !