Ente's price pays for three things: your encrypted photos kept in several places, key handling that survives a lost phone, and apps that back up in the background on iPhone, Android and desktop. An agent can write the encrypted-archive half in a weekend (encrypt locally, push to your own bucket, browse through a local page). A phone that uploads new photos by itself, face grouping, shared albums and a family plan are the months of work behind the subscription. Ente is also open source and self-hostable, which is a shorter road than rebuilding it.
Before you buildEnte's free plan gives 10 GB with the same encryption. If your library is smaller, you may not need to pay or build anything.
Build me a local encrypted photo vault to replace the backup part of Ente Photos. Requirements: - Node.js 22 + TypeScript CLI named `vault` and a Fastify page on http://localhost:4850. - `vault add <folder>` walks JPEG, HEIC, PNG and MP4 files, reads the capture date with `exifr` (file date as fallback) and skips files whose SHA-256 is already stored. - Encryption: libsodium (`libsodium-wrappers`). One master key derived with Argon2id from a passphrase; each file gets its own random key, sealed with the master key, and is encrypted in chunks with crypto_secretstream. Thumbnails (`sharp`, 512 px) are encrypted the same way. - Storage: ciphertext goes to an S3-compatible bucket through @aws-sdk/client-s3, with S3_ENDPOINT, S3_BUCKET, S3_KEY and S3_SECRET in .env. better-sqlite3 in ./data/vault.db holds the index (hash, date, size, object key, sealed file key) and is itself uploaded encrypted after every `add`. - Viewer: the local page lists thumbnails by month, decrypts them in the server and streams the original on click. It asks for the passphrase once per session and holds the key in memory. - `vault verify` downloads a random 2% of objects, decrypts them and compares hashes; `vault restore <dir>` writes every original back with its date. - Single user. No accounts, no telemetry, local-first: the only outbound calls go to your bucket. - Out of scope: phone auto-upload, sharing and public links, face grouping, family accounts. - README: how to export photos from an iPhone or Android phone to a folder, where the passphrase must be kept (a lost passphrase means lost photos), and a restore test to run once.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Ente Photos.
Add an Ente importer to the photo vault in this folder. Requirements: - A command `vault import-ente <export-dir>` that reads the folder produced by Ente's desktop app export, one subfolder per album, with metadata JSON files next to the media. - Take the capture date and location from the metadata file when present, else from EXIF. - Skip duplicates by SHA-256, keep album names as tags in the index and print a summary of new, skipped and failed files before uploading anything. - A dry-run flag that changes nothing. - Update the README.
Add albums to the photo vault in this folder. Requirements: - Albums are rows in the SQLite index: create, rename, delete, and add or remove photos from the viewer with multi-select; deleting an album never deletes a photo. - A photo can sit in several albums; the viewer filters by album and shows its count. - The album tables travel with the encrypted index upload, so a restore brings them back. - Add tests for deleting an album and restoring from the uploaded index. - Update the README.
Add a second storage target to the photo vault in this folder. Requirements: - Configure S3_2_ENDPOINT, S3_2_BUCKET and keys in .env; `vault add` writes each object to both. - `vault sync` finds objects missing on either side and copies them across without decrypting. - `vault verify` reports per target; a missing object on one side is a warning, on both an error. - Keep working with one target when the second is not configured. - Update the README.
People want Google Photos' convenience without handing the pictures to an ad company. Ente supplies the phone apps, the family plan and the encryption without a server to run, and its reviews praise how fast the team answers support mail.
Estimate · Bucket storage at 100 to 500 GB costs a few dollars a month with typical providers, or nothing if you keep it on a disk you own. Encryption and streaming need several rounds of testing, so budget above a typical entry in tokens on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 10 GB, end-to-end encrypted backups, on-device face grouping and AI search, album sharing and public links, 1 replica, 100 items in Locker. |
| Starter | $2.99 | $2.49 | 50 GB, family sharing for up to 5 people, human support, 3 replicas, 1,000 items in Locker. |
| Popular | $5.99 | $4.99 | 200 GB, same features as Starter. |
| Pro | $11.99 | $9.99 | 1,000 GB, same features. |
| Pro+ | $23.99 | $19.99 | 2,000 GB, same features; for more, the page says to write to support. |
Free gives 10 GB with end-to-end encryption, backups, album sharing and public links.
Not really. People want Google Photos' convenience without handing the pictures to an ad company. Ente supplies the phone apps, the family plan and the encryption without a server to run, and its reviews praise how fast the team answers support mail. The prompt on this page builds the closest honest substitute.
About $2.99 a month on the Starter (50 GB) plan, $35.88 a year (checked 2026-10-19).
Automatic background upload from your iPhone or Android phone; Sharing: albums, public links and a family plan for up to five people; On-device face grouping and natural-language photo search; Replication across three storage locations that Ente runs for you; Memories, hidden photos and legacy contacts for passing the account on. If any of those matter to you, keep paying.
Yes: Immich (open source), Ente (self-hosted) (open source), PhotoPrism (open source).