CASE / 02READING TIME · 3 MIN

INGEST.STUDIO

Self-hosted media asset management — your originals stay yours.

STATUS
EARLY PHASE 1
PERIOD
2025 — NOW
ROLE
DESIGN · ENGINEERING
DOMAIN
ingest.studio
01 / THE PROBLEM

Between Lightroom Cloud and a tangle of shared drives.

Photo and video professionals are stuck between two unappealing options. Cloud platforms (Lightroom Cloud, Pixieset, SmugMug) are convenient, but you don’t own the infrastructure, you pay forever, and migration is painful. Local catalogs (Lightroom Classic, Photo Mechanic) are fast and offline, but built for a single user — anything collaborative ends in Dropbox, FTP, or a tangle of shared drives.

Ingest Studio sits between the two: a self-hosted server that gives a small team the convenience of a shared cloud, with the ownership and longevity of local storage. Your originals stay yours. No subscription. No upload limits. The server runs on a Mac mini, a NAS, or a Linux box in the studio — anyone connects over LAN or VPN.

  • CONTENT-ADDRESSED STORAGE (SHA-256)
  • DUPLICATE DETECTION ON IMPORT
  • XMP-COMPATIBLE NON-DESTRUCTIVE EDITS
  • GIT-INSPIRED BRANCH-PER-USER
  • CLIP VISUAL SIMILARITY SEARCH
  • LIGHTROOM BRIDGE
  • CUSTOMER GALLERIES (URL TOKENS)
  • MULTI-DEVICE HANDOFF
02 / OPEN CORE

Solo is free. Pro pays for the team features.

SOLO
INGEST SOLO
MIT licensed · single-user · standalone
  • ─ Asset management + duplicate detection
  • ─ Non-destructive XMP editing
  • ─ Smart browsing & CLIP search
  • ─ Versioning + release workflow
  • ─ Lightroom bridge
  • ─ Local & remote backups
PRO
INGEST PRO
Commercial license · per server instance
  • ─ Multi-user + role-based access
  • ─ Branch & release workflow
  • ─ Multi-device handoff
  • ─ Customer galleries (URL tokens, watermarks)
  • ─ Public portfolio on custom domain
  • ─ Cloud backup (B2, Hetzner SBX, any S3)

Pro is gated by an MSBuild property (IncludePro=true) and discovered through an IIngestModule interface. Solo must remain functional standalone — no Pro reference can leak into the open-source build.

03 / ARCHITECTURE

Four components. One boundary.

Server, sync daemon, CLI, desktop app. They communicate only through the server’s REST API — nothing else talks to Postgres, nothing shares filesystem state. Originals are content-addressed by SHA-256 and immutable after import. ML inference (CLIP via ONNX Runtime) runs in the .NET server process; no separate Python worker. Embeddings live in pgvector.

01
SERVER

.NET 10 / ASP.NET Core. REST API, Postgres, content-addressed storage. Background work (scan, thumbs, ML embeddings) runs in-process.

02
SYNC DAEMON

.NET Worker Service per editor machine. Watches XMP sidecars and translates Lightroom ↔ server. REST only.

03
CLI

.NET global tool `ingest`. Shares core libraries with the daemon. Power-user surface.

04
DESKTOP

Tauri v2 shell + React/Vite UI. The primary interface. REST only — never touches Postgres directly.

04 / STACK

What it’s built with.

SERVER.NET 10 · ASP.NET CORE · BACKGROUND WORKERS
DATABASEPOSTGRESQL 17 · PGVECTOR · PG_TRGM · FTS
STORAGECONTENT-ADDRESSED FS · IASSETSTORAGE ABSTRACTION (FUTURE S3)
DESKTOPTAURI V2 · REACT · TYPESCRIPT · VITE · TANSTACK QUERY
SYNC DAEMON.NET 10 WORKER SERVICE (PER DEVICE)
CLI.NET GLOBAL TOOL — `ingest`
MEDIAEXIFTOOL · FFMPEG · FFPROBE (BUNDLED)
MLONNX RUNTIME · CLIP EMBEDDINGS · IN-PROCESS
DISCOVERYMDNS — _INGEST._TCP.LOCAL
DISTRIBUTIONDOCKER COMPOSE · NATIVE INSTALLERS (.PKG/.DEB) · SOURCE BUILD
MARKETING SITENEXT.JS 16 · TAILWIND V4 · ACETERNITY UI
LICENSEMIT (OPEN CORE)
05 / ROADMAP
  1. 01PHASE 1 — FOUNDATION · SERVER SKELETON, REST API, AUTH, LICENSE LAYER● IN PROGRESS
  2. 02PHASE 2 — ASSET MANAGEMENT · IMPORT, CAS STORAGE, SCANNER, DUPLICATES
  3. 03PHASE 3 — VERSIONING · BRANCH-PER-USER, SNAPSHOTS, RELEASES
  4. 04PHASE 4 — SYNC & CLI · DAEMON, WORKING-COPY, CLI TOOL
  5. 05PHASE 5 — DESKTOP APP · TAURI SHELL, BROWSING, EDITING
  6. 06PHASE 6 — GALLERIES & PORTFOLIO · PUBLIC WEB FRONTENDS
  7. 07PHASE 7 — DISTRIBUTION · DOCKER BUNDLE, INSTALLERS, MDNS, SETUP WIZARD
NEXT CASE

LOCANA

← BACK TO INDEX© 2026 MANUEL YATES