Nobody reads your library
No advertising profile, no training data, no scanning. Face recognition and search run as local processes on your box — there is no cloud service to send them to.
Smriti is a complete gallery and a real file manager, running on a server you own. It finds faces, understands what is in your pictures, and helps you clean up twenty years of duplicates — while your documents, videos and folders stay exactly where you put them. Every bit of it happens on your hardware: your photos and files never leave your machine.
Runs on modest hardware — the reference deployment is a fanless 4-core i3 with no graphics card.
Every cloud gallery is the same deal: they hold your memories, and you pay monthly for permission to look at them. Smriti is the other deal.
No advertising profile, no training data, no scanning. Face recognition and search run as local processes on your box — there is no cloud service to send them to.
You already bought the disks. Smriti does not meter them, does not expire your library, and does not lock features behind a monthly renewal.
Your ceiling is the size of your drives. Add a disk and the ceiling moves. Administrators can still set per-user quotas when a server is shared.
Smriti is built to take over from Google Photos or Immich, not sit beside them. It reads your existing folders where they already are.
Most self-hosted photo apps make you choose: a pretty timeline you cannot organise, or a file browser with no sense of what a photograph is. Smriti is both, over the same files.
Scroll years in a flick with a date scrubber, open anything in a viewer with deep zoom, and gather what matters into albums.
Faces are detected and grouped into people on your own machine. When it guesses wrong you correct it, and the merge review loop learns from the correction.
Describe the picture rather than the filename. Semantic search matches on image content, alongside ordinary search by name, tag and date.
Browse, move, copy, rename and delete — individually or in bulk — with tags, favourites and bookmarks over the same library.
Deletes go to a recoverable trash rather than straight off the disk, so a misplaced click is an undo and not a phone call about backups.
Twenty years of copied folders get detected and consolidated down to one copy — the reason this project exists.
Describe how you want things filed. Smriti stages the matches for your review, shows you the dry run first, and every applied batch can be undone.
Resurfaced memories from years past, and an offline map that turns the coordinates in your photos into the names of the places you went.
Public share links for the people who are not on your server, protected with a password and an expiry date you set.
Every member of the household gets their own library, strictly isolated from the others — enforced in the database, not just hidden in the interface.
Users, storage roots, background jobs, statistics, quotas, notifications and an audit trail — all in the app, no editing config files over SSH.
The database backs itself up nightly, and raises an alarm if a backup ever goes stale — because a silent backup failure is the same as no backup.
Some photographs are nobody else's business. Unlock the Vault with a PIN and the whole application re-scopes to your private content — the same gallery, the same file manager, the same face recognition, over a completely separate set of files.
It is a sandbox, not a hidden folder. Nothing in the Vault appears in the normal library, and nothing from the normal library leaks into the Vault. Isolation runs in both directions.
Illustration of the staged-review flow. Numbers are an example, not live data.
A photo library that grew across phones, laptops and backup drives is mostly duplicates. Smriti scans for them in the background and then does the careful thing: it tells you what it found and waits.
Every organising action shows a dry run before it touches a file, stages the result for your approval, and stays undoable afterwards. Your originals are the one thing the product will not gamble with.
No import, no re-upload, no new folder structure to learn.
Your existing directories on your existing disks. Smriti reads them where they are.
Faces, places, text in documents, duplicates — computed by models running on your own box.
Every clean-up is proposed first, applied only on your word, and undoable afterwards.
Search finds the photo of a card, the person in it, or the beach you went to — by name, not by filename.
Duplicate detection reclaims the space a decade of phone backups quietly ate — reversibly.
The Vault is the whole app again, sealed behind a PIN — not a hidden folder with the lights off.
Real file operations with a recoverable trash — the gallery does not hold your documents hostage.
One command for a Linux box, a form for TrueNAS SCALE, or read the Compose file yourself first — your choice.
Docker + Compose on any Linux host. Checks the container runtime, disk space and the port before touching anything, and prints the plan before it starts.
curl -fsSL https://get.smriti.cloud/install.sh | sh
The installer is written, but Smriti's source is not public yet, so this command does not run today — it goes live with the first public release. The Docker install & configuration guide already documents every step and setting if you want to set it up by hand now.
Packaged as a community catalogue app. Storage roots, ports, passwords and resource limits are all on the install form — no compose file to hand-edit.
Not published yetThe app is packaged but not yet submitted to the TrueNAS catalogue. The full TrueNAS install guide covers adding the catalogue, every setting on the form, and the dataset and permission setup TrueNAS's NFSv4 ACLs need.
Desktop, Android and iOS apps are being built — nothing is downloadable yet. Until then, the web app is fully responsive and already works today in any modern browser, on a phone, a tablet or a desktop.
Windows, macOS, Linux
In developmentPhone & tablet
In developmentiPhone & iPad
In developmentAdapted native layout
In developmentNot a stack list — how the interesting parts actually work.
SHA-256 only the survivors and group by digest. Near-duplicates (the same shot
resized, re-compressed or screenshotted): a perceptual hash per image, clustered by
Hamming distance under a threshold you control.WHERE clause. Every file path is additionally jailed to its owner's root, so a
crafted path cannot escape it.
The stack, briefly, for the person deploying it: Python/FastAPI, PostgreSQL with
pgvector, Redis-backed job queue, a separate CPU-only ML container with no
published port, a React front end served as static files, all via Docker Compose.
Every one of those containers runs on your box. The database is yours, the thumbnails are yours, the face vectors and the search index are yours. Smriti reads your existing folders in place — it does not demand that you import your library into an opaque store first.
Face detection and CLIP embeddings are computed by a local worker on CPU. Model weights are baked into the image at build time with pinned checksums, so nothing is fetched at runtime and no image is ever sent anywhere for inference. Slower than a GPU cloud; it is your data, and it only has to happen once per file.
The reference deployment is a fanless 4-core i3 with 16 GB of RAM and no GPU, on TrueNAS SCALE. Heavy work is queued, throttled and thermally aware rather than assumed to be free. A GPU is not required and is not used.
A privacy product that oversells itself is not a privacy product. This is the part most landing pages leave out.
Named for the Sanskrit word for remembrance. Built to outlast whichever company would otherwise have been holding your photographs.