rodboev/fotobank

A photo system of record for people and agents. Preserve originals and edits, organize your library, and automate photo workflows. Built on Docbank.

★ 0Forks 0GitHub ↗Compare

Project website ↗

README

Fotobank

Fotobank is a photo system of record for you and your agents, built on Docbank.

Fotobank is a self-hosted photo library. It keeps your original files and every later version, keeps related files together, and lets you browse and organize through a web app, the command line, or an agent.

Fotobank is pre-alpha software, with no stability guarantees. Expect bugs and changing interfaces and schemas. Start with copies of a small collection, keep independent originals, and test recovery separately.

Build from source · 0.1.0 changelog · Set up with an agent · How it works · Website

Fotobank's library displaying a sample landscape collection

The running app with a sample library. View full size. Photos from Unsplash; image credits.

Why another photo application?

Fotobank is not trying to match Immich feature for feature. It asks what should hold your photographic record when both people and agents work with it.

One photograph may have a camera RAW, a JPEG, an XMP sidecar, and several edits. Fotobank keeps those files related without treating them as interchangeable. An album records a choice you made; a generated caption is a model's interpretation. Neither replaces the original.

Editors get ordinary working files. Agents get documented operations and inspectable results. Changes return as explicit new versions, not silent replacements of the archive. Your record should outlast any editor, model, or interface you use with it.

What you can do today

  • Import photos, videos, RAW files, and sidecars without modifying the source. Keep related files together and detect duplicate content.
  • Browse photos, inspect details, organize albums, and manage privacy. Sharing with another person requires external identity and broker setup; the default single-user configuration does not publish shares remotely. See sharing setup and limits.
  • Edit selected files through checkouts: ordinary working copies whose tracked edits you explicitly commit as new versions.
  • Search metadata without AI. Configure providers for optional tagging, captioning, and semantic search. Read the AI guide for consent, costs, privacy, and stopping processing.
  • Use the CLI and documented HTTP API to find photos, download verified originals and attachments, and manage albums without opening the database.
  • Create complete recovery archives, schedule backups with retention, and test a restore into separate storage.

Check file and preview support before a large import. Storing an original does not guarantee a thumbnail or browser playback.

Try a first library

The setup guide explains how to build the 0.1.0 source tag, configure storage, and start the server. Local folders under your own OS account are enough; you do not need a NAS, a separate Docbank server, or user registration.

After setup, use the same configuration and OS account for these commands:

fotobank daemon start                 # prints the web UI URL
fotobank import /path/to/sample-photos
fotobank media list --limit 5 --json
fotobank media search "sunset" --json

Then create a backup and test recovery. If an agent is doing the setup, follow the setup and handoff procedure. The command reference covers structured results, pagination, and limits.

Built on Docbank

Docbank runs inside Fotobank as a Go library. It stores exact content and immutable versions, and supplies source metadata and standard image previews.

Fotobank owns the photo catalog: file relationships, albums, privacy, sharing, browsing, and working copies. Each file points to an exact Docbank version. Recovery archives capture both systems' records because albums and file relationships cannot be rebuilt from the original bytes alone. See how storage and editing work or the architecture map.

Related projects

Fotobank is one of several Kenn projects for keeping personal data in software you run yourself. Docbank stores files. msgvault (source) stores messages. Each one has commands and an API so your tools and agents can use it.

Optional AI and search currently run in Fotobank. Some of that may move into Docbank later. People grouping, MCP integration, and other AI features are not built. Fotobank has no autonomous assistant. AI is disabled by default. Hidden-media access controls do not encrypt files, and enabling AI requires acknowledging its hidden-media processing policy.

Development

make test             # Go tests with the sqlite_fts5 tag
make test-short       # Short Go tests
make frontend-check   # Svelte checks and frontend unit tests
make test-e2e         # Playwright e2e suite
make lint             # Go lint and testify helper checks
make api-generate     # Regenerate OpenAPI and TypeScript schema
make docs-check       # Build the site and check links

License

Copyright 2026 Kenn Software LLC. Licensed under the Apache License 2.0. See LICENSE and NOTICE.

Contributors

wesmmariusvniekerk

Issues