← Back to archive

Repo of the Day

darktable-org/darktable

Published: Feb 16, 2026

Open repository ↗

darktable is an open source photography workflow application and raw developer

Summary

darktable is an open source, non-destructive raw photography workflow application written in C that manages digital negatives in a SQLite database and provides a virtual lighttable and darkroom for photographers. It handles raw image development, enhancement, and export, plus Lua-based extensibility for plugins.

What it is useful for

darktable is aimed at photographers who want to organize, view, and process raw camera files without proprietary software. Its non-destructive editing pipeline stores history in a SQLite library database plus optional XMP sidecars, so engineers can inspect how edits are tracked and replayed across sessions.

The C codebase is also a reference implementation of several things engineers commonly build:

  • A multi-threaded, OpenCL/GPU-accelerated image processing pipeline
  • Raw decoder integration through the RawSpeed submodule and LibRaw
  • A Lua scripting host for plugins that add HDR merging, focus bracketing, GPS data management, AI-based facial recognition, and custom export targets
  • Optional AI inference for object masks, denoise, and upscale, accelerated on NVIDIA, AMD, Intel, and Apple Silicon GPUs through CUDA, ROCm, OpenVINO, DirectML, or CoreML

Documented limitations to plan for include: 32-bit systems are not officially supported, big-endian platforms are not supported, printing is not implemented on Windows, and the README notes that some AMD drivers behave unreliably with certain modules such as local contrast.

How engineers can use it

Engineers using it as end users can grab a pre-built Windows installer, a macOS Apple Silicon disk image, or a Linux AppImage, Flatpak, or native packages; the documented stable release is 5.6.2.

To build from source on Linux or macOS, the README documents:

./build.sh --prefix /opt/darktable --build-type Release --install --sudo

The project also supports manual cmake builds into a build/ directory. Submodules (RawSpeed, LibRaw, OpenCL headers, libxcf, whereami) must be initialized with git submodule update --init. Required dependencies include CMake 3.18, GTK 3.24.15, GLib 2.56, libcurl 7.56, Exiv2 0.27.4, Lensfun, and SQLite 3.26; optional ones include OpenCL 1.2, Lua 5.4, libavif, libjxl, WebP, and ONNX Runtime 1.18.

To run an unstable build alongside a stable install, the README documents launching with a separate config directory:

/opt/darktable-test/bin/darktable --configdir "~/.config/darktable-test"

AI features require building with -DUSE_AI=ON or ./build.sh --enable-ai, and GPU acceleration needs a separately installed ONNX Runtime build for the target backend. Configuration lives under ~/.config/darktable, and the user manual and Lua API reference are maintained in the separate dtdocs and luadocs repositories.