Open source · MIT · v0.1

The RAW editor your AI agent can drive.

OpenLight Studio is a non-destructive RAW processor and photo catalog with a built-in MCP server. Edit by hand, ask in plain words, or let Claude cull and grade a whole shoot — every change stays undoable.

Tauri v2 · Rust · React 19 · SQLite · rawler

Intro

A full darkroom that speaks MCP.

OpenLight Studio catalogs, culls and develops your photos where they already live — folders, NAS shares, cloud buckets, Immich and Google Photos — without ever touching the originals.

One Rust pipeline in linear Rec.2020 float renders the viewport, the MCP previews and the full-resolution export, so an agent sees exactly what you see. Every agent call is one undoable history step, logged in the photo's provenance.

🛡️

Non-destructive

Edits live in the catalog and an .olxmp sidecar. Originals are never overwritten.

🏠

Local-first

SQLite catalog on your disk. MCP listens on loopback only, behind a bearer token.

🤖

Agent-ready

Claude, Antigravity, Ollama, LM Studio, OpenAI, Gemini — pick a provider, or plug in a CLI.

🔓

Open source

MIT licensed. Read the code, file an issue, ship a pull request.

0MCP tools
0Auto functions
0Source types
0AI providers

Features

Everything from import to export.

Lightroom-class develop panels, Photoshop's everyday adjustments, and automation that runs on one photo or the whole catalog.

🗂️

Your photos, wherever they live

No import step. Add a folder, a network share or a cloud account and browse it in place. Immich albums page in 250 at a time; ratings and flags sync both ways. Duplicate copies between any two sources with SHA-256 verification.

  • Folders
  • SMB · AFP · NFS · WebDAV
  • S3 · B2 · R2 · Wasabi · MinIO
  • Dropbox
  • OneDrive
  • Immich
  • Google Photos
🎚️

Develop

White balance, tone, presence, parametric and point curves, 8-band colour mixer, Point Color, 3-way grading, detail, vignette, crop & straighten.

✦

AI Select & Remove

"Select the castle" traces an edge-snapped mask. "Remove the people" heals each outline from a matching nearby area. Or press S and click.

🎭

Masks

Linear, radial, luminance, colour range and AI outlines with add / subtract / intersect, feather and edge shift. Every panel tunes inside a mask.

📐

Advanced optics

Upright Auto / Level / Vertical / Full / Guided, lens distortion, auto chromatic aberration, defringe, calibration, grain, soft proofing.

⚡

Six Auto functions

Run on a selection, the current view or the whole catalog — cancellable, with results you can act on and Show in Library.

  • Catalog & Culling
  • Non-destructive Editing
  • AI Masking
  • Denoise & Super Resolution
  • Find blurred subjects
  • Find duplicates
🧪

Pro tab

Levels, Hue/Saturation with Colorize, Selective Color, Channel Mixer, Gradient Map, blur, posterize, threshold — as adjustment layers on any selection.

🔌

Built-in MCP server

Streamable HTTP on 127.0.0.1:41920 or stdio. Tools for query, culling, develop, masks, retouch, export and inspection.

📤

Export & upload

JPEG, AVIF, 16-bit PNG/TIFF in sRGB, Display P3 or Adobe RGB with ICC; Rec.2020 PQ HDR. Upload straight to Immich, Google Photos or cloud.

Supported storage & cloud services

Connect every drive, bucket and photo library.

Browse local folders and NAS shares in place, sync cloud folders on demand, and connect self-hosted or consumer photo libraries — without locking your RAW files into a proprietary vault.

Zero-Import Browsing OS Keychain Secrets SHA-256 Verified Copy
🖧

Local & Network (NAS)

Edited in place · live status dot
  • Local Folders & SSDsIn-place
  • SMB Network Sharessmb://
  • Apple Filing Protocolafp://
  • Unix NFS Mountsnfs://
  • WebDAV Network Driveshttps://
🏠

Self-Hosted & WebDAV

App passwords · folder sync & export
  • Immich Server2-way sync · stacks
  • NextcloudWebDAV
  • ownCloudWebDAV
  • Synology NASWebDAV HTTPS
  • pCloud & KoofrUS / EU WebDAV
🪣

S3 Object Storage

AWS SigV4 · read, sync & upload
  • Amazon S3Standard / IA
  • Cloudflare R2Zero egress
  • Backblaze B2S3-compatible
  • Wasabi Hot CloudS3-compatible
  • MinIO ServerSelf-hosted S3
☁️

Cloud & Photo Services

OAuth 2.0 PKCE · native libraries
  • DropboxOAuth PKCE
  • Microsoft OneDriveEntra OAuth
  • Google PhotosPicker API + Upload
  • Apple iCloud PhotosLibrary & Sync
  • Amazon & Adobe CloudRAW & CC Sync
🔒 Credentials stay in your OS keychain: API keys, WebDAV passwords, S3 secret keys and OAuth refresh tokens are stored in macOS Keychain, Windows Credential Manager or Linux Secret Service — never in settings.json. 🔁 Cross-source Duplicate: Copy or back up between any two sources with SHA-256 verification.

Feature demos

Try it right here.

Interactive browser re-creations of the app's main workflows, running on real CC0 landscape and portrait photographs.

DEVELOP · ADJUST

Sliders, profiles and one-click Auto

Drag the sliders, apply a profile, or switch between the Landscape and Portrait sample photos. ✦ Auto measures white balance and tone on the photo, then applies the profile's look. Applying a profile twice changes nothing; your other edits stay.

In the app, every change is a history step — ⌘Z to undo, \ for before/after, ⌘⇧C / V to copy and paste settings.

Eilean Donan · Highlands RAW
BEFORE / AFTER

See exactly what changed

Drag the handle across the portrait or landscape shot. The same Rust pipeline renders the viewport, the thumbnails, the MCP previews and the export — what you compare is what you ship.

Geometry is applied last in one resample, so masks, removals and guides stay pinned to the content.

Natural Light Portrait · 32-bit Rec.2020
Before (RAW)After (Graded)
✦ SELECT · S

Click an object, get a mask

Click the castle, mountains, sky or lake in the landscape — or switch to the portrait and click the face, hair or foliage. In the app, the selected AI provider sees the photo with your click marked, traces the object, and snaps the outline to the photo's edges.

Each object becomes its own entry in Selections. While one is selected, every Develop panel tunes only inside it. ⌥-click subtracts; Esc goes back to the whole photo.

Click: castle · mountains · sky · lake
Click the castle, mountains, sky or lake
Selections (0)
AUTO · CATALOG & CULLING

Cull a shoot in seconds

Measures sharpness on the main subject, clipping, noise and colour. Groups bursts by time and perceptual hash and picks the best of each, rejects blurred or blown-out frames, rates the rest 1–5 stars and adds keywords.

Turn on Auto Catalog & Culling of new photos and it runs in the background whenever a folder, drive or album gets new files.

12 photos selected

MCP · AGENTS

Hand the whole shoot to an agent

Connect Claude Code (or any MCP client) in one command. The agent queries the catalog, culls, develops, masks and exports through the same tools you use — and the open Develop view updates live.

Every mutating call is one undoable step, recorded in the photo's ai_provenance_log.

claude — openlight

      

Detailed usage

From first launch to first export.

A walkthrough of the everyday workflow. The full reference lives in the README and the guide/ folder.

Install & run

Download a release for your platform, or build from source with Node 20+ and stable Rust.

npm install
npm run tauri dev

The catalog lives in ~/Library/Application Support/org.openlight.studio/. Set OPENLIGHT_DATA_DIR to use another folder. Release build: npm run tauri build.

Add your sources

The Library sidebar groups sources under Library, Folders and Cloud & services. Press + on a group to add one. There is no import step — opening a source picks up new files.

  • Folder: + › Folder… — photos stay where they are.
  • Network drive: smb://nas.local/photos, afp://, nfs:// or https:// (WebDAV). A dot shows if it is connected.
  • Cloud storage: WebDAV, S3-compatible, Dropbox or OneDrive in Settings › Locations. Keys go to the OS keychain, never settings.json.
  • Immich: server URL + an API key. Google Photos: Pick photos… through the Picker API.
openlight-studio --import ~/Pictures/Iceland   # headless, recursive

Cull

Select photos, open Auto › Catalog & Culling on the Library's right bar and press Run. Review the results list, then filter by rating, flag, label or keyword. Use Find blurred subjects and Find duplicates to clean up further. Open a photo full-size in the viewer with ← → to step through.

Develop

Open a photo in Develop. The right panel has five tabs:

  • Adjust — Basic, curves, colour mixer, Point Color, grading, detail, effects.
  • Selections — your masks. Select one and every panel tunes inside it; Done or Esc returns.
  • Advanced — lens corrections, Transform/Upright, calibration, noise, grain, spot removal (Q), soft proofing.
  • Pro — Levels, Hue/Sat, Selective Color, Channel Mixer, Gradient Map, filters, rotation.
  • Auto — ✦ Auto, profiles, one-at-a-time autos, auto rotate, auto select & remove.

Ask the AI

Pick a provider in Settings › AI & MCP (API keys go to the keychain, or read from ANTHROPIC_API_KEY, GEMINI_API_KEY, OPENAI_API_KEY, OPENROUTER_API_KEY). Then type in the ✦ AI bar:

select the castle and warm it up a little
remove the people on the left
make it moody, keep the sky detail

Or press S and click objects. ✦ AI fine tune levels a tilted horizon first, then tunes the look.

Export

Choose JPEG, AVIF, 16-bit PNG/TIFF, colour space (sRGB, Display P3, Adobe RGB) and destination: a folder, Upload to Immich, Upload to Google Photos or a cloud account. Exports carry the capture date, so uploads land on the right day. Save to Immich stacks the edit on the original.

Connect an agent

The AI & MCP tab shows the bearer token and copy-ready configs. The green MCP dot in the title bar means the server is running.

claude mcp add --transport http openlight http://127.0.0.1:41920/mcp \
  --header "Authorization: Bearer <token>"

Or over stdio — it forwards to the running app, or edits the catalog headless when the app is closed:

openlight-studio --mcp-stdio

Develop shortcuts

KeyAction
S✦ Select tool (click to trace an object)
QSpot removal
RCrop
JClipping warning
OMask overlay
\Before / after
[ ]Rotate 90°
Z / FZoom 2× / fit
+ −Zoom in / out
⌘Z · ⌘⇧ZUndo · redo
⌘⇧C / VCopy / paste settings
EscLeave tool or selection

MCP tools

ToolDoes
catalog_queryFind photos by folder, rating, flag, keyword
culling_batch_updateRatings, flags, labels, keywords
develop_apply_parametersAny Develop / Advanced / Pro value
develop_autoAuto to a profile
auto_runAny of the six Auto functions
mask_create_and_editCreate and tune selections
retouch_remove_objectsHeal outlines away
ai_reconstruct_and_retouchDenoise, super resolution
batch_exportRender and save / upload
photo_inspectPreview, histogram, telemetry

Promo guideline

How to show OpenLight to the world.

A small press kit: brand, voice, the screens to capture, ready-made formats and copy, and a launch checklist.

1 · Brand

Two interlocking rings — cyan for the light you capture, amber for the light you shape. Keep the icon on dark or neutral backgrounds, with clear space of at least a quarter of its width.

Logo

OpenLight icon on dark
OpenLight icon on light
OpenLight icon on brand gradient

Download icon.png (512 × 512). Full set in src-tauri/icons/.

Type & name

Write OpenLight Studio — one word "OpenLight", capital L. Short form: OpenLight. Never "Open Light" or "Openlight".

Headlines in a system sans (SF Pro, Segoe UI, Inter) at bold weight, tight tracking. Code, tool names and shortcuts in a monospace.

Aa OpenLight auto_run()

Light Cyan#25C6D8

Shape Amber#F6B930

AI Violet#A78BFA

Studio Dark#161616

UI Accent#0EA5E9

Click a swatch to copy its hex. Violet is reserved for anything AI (✦).

2 · Voice & taglines

Plain, concrete, confident. Say what the feature does, not how revolutionary it is. Show the agent working rather than claiming "AI-powered".

The RAW editor your AI agent can drive.
Edit by hand. Ask in plain words. Undo either.
Your photos stay where they are. Your originals stay untouched.
A full darkroom that speaks MCP.
Open source RAW editing, culling and cataloging — local-first, MIT.

3 · The six screens to capture

Shoot at 2880 × 1800 (Retina 1440 × 900 window), Studio Dark theme, a real catalog of a few hundred of your own photos, no personal paths or tokens visible. Hide the dock and menu bar extras.

01

Library grid

Sidebar with Folders, a NAS drive (green dot) and Immich connected. Stars, picks and colour labels visible on the grid.

Hero · App Store · README
02

Develop · Adjust

A strong landscape mid-edit, histogram and Basic panel visible, before/after split at 50%.

Feature · social
03

✦ AI Select

The AI bar with a prompt like "select the castle", the traced outline and the Selections tab listing it.

The money shot · every channel
04

Auto · Culling results

Right panel mid-run with the progress bar, results list on the left showing picks and rejects.

Feature · blog
05
› cull the Iceland shoot
⏺ auto_run(catalog_culling)
✓ 486 photos · 61 picks
⏺ develop_auto(Landscape)
✓ 61 edited

Agent side-by-side

Terminal with Claude Code on the left, the app on the right updating live as tools are called.

Video · launch post
06

Advanced · Upright

A tilted architecture shot with Guided Upright lines drawn, then the corrected result.

Pro audience · forums

4 · Formats

One idea per image: a single screen, one headline of six words or fewer, the logo. Keep text out of the outer 10% so platforms don't crop it.

OpenLight Studio

The RAW editor your AI agent can drive.

1200 × 630 · Open Graph, X, LinkedIn, HN

OpenLight

Click the castle. Get a mask.

1080 × 1080 · Instagram, Mastodon

OpenLight

Cull 486 photos in one prompt.

1080 × 1920 · Stories, Reels, Shorts

5 · Ready-to-post copy

Pair each with screen 03 or a 20–40 s screen recording of the agent demo.

X / Bluesky / Threads

OpenLight Studio is an open-source RAW editor with a built-in MCP server. Connect Claude, then: "cull the Iceland shoot, grade the picks for landscape, export for Immich." Every step is undoable. MIT · macOS / Windows / Linux github.com/rcwkan/openlight-studio

Show HN

Show HN: OpenLight Studio – an open-source RAW editor that AI agents can drive over MCP Tauri + Rust, one linear Rec.2020 pipeline for viewport, previews and export, so the agent sees exactly what you see. Folders, NAS, S3, Immich and Google Photos browsed in place. Non-destructive, local-first, MIT.

Reddit · r/photography, r/selfhosted

I built a free, open-source Lightroom-style editor that works with Immich in place: ratings sync both ways, edits save as a stack on top of the original, and an Auto function culls a whole album (sharpness on the subject, bursts, exposure). Feedback welcome.

Hashtags, sparingly: #photography #RAW #opensource #MCP #selfhosted #Immich

6 · Do & don't

Do

  • Show real, unretouched app UI and real photos you own.
  • Show the before, the prompt and the after together.
  • Name what is local: the catalog, the MCP server, the keys.
  • Credit the stack: Tauri, Rust, rawler.
  • Link to the repo and the README.

Don't

  • Mock up features from the README's "Not yet" list (generative fill, face detection, CLIP search).
  • Show tokens, API keys, home paths or someone else's photos.
  • Use other products' logos or call it a Lightroom "replacement".
  • Stretch, recolour or add effects to the icon.
  • Claim speed numbers you haven't measured.

7 · Launch checklist

Bring your photos. Bring your agent.

Free and open source under the MIT License.

Copied