Photo library · fully local

Photos without a server.

स्मृति· remembered

Smriti indexes any drive, recognises faces on-device, and surfaces memories — without leaving your machine. No account, no cloud, no server humming in a closet.

Apache-2.0·Free forever·No sign-up

live demo A 30-second loop of Smriti: indexing a folder, browsing the timeline, clustering faces, exploring the map, searching, and entering the slideshow.
01 — Why Smriti exists

Most photo apps want to be a service. Smriti wants to be a tool.

The cloud apps want a login, a sync daemon, a monthly fee, a server you maintain. They want your photos to be content they process — endlessly, in the background, on a machine that runs all year so you can check in twice.

Smriti is none of that. Open the app, browse, close it. Your library is finished work, not a stream that needs draining. When the app is closed, nothing runs. When the app is open, the photos are already where they were — on your drive, in their folders, exactly as you left them.

02 — interactive

Name a face once.
Smriti groups every photo of them.

Tap the button. Six people. Thirty-six photos. The clustering below runs in your browser — the real app does the same on your machine, with InsightFace ONNX models, no cloud round-trips.

36 unsorted faces

All offline.  No upload, no embedding service, no API key.

03 — what you do with it

Six things, deeply considered.

Smriti timeline view showing a scrollable grid of photo thumbnails with a sticky year header

Bring 200,000 photos in.

Point Smriti at a folder or drive. It indexes in place — never copies, never moves your originals.

Smriti people view showing a grid of clustered face thumbnails grouped by person

Name a face once.

On-device face recognition groups every photo of that person across your whole library. No cloud round-trip, no upload — clustering and review both stay on your machine.

Smriti map view showing photo clusters plotted on a geographic map

See where you've actually been.

Every geotagged photo plotted. Click a cluster to drill into the place. Tile cache lives on your drive.

Get reminded, not pestered.

"This day, N years ago" surfaces when you open the app. Never a notification. Never a curated highlight reel.

Cull the obvious junk.

Duplicates, bursts, near-duplicates surfaced in one place. One-click cleanup. Trash, not delete — restore if you change your mind.

05 — opt-in assistant

Ask for the album.
Watch Smriti do the legwork.

The assistant isn’t a chat window glued to a photo app. It calls Smriti’s own tools — resolve people, resolve places, resolve dates, search photos, prepare an album preview — then waits. It can search and draft albums; it does not rename, move, trash or delete your originals.

you click a recipe →
Make an album of Amma and me in Vizianagaram, 2014.
uses library metadata · asks before changes
activity press a recipe →
smriti proposes cancel approve

You stay in charge.  Assistant is opt-in, provider-backed, scoped to the open library, and album creation needs approval.

06 — interactive

Click. Watch your year
become trips.

Smriti's album-suggestion engine clusters runs of photos taken away from your home city. The real app does this on indexing; below, it does it when you click. The data is synthetic, the algorithm is honest.

366 days · 1,847 photos

Found locally.  No upload, no geocoding API, no “trip suggestions powered by…”

07 — how it compares

One column has
no asterisks.

Cloud (Google · iCloud) Self-hosted (Immich · PhotoPrism) Smriti
Photos live On their servers On your server On the drive they came from
Original quality preserved Compressed by default (Google's "Storage saver" caps at 16 MP) Preserved Preserved — files never opened for write
Account required Yes Yes (you set one up) None
Server to maintain Theirs (you pay rent) Yours, 24 / 7 None — it's an app
Metadata (faces, tags, albums) In their database In your server's database On the drive with the photos
Survives provider going away No Only if your server keeps running Yes — it's files
Yearly attention you owe it Renew subscription Updates · certs · backups None
Cost over five years $250 – $750 NAS + power + your time $0
Works on a plane Limited Limited (no VPN) Everything
Memory footprint when closed n/a ~1 – 4 GB resident Zero

Comparison reflects each project's default setup as of 2026. Smriti's row makes no claims it can't keep.

08 — interactive proof

Move the slider.
See what recompression changes.

Left: your original. Right: what Google Photos' "Storage saver" is documented to do: compress to save space, and resize only when a photo is larger than 16 MP. Smriti never re-encodes anything.

High-resolution autumn park and footbridge before recompression
Compressed version
Original After Google Photos
Add quality-photo.jpg to website/ A high-detail photo with fine texture makes recompression visible.
Drag the divider·JPEG · conservative recompress · originals untouched Photo: Dietmar Rabich · CC BY-SA 4.0
09 — your escape hatch

Your photos called.
They want to come home.

Google Takeout hands you a pile of ZIPs and sidecar files. Hand the whole pile to Smriti. It reconnects dates and places, restores favourites and real albums, collapses export duplicates, and keeps the originals on your drive.

Google Takeout

Select every part together. Leave them zipped.

Smriti · on your drive
Import complete local
  • Originals copied safely
  • Dates + places restored
  • Favourites + albums rebuilt
  • Export duplicates collapsed

Interrupted? Run it again. Smriti resumes safely.

10 — interactive

Your library lives on the drive.

Smriti writes a database at <drive>/.photovault/ — on the same drive as the photos. Unplug it. Plug it elsewhere. Faces, tags, albums, the whole library travels with it. Try it below.

USB drive:  unplugged
smriti · macbook
247,938 photos 14 people · 23 albums

No library connected

MacBook
smriti · thinkpad
247,938 photos 14 people · 23 albums

No library connected

ThinkPad
Same library.  Same faces, same albums, same memories. No sync. No upload. No re-indexing.
11 — network honesty

Smriti makes exactly four
kinds of HTTP request.

Three of them you can turn off. Nothing else leaves your machine — ever. No telemetry, no analytics, no "anonymous usage statistics".

  1. 01

    Map tiles

    When you open the Map view. Tiles are cached on your drive after first load; subsequent panning is served from cache.

    tile.openstreetmap.org
    Disable: avoid the Map view, or cap the cache in Settings
  2. 02

    Asset pack download — one time

    ONNX models for face recognition + GeoNames database for offline reverse-geocoding. You're prompted on first run; declining is fine, core app still works.

    github.com/ChivukulaVirinchi/photovault/releases
    Disable: decline the prompt on first run
  3. 03

    Update check — opt-in

    If you opt in, Smriti checks for new releases once every 24 hours. Off by default. No photo data, no telemetry, just a single HEAD-style request.

    api.github.com/repos/.../releases/latest
    Default: off
  4. 04

    Update install — only when you click Download

    If you accept an update, Smriti fetches the matching installer for your platform and verifies its SHA-256 against the signed checksum. No metadata about your install or library is sent.

    github.com/.../releases/download/...
    Disable: don't click Download
12 — design discipline

Offline by default.
Never by dogma.

Face recognition is the one slow step. On CPU, a 90,000-photo library takes ~3 hours. If you want to skip the wait, Smriti can borrow a free Kaggle or Colab GPU for the one-time pass — and finish in minutes.

It sends only 112×112 aligned face crops. Never originals, never metadata, never filenames. When the pass is done, you disconnect. Forever, not "until the next sync."

Face embedding · 90K photos
StageCPU (laptop)T4 GPU (Kaggle)Δ
DetectionLocal · ~45 minLocal · ~45 min
Embedding~3 h~2.5 min70×
ClusteringLocal · ~1 minLocal · ~1 min
13 — get smriti

Free. Forever.
No upsell.

Apache-2.0 licensed. Source on GitHub. The asset pack adds face recognition and offline place names — optional, prompted on first run, declinable.

Download Smriti We'll pick the right installer for this computer.
Choose download
Nothing else to hunt down. On first run, one optional button enables faces, offline place names, and visual search. Smriti downloads and verifies the files for you, then indexes automatically.

Apache-2.0 · Free forever · No sign-up · No telemetry