跪拜 Guibai
← All articles
Frontend · Backend · Open Source

SpektraLab Puts a Virtual Darkroom on Your Mac, and Agents Can Run the Enlarger

By Moment ·
Read original on juejin.cn ↗ Google Translate ↗ Alt translation

Photo post-processing now has an open, scriptable entry point that goes beyond single LUTs: a full film-emulation pipeline with an agent interface can be wired into automation workflows, batch operations, and personal AI tooling. The Mac-only, free, open-source nature makes it a practical playground for developers who want to experiment with MCP-driven creative tools.

Summary

SpektraLab models a full analog darkroom pipeline: a digital photo goes through film exposure and development, then printing, then scan output. The underlying film model comes from the open-source spektrafilm project, which computes spectral response, dye density, grain, and halation. SpektraLab implements that model in C++ and Metal, so the Mac app renders entirely on the GPU with no Python runtime required.

The interface makes the workflow visual-first: every film option shows a live preview of the current photo, and users pick a film and a paper separately (reversal film skips the paper step). The result is a way to taste-test combinations without learning curves or color wheels first. The app supports RAW and JPEG input, exports JPEG, PNG, and TIFF, and lets users save presets or copy settings across photos.

On the automation side, SpektraLab exposes a set of MCP tools that let external agents query the library, import photos, set star ratings and color labels, change film/paper/exposure settings, and batch-export using saved recipes. The exposed controls are limited to film, paper, and exposure; white balance, curves, and HSL remain outside the tool interface, and no preview images are provided, so agents cannot yet judge aesthetics themselves.

Takeaways
— SpektraLab is free and open source, with a Mac native app built on C++ and Metal rendering (no Python runtime).
— Its film model derives from the open-source spektrafilm project, which simulates spectral response, dye density, grain, and halation.
— The workflow separates film stock and photo paper choices; reversal film does not require a paper selection.
— Users preview each film option on the current photo before committing, reducing the need to understand parameters upfront.
— MCP tools allow external agents to query libraries, import photos, set stars and labels, view films/papers, modify film/paper/exposure, and batch export via saved recipes.
— The current MCP interface does not expose white balance, curves, HSL, or photo previews, so agent-based aesthetic judgment is not yet possible.
— Supports RAW and JPEG input, with JPEG, PNG, and TIFF export; RAW compatibility varies by camera model and system decoding.
— The project includes a Chinese user guide and a public GitHub repository at JamesQiu2005/SpektraLab.
Conclusions

Separating film and paper selection mirrors real analog workflows and gives users more expressive control than typical one-click presets, which is why the same photo can look radically different across combinations.

The deliberate narrowing of MCP tools to film, paper, and exposure suggests the project treats agents as automation for repetitive tasks, not as creative decision-makers; aesthetic judgment still belongs to humans.

Simulating film through spectral computation and dye-density modeling is fundamentally different from applying a color lookup table, which is why exposure and white balance changes in the original photo significantly alter the final result.

Concepts & terms
MCP (Model Context Protocol)
An open protocol that lets AI agents discover and call external tools through a standardized interface, enabling agents to perform actions beyond text generation—here, operating a photo library and processing pipeline.
Digital intermediate (DI)
A post-production step in filmmaking where color and grading are adjusted digitally; in SpektraLab it refers to a configurable stage that sits between the film/paper simulation and the final output.
From the discussion
Featured comments
A1J30

Why doesn't it support macOS 14?

See top comments, translated →
Source: juejin.cn ↗ Google Translate ↗ Backup ↗