photoprism

module
v0.0.0-...-8713e6b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 10, 2026 License: AGPL-3.0

README

PhotoPrism: Browse Your Life in Pictures

Documentation Community Chat GitHub Discussions Bluesky Social Mastodon

PhotoPrism® is an AI-Powered Photos App for the Decentralized Web. It makes use of the latest technologies to tag and find pictures automatically without getting in your way. You can run it at home, on a private server, or in the cloud.

To get a first impression, you are welcome to play with our public demo. Please be careful not to upload any private, unlawful or offensive pictures.

Feature Overview

Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible. That's why PhotoPrism was built from the ground up to run wherever you need it, without compromising freedom, privacy, or functionality:

Being completely self-funded and independent, we can promise you that we will never sell your data and that we will always be transparent about our software and services. Your data will never be shared with Google, Amazon, Microsoft or Apple unless you intentionally upload files to one of their services. 🔒

Getting Started

Step-by-step installation instructions for our self-hosted community edition can be found on docs.photoprism.app - all you need is a Web browser and Docker to run the server. It is available for Mac, Linux, and Windows.

The stable releases and development preview are available as a multi-arch image for 64-bit AMD, Intel, and ARM processors. That means, Raspberry Pi and Apple Silicon users enjoy the exact same functionality and can follow the same installation steps.

See our Getting Started FAQ for alternative installation methods, for example using the tar.gz packages we provide.

Support Our Mission 💎

PhotoPrism is 100% self-funded and independent. Your continued support helps us provide more features to the public, release regular updates, and remain independent!

Our members enjoy additional features, including access to interactive world maps, and can join our private chat room to connect with our team. We currently have the following membership options:

  • You can sign up directly on our website and pay with credit card or SEPA through Stripe, so you don't need to link an external account and can easily upgrade or downgrade at any time
  • Alternatively, Patreon also supports PayPal, additional currencies, and lets you choose between monthly and annual billing for all tiers

If you currently support us through GitHub Sponsors, you can also register on our website and use the Activate GitHub Sponsors Membership button to link your account. For details on this and how to link your Patreon account, see our Activation Guide.

You are welcome to contact us for change requests, membership questions, and business partnerships.

View Membership FAQ ›Sign Up ›

Why Your Support Matters
  • Your continued support helps us provide regular updates and remain independent, so we can fulfill our mission and protect your privacy
  • Sustained funding is key to quickly releasing new features requested by you and other community members
  • Being self-funded and independent, we can personally promise you that we will never sell your data and that we will always be transparent about our software and services

Please also leave a star on GitHub if you like this project. It provides additional motivation to keep going.

A big thank you to all current and past sponsors, whose generous support has been and continues to be essential to the success of the project!

View Sponsors ›View Credits ›

Getting Support

Visit docs.photoprism.app/user-guide to learn how to sync, organize, and share your pictures. If you need help installing our software at home, you are welcome to post your question in GitHub Discussions or ask in our Community Chat. Common problems can be quickly diagnosed and solved using our Troubleshooting Checklists. Eligible members are also welcome to email us for technical support and advice.

Upcoming Features and Enhancements

Our Project Roadmap shows what tasks are in progress and what features will be implemented next. You are invited to give ideas you like a thumbs-up, so we know what's most popular.

Be aware that we have a zero-bug policy and do our best to help users when they need support or have other questions. This comes at a price though, as we can't give exact release dates for new features. Our team receives many more requests than can be implemented, so we want to emphasize that we are in no way obligated to implement the features, enhancements, or other changes you request. We do, however, appreciate your feedback and carefully consider all requests.

Because sustained funding is key to quickly releasing new features, we encourage you to support our mission by signing up for a personal membership or purchasing a commercial license.

Become a Member ›

GitHub Issues ⚠️

We kindly ask you not to report bugs via GitHub Issues unless you are certain to have found a fully reproducible and previously unreported issue that must be fixed directly in the app. Thank you for your careful consideration!

Connect with the Community

Follow us on Mastodon, Bluesky, or join the Community Chat to get regular updates, connect with other users, and discuss your ideas. Our Code of Conduct explains the "dos and don’ts" when interacting with other community members.

As a contributor, you are also welcome to contact us directly if you have something on your mind that you don't want to discuss publicly. Please note, however, that due to the high volume of emails we receive, our team may be unable to get back to you immediately. We do our best to respond within five business days or less.

Every Contribution Makes a Difference

We welcome contributions of any kind, including blog posts, tutorials, translations, testing, writing documentation, and pull requests. Our Developer Guide contains all the information necessary for you to get started.


PhotoPrism® is a registered trademark. By using the software and services we provide, you agree to our Terms of Service, Privacy Policy, and Code of Conduct. Docs are available under the CC BY-NC-SA 4.0 License; additional terms may apply.

Directories

Path Synopsis
cmd
photoprism command
internal
ai/classify
Package classify encapsulates image classification using TensorFlow.
Package classify encapsulates image classification using TensorFlow.
ai/face
Package face provides face recognition.
Package face provides face recognition.
ai/nsfw
Package nsfw provides detection of images that are "not safe for work" based on various categories.
Package nsfw provides detection of images that are "not safe for work" based on various categories.
ai/tensorflow
Package tensorflow provides TensorFlow utility functions.
Package tensorflow provides TensorFlow utility functions.
ai/vision
Package vision provides a computer vision request handler and a client for using external APIs.
Package vision provides a computer vision request handler and a client for using external APIs.
ai/vision/ollama
Package ollama integrates PhotoPrism's vision pipeline with Ollama-compatible multi-modal models so adapters can share logging and engine helpers.
Package ollama integrates PhotoPrism's vision pipeline with Ollama-compatible multi-modal models so adapters can share logging and engine helpers.
ai/vision/openai
Package openai implements the PhotoPrism vision adapter that calls the OpenAI Responses API for captions, labels, and optional markers.
Package openai implements the PhotoPrism vision adapter that calls the OpenAI Responses API for captions, labels, and optional markers.
ai/vision/schema
Package schema defines canonical JSON and JSON Schema templates shared by PhotoPrism's AI vision engines.
Package schema defines canonical JSON and JSON Schema templates shared by PhotoPrism's AI vision engines.
api
Package api provides REST-API authentication and request handlers.
Package api provides REST-API authentication and request handlers.
api/download
Package download allows to register files so that they can be temporarily made available for download.
Package download allows to register files so that they can be temporarily made available for download.
auth/acl
Package acl provides access control lists for authorization checks.
Package acl provides access control lists for authorization checks.
auth/jwt
Package jwt provides helpers for managing Ed25519 signing keys and issuing or verifying short-lived JWTs used for secure communication between the Portal and cluster instances and services.
Package jwt provides helpers for managing Ed25519 signing keys and issuing or verifying short-lived JWTs used for secure communication between the Portal and cluster instances and services.
auth/oidc
Package oidc provides OpenID Connect (OIDC) single sign-on functionality.
Package oidc provides OpenID Connect (OIDC) single sign-on functionality.
auth/session
Package session provides session storage and management.
Package session provides session storage and management.
commands
Package commands provides the CLI commands of PhotoPrism.
Package commands provides the CLI commands of PhotoPrism.
commands/catalog
Package catalog provides DTOs, builders, and a templated renderer to export the PhotoPrism CLI command tree (and flags) as Markdown or JSON for documentation purposes.
Package catalog provides DTOs, builders, and a templated renderer to export the PhotoPrism CLI command tree (and flags) as Markdown or JSON for documentation purposes.
config
Package config provides global options, command-line flags, and user settings.
Package config provides global options, command-line flags, and user settings.
config/customize
Package customize provides user settings to customize the app.
Package customize provides user settings to customize the app.
config/feat
Package feat centralizes feature flag definitions that gate PhotoPrism configuration experiments and in-progress integrations.
Package feat centralizes feature flag definitions that gate PhotoPrism configuration experiments and in-progress integrations.
config/pwa
Package pwa provides data structures and tools for working with progressive web applications.
Package pwa provides data structures and tools for working with progressive web applications.
config/ttl
Package ttl provides cache expiration defaults and helper functions.
Package ttl provides cache expiration defaults and helper functions.
entity
Package entity provides entity models based on the GORM library.
Package entity provides entity models based on the GORM library.
entity/legacy
Package legacy provides legacy entity models to be used in migrations.
Package legacy provides legacy entity models to be used in migrations.
entity/migrate
Package migrate provides database schema migrations.
Package migrate provides database schema migrations.
entity/query
Package query provides frequently used database queries for use in commands and API.
Package query provides frequently used database queries for use in commands and API.
entity/search
Package search provides search queries to find photos, albums, labels, and subjects.
Package search provides search queries to find photos, albums, labels, and subjects.
entity/search/viewer
Package viewer provides photo viewer data structures and utility functions.
Package viewer provides photo viewer data structures and utility functions.
entity/sortby
Package sortby provides sort order constants and helper functions.
Package sortby provides sort order constants and helper functions.
event
Package event provides a publish-subscribe event hub and a global logger.
Package event provides a publish-subscribe event hub and a global logger.
ffmpeg
Package ffmpeg provides FFmpeg video transcoding related types and functions.
Package ffmpeg provides FFmpeg video transcoding related types and functions.
ffmpeg/apple
Package apple contains helper routines and constants for wiring up Apple VideoToolbox (VT) encoder support in ffmpeg command generation.
Package apple contains helper routines and constants for wiring up Apple VideoToolbox (VT) encoder support in ffmpeg command generation.
ffmpeg/encode
Package encode provides FFmpeg video encoder related types and functions.
Package encode provides FFmpeg video encoder related types and functions.
ffmpeg/intel
Package intel collects ffmpeg helpers for configuring Intel Quick Sync Video (QSV) encoders when building PhotoPrism transcoding pipelines.
Package intel collects ffmpeg helpers for configuring Intel Quick Sync Video (QSV) encoders when building PhotoPrism transcoding pipelines.
ffmpeg/nvidia
Package nvidia provides ffmpeg helpers for NVENC/NVDEC integration so PhotoPrism can leverage NVIDIA GPUs for hardware-accelerated workflows.
Package nvidia provides ffmpeg helpers for NVENC/NVDEC integration so PhotoPrism can leverage NVIDIA GPUs for hardware-accelerated workflows.
ffmpeg/v4l
Package v4l wraps ffmpeg command helpers for Video4Linux (V4L2) devices used on Linux systems when capturing or transcoding with hardware-backed codecs.
Package v4l wraps ffmpeg command helpers for Video4Linux (V4L2) devices used on Linux systems when capturing or transcoding with hardware-backed codecs.
ffmpeg/vaapi
Package vaapi contains ffmpeg helpers for configuring VA-API hardware acceleration on compatible GPUs when building PhotoPrism encode pipelines.
Package vaapi contains ffmpeg helpers for configuring VA-API hardware acceleration on compatible GPUs when building PhotoPrism encode pipelines.
form
Package form contains tagged structs for input value validation.
Package form contains tagged structs for input value validation.
mcp
Package mcp implements the PhotoPrism Model Context Protocol (MCP) server, which exposes read-only reference data (config options and search filters) to MCP-aware clients over both stdio and authenticated Streamable HTTP.
Package mcp implements the PhotoPrism Model Context Protocol (MCP) server, which exposes read-only reference data (config options and search filters) to MCP-aware clients over both stdio and authenticated Streamable HTTP.
meta
Package meta provides XMP and Exif metadata parsing and normalization.
Package meta provides XMP and Exif metadata parsing and normalization.
mutex
Package mutex provides concurrency control for index workers and database operations.
Package mutex provides concurrency control for index workers and database operations.
photoprism
Package photoprism provides the core functionality of PhotoPrism®.
Package photoprism provides the core functionality of PhotoPrism®.
photoprism/backup
Package backup provides backup and restore functions for databases and albums.
Package backup provides backup and restore functions for databases and albums.
photoprism/batch
Package batch coordinates PhotoPrism’s multi-photo edit workflow by defining the PhotosForm schema, helper types for expressing add/remove actions, and the validation / persistence helpers (ApplyAlbums, ApplyLabels, SavePhotos, etc.) that the API layer uses to safely mutate selections of photos at once.
Package batch coordinates PhotoPrism’s multi-photo edit workflow by defining the PhotosForm schema, helper types for expressing add/remove actions, and the validation / persistence helpers (ApplyAlbums, ApplyLabels, SavePhotos, etc.) that the API layer uses to safely mutate selections of photos at once.
photoprism/dl
Package dl provides helpers to discover media metadata and download content from remote sources via yt-dlp.
Package dl provides helpers to discover media metadata and download content from remote sources via yt-dlp.
photoprism/get
Package get provides a registry for common services.
Package get provides a registry for common services.
server
Package server provides REST and Web server routing, request handling and logging.
Package server provides REST and Web server routing, request handling and logging.
server/limiter
Package limiter provides an IP request rate limiter with Gin middleware.
Package limiter provides an IP request rate limiter with Gin middleware.
server/process
Package process provides server process information and handling.
Package process provides server process information and handling.
server/wellknown
Package wellknown provides data types and abstractions for service discovery endpoints.
Package wellknown provides data types and abstractions for service discovery endpoints.
service
Package service provides detection of remote services for file sharing and synchronization.
Package service provides detection of remote services for file sharing and synchronization.
service/cluster
Package cluster provides multi-instance deployment and orchestration functionality.
Package cluster provides multi-instance deployment and orchestration functionality.
service/cluster/node
Package node bootstraps a PhotoPrism node (instance or service) that joins a cluster Portal.
Package node bootstraps a PhotoPrism node (instance or service) that joins a cluster Portal.
service/cluster/provisioner
Package provisioner manages per-instance database provisioning for cluster setups.
Package provisioner manages per-instance database provisioning for cluster setups.
service/cluster/registry
Package registry defines and implements the cluster node registry abstraction.
Package registry defines and implements the cluster node registry abstraction.
service/cluster/theme
Package theme contains helpers shared by cluster services to inspect bundled portal themes, for example detecting their version or validating required assets.
Package theme contains helpers shared by cluster services to inspect bundled portal themes, for example detecting their version or validating required assets.
service/hub
Package hub provides privacy-preserving reverse geocoding and other backend services.
Package hub provides privacy-preserving reverse geocoding and other backend services.
service/hub/places
Package places provides global location information to enrich metadata with location details.
Package places provides global location information to enrich metadata with location details.
service/maps
Package maps provides a location lookup abstraction including a normalized list of countries.
Package maps provides a location lookup abstraction including a normalized list of countries.
service/webdav
Package webdav provides WebDAV file sharing and synchronization.
Package webdav provides WebDAV file sharing and synchronization.
thumb
Package thumb provides JPEG resampling and thumbnail generation.
Package thumb provides JPEG resampling and thumbnail generation.
thumb/avatar
Package avatar provides helper functions to download and update avatar images.
Package avatar provides helper functions to download and update avatar images.
thumb/crop
Package crop provides image crop data structures and helpers.
Package crop provides image crop data structures and helpers.
thumb/frame
Package frame provides helper functions to embed images into frames.
Package frame provides helper functions to embed images into frames.
workers
Package workers provides index, sync, and metadata optimization background workers.
Package workers provides index, sync, and metadata optimization background workers.
workers/auto
Package auto provides workers for background indexing and import operations.
Package auto provides workers for background indexing and import operations.
pkg
authn
Package authn helps integrate and abstract authentication providers.
Package authn helps integrate and abstract authentication providers.
capture
Package capture provides profiling functions for testing and debugging.
Package capture provides profiling functions for testing and debugging.
checksum
Package checksum provides functions and abstractions to generate data checksums.
Package checksum provides functions and abstractions to generate data checksums.
clean
Package clean provides validation, sanitation, and normalization of input values.
Package clean provides validation, sanitation, and normalization of input values.
dsn
Package dsn provides helpers for parsing database data source names, masking credentials, and sharing driver-specific defaults used throughout PhotoPrism.
Package dsn provides helpers for parsing database data source names, masking credentials, and sharing driver-specific defaults used throughout PhotoPrism.
enum
Package enum centralizes canonical string constants and lookup tables that we use when interpreting enumerations throughout PhotoPrism.
Package enum centralizes canonical string constants and lookup tables that we use when interpreting enumerations throughout PhotoPrism.
env
Package env provides runtime environment information.
Package env provides runtime environment information.
fs
Package fs provides filesystem related constants and functions.
Package fs provides filesystem related constants and functions.
fs/duf
Package duf provides file system usage information.
Package duf provides file system usage information.
fs/fastwalk
Package fastwalk provides a faster version of filepath.Walk for file system scanning tools.
Package fastwalk provides a faster version of filepath.Walk for file system scanning tools.
geo
Package geo provides earth geometry functions and constants.
Package geo provides earth geometry functions and constants.
geo/latlng
Package latlng provides latitude and longitude functions and constants.
Package latlng provides latitude and longitude functions and constants.
geo/pluscode
Package pluscode provides an abstraction for Google's Open Location Code package.
Package pluscode provides an abstraction for Google's Open Location Code package.
geo/s2
Package s2 provides a geolocation abstraction based on Google's S2 library.
Package s2 provides a geolocation abstraction based on Google's S2 library.
http/dns
Package dns provides helpers for validating and classifying hostnames that are safe to use in cluster URLs, node identifiers, and other HTTP-facing settings.
Package dns provides helpers for validating and classifying hostnames that are safe to use in cluster URLs, node identifiers, and other HTTP-facing settings.
http/header
Package header provides abstractions and naming constants for HTTP request and response headers.
Package header provides abstractions and naming constants for HTTP request and response headers.
http/proxy
Package proxy provides shared defaults and helpers for path-based HTTP proxy routing.
Package proxy provides shared defaults and helpers for path-based HTTP proxy routing.
http/safe
Package safe provides a secure HTTP downloader with customizable settings.
Package safe provides a secure HTTP downloader with customizable settings.
http/scheme
Package scheme provides abstractions and naming constants for URI/URL resource strings.
Package scheme provides abstractions and naming constants for URI/URL resource strings.
http/security
Package security provides shared HTTP security utilities.
Package security provides shared HTTP security utilities.
i18n
Package i18n provides translatable notification and error messages.
Package i18n provides translatable notification and error messages.
list
Package list provides a string slice abstraction.
Package list provides a string slice abstraction.
list/ordered
Package ordered implements ordered associative containers that combine constant time key lookups with predictable iteration by pairing a Go map with an intrusive doubly linked list.
Package ordered implements ordered associative containers that combine constant time key lookups with predictable iteration by pairing a Go map with an intrusive doubly linked list.
log/dummy
Package dummy provides dummy implementations for logger interfaces.
Package dummy provides dummy implementations for logger interfaces.
log/level
Package level provides constants and abstractions for log levels and severities.
Package level provides constants and abstractions for log levels and severities.
log/status
Package status defines canonical outcome tokens shared by audit and system logging helpers so events stay consistent across packages.
Package status defines canonical outcome tokens shared by audit and system logging helpers so events stay consistent across packages.
media
Package media provides general content types and maps them to file formats.
Package media provides general content types and maps them to file formats.
media/colors
Package colors provides types and functions for color classification.
Package colors provides types and functions for color classification.
media/projection
Package projection provides visual projection types and methods.
Package projection provides visual projection types and methods.
media/video
Package video provides video file related types and abstractions.
Package video provides video file related types and abstractions.
react
Package react facilitates the processing of user feedback expressed by an emoji.
Package react facilitates the processing of user feedback expressed by an emoji.
rnd
Package rnd provides random token generation and validation.
Package rnd provides random token generation and validation.
time/tz
Package tz provides time zone constants and functions.
Package tz provides time zone constants and functions.
time/unix
Package unix provides constants and functions for Unix timestamps.
Package unix provides constants and functions for Unix timestamps.
txt
Package txt provides text and linguistics related functionality.
Package txt provides text and linguistics related functionality.
txt/clip
Package clip provides functions for limiting the length of character strings.
Package clip provides functions for limiting the length of character strings.
txt/report
Package report provides rendering of report results, for example as Markdown.
Package report provides rendering of report results, for example as Markdown.
vector/alg
Package clusters provides abstract definitions of clusterers as well as their implementations.
Package clusters provides abstract definitions of clusterers as well as their implementations.
scripts

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL