Skip to content
Redlamp
The Redlamp app icon: a glowing ruby safelight lens in a steel bezel

Pre-alpha 0.2.1 · macOS 26

Lightroom's workflow.
Native to your Mac. Open source.

Redlamp is a RAW photo editor built from scratch in Swift and Metal for Apple Silicon. It keeps the panels, sliders and shortcuts you already know, renders every change within a frame, and never touches your originals.

statuspre-alphalicenseMPL-2.0open sourceyespricefree, no subscriptionAIon-deviceruns onmacOS 26 · Apple Siliconbuilt withSwift · MetalsupportKo-fi
Redlamp editing a Sony α7R V raw file of a dancer at a street parade, with the Develop panels on the right
Editing a Sony α7R V raw file.

Why Redlamp

A red lamp is the darkroom safelight: the one light you can work by without fogging the paper.
You can see and shape your photo freely, and the original is never harmed.

Lightroom defined how millions of photographers edit, but it's a cross-platform application that doesn't feel at home on a Mac, and it's tied to a subscription and a cloud.

Redlamp keeps the workflow photographers already know, including the panel layout, slider names and ranges, and keyboard shortcuts, and rebuilds everything underneath as a native, GPU-first, open-source application.

Redlamp is an editor, not a catalog. It opens folders of photos and keeps your edits in small sidecar files right next to them.

01

Instantly familiar

Lightroom's panels, slider names, ranges and shortcuts. Conventions copied, never Adobe's assets.

02

Masks from day one

Every edit is a layer with a mask, combined by add, subtract and intersect, with on-device AI masks to come.

03

Native, neutral UI

macOS 26 design, Liquid Glass only on floating chrome, and neutral grey wherever you judge colour.

04

Under 16 ms

Rendering and UI are strictly separated. The UI never waits on the engine, the disk or the GPU.

05

Serious colour

Scene-referred and linear, with camera profiles, LUTs and looks fitted by measurement.

06

Computational photography

Best-in-class denoise, one-click focus stacking, and AI only where it clearly wins, on the device.

07

Mac first

One platform-neutral engine. The Mac editor comes first; iPad and iPhone follow from the same engine.

08

Open source

MPL-2.0, compatible with the App Store, with algorithms implemented clean-room from papers.

Command palette

Find anything, then adjust it without leaving the keyboard.

⌘K opens one search for every action, every Develop slider and every picker. Choosing a slider or a picker doesn't close the palette: it turns into that control, over the photo.
  1. The command palette searching for “white”: the White Balance and Treatment pickers, the Temp, Tint, Whites and Saturation sliders with their values, and actions with their shortcuts

    1Search everything

    ⌘K

    Every action with its shortcut beside it, every slider, and pickers for white balance, treatment, Base Looks, recipes, Before / After, snapshots and history. ⌘F searches the sliders alone.

  2. The palette shrunk to a slider bar for Exposure at +0.50 over the photo, with its keys beside the track and in a hint bar

    2Adjust from the keyboard

    ↵← →↑ ↓

    ↵ on a slider shrinks the palette to a slider bar over the photo. ← → step it, ⇧ ten times as far and ⌥ finer, ↑ ↓ move to the next slider, and a run of presses is one history step.

  3. The Base Look picker with Redlamp Monochrome highlighted and previewing on the photo, which shows in black and white

    3Preview before you apply

    ↑ ↓↵Esc

    Moving through a picker previews each choice on the photo. ↵ applies the choice, and Esc goes back one level.

  4. The palette with “temp 5600k” typed, offering to set Temp from 5000 to 5600

    4Type the value

    ↵

    A name and a value, such as exposure 0.7 or temp 5600k, sets the slider straight from the search. In the slider bar, type a value or x+0.3.

A hint bar always shows the keys that work right now, and each opening shows a tip.

What works today

A complete Develop module, built for Apple Silicon.

The core RAW pipeline and the Develop workspace work today on macOS 26. Every screenshot here is the app itself, on CC0 sample raws.

Develop

Lightroom's workflow, at home on the Mac.

The Develop module's layout, panel order, slider names, ranges and defaults, and single-key shortcuts all carry over, so there's nothing to relearn. Everything underneath is rebuilt as a native, GPU-first app.

  • Basic, Tone Curve, Color Mixer, Color Grading, Detail and Effects
  • Lightroom Classic's shortcuts: 80 actions on 84 key bindings
  • Find an adjustment (⌘F) by name, or by the words people use
  • Before and after in three layouts, cached so edits never re-render it
Before and after, side by side, on a Nikon Z 6 raw file
Before and after on a Nikon Z 6 NEF: Exposure, Highlights, Shadows, Dehaze, Clarity and Vibrance.

Responsiveness

Every slider lands within a frame.

One fused Metal kernel applies every adjustment, frames arrive as IOSurfaces without a copy, and rendering never waits on the main thread. Drag a slider and the photo keeps up.

  • Interactive renders at Fit in 0.6 to 3 ms on Apple Silicon
  • A full 26 MP frame at 1:1 in about 13 ms
  • Latest-wins scheduling: a burst of slider events collapses to the newest
  • A full mip pyramid, so every zoom level samples the right resolution
A Fujifilm X-T3 X-Trans raw file at 100%, with the Color Mixer in HSL mode
A Fujifilm X-T3 X-Trans RAF at 1:1, rendered in about 13 ms.

Masking

Masks are part of the architecture, not an afterthought.

Every edit is a layer: its own adjustments plus a mask built from components that add, subtract and intersect, exactly as in Lightroom. Masks are evaluated per pixel inside the same GPU kernel, so 16 of them cost well under a millisecond.

  • Linear and radial gradients, drawn and adjusted on the photo
  • 15 local adjustments, including Texture, Clarity and Dehaze
  • A red mask overlay, and a full mask list
  • Brush, colour range and on-device AI masks are next
Masking on a Sony A7 III raw file, with the red mask overlay over the sky
A linear gradient darkens and cools the sky; a feathered radial gradient warms the trees.

Colour

Serious colour science, scene-referred from the start.

The pipeline is linear and scene-referred, with a proper camera white-balance model. The Color Mixer works in OKLCh, so hues move the way your eye expects, and some looks are measured against cameras' own renderings.

  • Temperature and Tint with Robertson's method and the camera's matrix
  • 3-way and individual colour-grading wheels, with Blending and Balance
  • Parametric and point tone curves
  • Measured looks: Standard v3 sits within ΔE 3.26 of the camera's Provia
Colour grading a Canon EOS R6 raw file with the 3-way wheels
Split-toned shadows and highlights on a Canon EOS R6 CR3.

Detail

Noise reduction that knows your camera's noise.

Noise reduction scales to each photo's own noise, read from the DNG or measured from the raw data when it opens. Sharpening measures detail on a denoised copy, so grain passes through untouched instead of being sharpened.

  • Luminance and Color noise reduction with Lightroom's controls
  • Noise-aware sharpening, from unsharp mask towards deconvolution
  • Texture, Clarity and Dehaze, globally and inside masks
  • Highlight reconstruction rebuilds clipped photosites
A Canon EOS R6 raw file at 100% with the Detail panel open
Detail at 1:1 on a Canon EOS R6 CR3.

Recipes

Presets, profiles and LUTs, finally in one place.

A Recipe is anything that gives a photo a look. One open format holds presets, profiles (a recipe's Base Look) and LUTs, and you can type in a Fujifilm-style camera recipe card exactly as it's written.

  • 39 bundled recipes in eight groups, with hover to preview
  • Import and export .redrecipe, .cube and HaldCLUT
  • Camera controls: Dynamic Range, Color Chrome and white-balance shift
  • The Recipe Lab checks every look across a 40-image set
A camera recipe applied to a Fujifilm X-T3 raw file
Chrome Street, built from a Fujifilm-style recipe card, on the measured Chrome Base Look.

Our own RAW pipeline

Your originals are never touched.

LibRaw only unpacks the file. Black levels, white balance, demosaicing and colour all happen in Redlamp, on the GPU. Edits are saved to a small sidecar next to each photo, and the original stays exactly as you shot it.

  • Menon demosaic for Bayer sensors, and X-Trans support
  • Hot-pixel repair, banding correction and DNG gain maps
  • Sony ARW, Canon CR3, Nikon NEF, Fujifilm RAF, Apple ProRAW and Pixel DNG
  • Plus JPEG, HEIC, TIFF and PNG
An iPhone 12 Pro ProRAW file in portrait orientation
iPhone 12 Pro ProRAW, with highlight recovery and blues tuned in the Color Mixer.

Focus stacking

Focus stacking in one click, and it still develops like a raw.

Redlamp spots a focus bracket in your folder and offers to merge it. Frames are stacked as demosaiced camera RGB before any edit, so every Develop slider still works on the result, and you can retouch from any frame.

  • Stacks are detected for you, with a Merge banner
  • Auto, Smooth and Detail strategies, and a depth map
  • 25 Canon CR3 frames merge in about 8 seconds
to open a 24–26 MP raw file
70–250 ms
to open a 24–26 MP raw file
per interactive render at Fit
0.6–3 ms
per interactive render at Fit
for a full 26 MP frame at 1:1
~13 ms
for a full 26 MP frame at 1:1
for a full-resolution export render
~45 ms
for a full-resolution export render

Measured on an Apple M1 Ultra with a Release build.

Everything that works today

From the README, last updated 2 October 2026.

RAW pipeline (our own, GPU-first)13 items
  • Decodes RAW files through LibRaw (unpacking only). Black levels, white balance, demosaicing, and color are all done by Redlamp on the GPU.
  • Bayer demosaic by directional filtering with a posteriori decision (Menon, Andriani and Calvagno, 2007), with a dual pass that takes plain green where the neighbours differ only by noise, a first-generation X-Trans demosaic, and linear DNG support (for example iPhone ProRAW).
  • Hot pixels are repaired before demosaicing, judged against each photo's own noise level.
  • Row and column banding is measured in the sensor's masked (optical-black) margins and subtracted with the black level, only where the margins show more than their own noise.
  • DNG gain maps (OpcodeList2), such as phones' lens shading correction, are applied before demosaicing, and noise reduction scales with the noise they amplify.
  • Highlight reconstruction: channels are no longer clipped at 1 after white balance, and photosites that did clip are rebuilt from their bright unclipped neighbours, using the colour measured around the clipped area. Fully blown areas stay neutral.
  • Tested on Sony ARW, Canon CR3, Nikon NEF, Fujifilm RAF (X-Trans), Apple ProRAW DNG and Google Pixel DNG, plus JPEG, HEIC, TIFF, and PNG.
  • The demosaiced image is cached as a full mip pyramid, so interactive renders sample the right resolution for the zoom level.
  • A single fused Metal kernel applies every per-pixel adjustment. Frames are delivered as IOSurfaces, so pixels are never copied between engine and UI.
  • Latest-wins render scheduling: a burst of slider events collapses to the newest one. Stills wait in two lanes, previews (look thumbnails) ahead of exports, and yield to the canvas between tiles, so an export never holds up a frame by more than a tile; a cancelled still stops at its next tile, and exports rest between tiles when the Mac runs hot.
  • Rendering stays off the main thread while you drag a slider. Frames go straight to the canvas, which a dedicated display-link thread presents, and each view observes only the values it shows.
  • Both side panels are AppKit: the histogram, tool strip and every Develop and Masking panel on the right, and the Navigator, Recipes, Snapshots and History on the left, built from the same panel component. The right column's panels match their SwiftUI originals pixel for pixel, and a component harness is used to build and review them (see Component harness).
  • Temperature and tint use a proper camera white-balance model (Robertson's method with the camera's color matrix). As Shot, Auto, and the illuminant presets all work.
Develop adjustments that render11 items
  • White balance: Temp and Tint, the presets, Auto, and the eyedropper.
  • Basic: Exposure, Contrast, Highlights, Shadows, Whites, Blacks, Vibrance, and Saturation, plus the Auto button.
  • Treatment (Color or B&W) and Base Looks (Lightroom's profiles) with an Amount slider (0–200) and a browser that renders every look on the photo. There are six built-in looks (Redlamp Color, Neutral, Vivid, Landscape, Portrait and Monochrome) and 15 film-style looks built on 3D look tables: slide, chrome, negative, cinema, bleach and black and white through color filters. Four of them are measured from cameras' own renderings by the look profiler (see Recipes and looks).
  • Tone Curve: a parametric curve with split points, and a point curve with presets.
  • Color Mixer: HSL (Hue, Saturation, Luminance, and All) and a per-color mode, working in OKLCh.
  • Color Grading: 3-way and individual wheels, Blending, and Balance. It also tints B&W images for split-toning.
  • Effects: post-crop vignette (amount, midpoint, roundness, feather, and Highlights to keep bright areas bright under a darkening vignette) and zoom-stable film grain.
  • Noise reduction (Detail panel): Luminance with Detail and Contrast, and Color with Detail and Smoothness. It is scaled to each photo's own noise: the DNG NoiseProfile tag, else its camera's calibrated profile at its ISO, else measured from the raw data when the file opens (a raw far cleaner than its camera's profile has had noise reduction in camera, so the measurement wins). Luminance keeps fine texture: wavelet shrinkage judges each detail by its neighbourhood, and at 1:1 and in exports a non-local-means pass guided by that result brings back texture where the photo repeats it. It runs as a cached stage in front of the fused kernel, so other sliders stay as fast as before, and exports render in tiles.
  • Sharpening (Detail panel): Amount, Radius, Detail and Masking, in the same cached stage after noise reduction. It is noise-aware: detail is measured on a denoised copy of the luminance and applied to the untouched image, so the photo's noise and grain pass through as they were instead of being sharpened. Detail moves from a halo-limited unsharp mask towards Richardson–Lucy deconvolution of the Radius's blur, and holds back halos on strong edges; Masking keeps flat areas untouched. It boosts luminance detail in stops, so it doesn't depend on exposure and leaves colors alone.
  • Texture and Clarity (global): gains on medium (about 2–8 px) and larger (about 8–64 px) luminance detail, taken from the image pyramid in the same cached stage, so tiles and zoom levels agree. Negative values soften. For new edits (process version 9) Clarity is edge-aware: a strong edge isn't its detail, so it puts no bright and dark bands along a skyline or around a tree.
  • Dehaze (global and in masks): the dark channel prior (He, Sun and Tang, 2009) with the airlight and a haze map measured when the photo opens; negative values add a neutral veil. For new edits (process version 8) the haze map follows the photo's edges, so the sky beside a tree or a ridge has no pale glow.
Masking (Lightroom's model)12 items
  • Each mask is a layer: its own adjustments plus a mask built from components. Components combine with Add, Subtract, and Intersect, and each can be inverted.
  • Linear and radial gradient components. Draw them on the photo. Drag the handles to move, resize, and rotate; radial gradients also have a Feather control. Pins select the other masks.
  • Brush (K): A and B brushes and Erase (hold Option), with Size, Feather, Flow, Density and Auto Mask, and pen pressure. Strokes are kept as vectors in the edit and painted on the GPU in mask space (up to 4096 px), redrawing only the stroke being painted. [ and ] change the size, with Shift the feather.
  • Luminance Range (⇧Q) and Color Range (⇧J): sample with the eyedropper, then shape the range with four handles (Show Luminance Map) or Refine up to five color samples. They select on the photo with its global edit, so the selection follows white balance and exposure.
  • AI masks: Subject, Background, People (each person, or parts: face skin, eyebrows, eye sclera, iris, lips, teeth, and hair from iPhone mattes) and Sky, with Apple Vision's built-in models and nothing to download. Objects: hover to preview, click to select, click again to add and Option-click to take away (Segment Anything 2.1, an 80 MB download on first use). Depth Range: from a photo's own depth map (iPhone), or estimated by Depth Anything 3 (or V2 Small). Landscape (water, vegetation, mountains, architecture, natural and artificial ground): SAM 3, converted to Core ML (a 988 MB download, under Meta's SAM License, which comes with it); the same model adds hair on any photo, facial hair, body skin and clothes to People. Sky is Segment Anything prompted inside a classical sky estimate, combined with Depth Anything 3 (converted to Core ML, a 336 MB download) once it is downloaded; then every edge pixel is solved at full size against the sky's own colour, so twigs, leaf gaps and wires keep their own coverage. Subject, Background, People and Objects edges are solved per pixel too (closed-form matting), which brings back stray hairs and beard curls (see the bake-off).
  • AI masks are computed from the photo without its edit and kept as bitmaps in the edit, so they never move when you edit and render the same everywhere. Update AI Masks recomputes them with today's models, pasted settings recompute them for the new photo, Refine Edges snaps them harder to the photo, and the Refine Edge Brush solves an edge again, hair by hair, wherever you paint over it (kept with the mask, so Update AI Masks applies it again).
  • Mask presets: Blue Sky, Brighten Subject, Darken Background, Smooth Skin, Whiten Teeth and Pop Eyes compute their masks for each photo; save your own from any mask.
  • Beyond Lightroom: a mask's Detail keeps only its textured (or only its flat) areas, and any mask can be reused as a component of another (Existing Mask in Add, Subtract and Intersect).
  • Local adjustments: Temp, Tint, Exposure, Contrast, Highlights, Shadows, Whites, Blacks, Texture, Clarity, Dehaze, Hue, Saturation, Sharpness, and Noise, plus the mask's Amount (0–200%).
  • Mask management: a mask overlay (O) in Lightroom's modes (Color Overlay, on B&W, Image on Black or White, B&W) and colors, and a mask list where you can show and hide, rename, duplicate, "duplicate and invert", reset, and delete masks.
  • Fast by design: gradients and ranges are evaluated per pixel inside the same fused GPU kernel, and brush and AI masks are read from GPU textures. Up to 16 masks cost well under a millisecond extra at Fit.
  • Models on demand: Settings › Models lists the downloadable models with their size, and removes them. Every model runs on the Mac; photos are never uploaded. Each shows its licence, which comes with the download. Models still under licence review are offered only when you turn on evaluation models.
Focus stacking (a separate Stack workspace)6 items
  • Stacks are found for you: runs of frames with the same camera settings a moment apart, whose sharp region moves from frame to frame, get a "Focus stack detected: N frames" banner with Merge, and the filmstrip slides up for a few seconds to show it. Bursts, time-lapses and pans aren't offered. Photo › Merge to Focus Stack… and Edit Focus Stack…, also in the command palette, open the Stack workspace from the menus.
  • The result develops like a raw. Frames are stacked as demosaiced camera RGB before any edit, so every Develop slider, white balance included, works on it. The stack is a small .redlampstack document beside the frames; the merged pixels are cached and rebuilt when needed.
  • Alignment follows focus breathing, rotation and shift, brightness is matched frame to frame, and a depth map records which frame is sharpest where.
  • Auto, Smooth and Detail: Auto takes tone and color from the depth map and fine detail from the sharpest frames near it; Smooth blends between frames for clean surfaces; Detail keeps the sharpest detail from anywhere, for hair and bristles.
  • The Stack workspace: leave frames out, switch methods (each merge is cached), view the depth map, and retouch by painting the frame under the cursor, a chosen frame or another method's result over the merge.
  • One frame is in memory at a time, and redlamp stack does the same from the command line.
Workspace19 items
  • A Lightroom-style layout. On the left: Navigator, Folders, Recipes, Snapshots, and History, as collapsible panels like the Develop panels. In the center: the photo, with the filmstrip below. On the right: histogram, tool strip, and the Develop panels in Lightroom's order.
  • Folders, as in Lightroom Classic: add folders with +, ⌘O or by dropping them on the window, and they're remembered (by bookmark, so a folder that's renamed or moved is followed). Each shows as a tree with the number of photos in every folder; click one to show it in the filmstrip, or turn on Show Photos in Subfolders (View menu or the folder's context menu) to see everything beneath it. Nothing on disk is moved or changed. The filmstrip follows the disk by itself: photos copied in, deleted, renamed or rewritten appear, leave or update in place, a photo still being copied waits until it's complete, and the selection moves to the next photo when its own is deleted. A folder on a disk that isn't connected is dimmed with a question mark, Locate… points it at where it went, and it comes back when the disk does. Each folder reopens on the photo you last had in it.
  • Built to stay fast with any number of photos: a folder lists without reading a single sidecar (badges follow from light reads, visible photos first); thumbnails decode in parallel on every core at the cell's size, from the smallest preview the raw file embeds that's big enough (found by LibRaw; 3 to 11 times faster than ImageIO's full-size one for Sony, Canon and Nikon files), are kept within a 128 MB budget in memory and cached on disk in one file per folder (at most 1 GB), and are warmed in the background while you're not waiting; the filmstrip is AppKit with reused cells, so 50,000 photos cost what a screenful does. Focus stacks are looked for one folder at a time in the background, and remembered. See Measured performance and the design.
  • Sliders: click to jump, drag to adjust, Shift-drag for fine control, double-click to reset, and click the value to type one in. Option-dragging a tone slider shows clipping, as in Lightroom.
  • Panels: double-click a panel or group title to reset it, and Option-click a header for Solo Mode. The left column's panels collapse the same way when you click their headers, and Option-click shows only one.
  • Histogram: clipping indicators, and you can drag across it to adjust Blacks, Shadows, Exposure, Highlights, or Whites.
  • Recipes (Lightroom's presets, profiles and LUTs, in one): 39 bundled recipes in eight groups, including camera-style ones built from Fujifilm-style recipe cards. Hover to preview, click to apply, then adjust the recipe's Amount. You can search (Lightroom's words work), mark favorites, save the current edit as a recipe with a settings checklist (⇧⌘N), and import or export .redrecipe, .cube, .3dl and HaldCLUT files (LUTs made for camera log footage too, with their input space chosen on import, in the panel and the Recipe Lab). Lightroom develop presets (.xmp) import too, one, several or a folder at a time, by the menu or by dropping them on the panel, with a report of what came across exactly, approximately or not at all (what maps). Snapshots are also available.
  • History with full undo and redo. Each step shows an icon for what it did, and the value before and after ("Exposure 0.00 → +0.50"). Every time you open a photo a new session starts. The earlier sessions are kept with the photo (the last 20) and listed under the current one, and choosing one of their steps brings that edit back as a new step.
  • Camera-recipe controls in the Effects panel: Dynamic Range, Color Chrome, Chrome FX Blue, and red and blue white-balance shift.
  • Viewing: Fit, Fill, 1:1, and 2:1 zoom, click to zoom, pan, pinch, and a clipping overlay. Sensor clipping (⌥J) marks the photosites the camera clipped, in the colour of each clipped channel (black where all three did), whatever the edit has done since; the colour-assessment view (⇧L) puts the photo on middle grey inside a white frame (ISO 12646). Before/After (\) in three layouts, full frame, side by side and a diagonal split, cycled with Y and ⇧Y; the original is rendered once and cached, so edits don't re-render it.
  • Themes: Neutral greys by default, so nothing tints your judgment of color, plus a Redlamp theme and 20 dark and light families with a tint control, from the toolbar's Theme button or Settings (⌘,), which also has an About tab. The command palette follows the app's theme or takes one of its own.
  • Lightroom Classic's keyboard shortcuts: 83 actions on 87 key bindings, from one registry that also drives the menus and an in-app ⌘/ reference (see Keyboard shortcuts).
  • Command palette (⌘K): every action, with its shortcut shown beside it, every Develop slider, and pickers for white balance, treatment, Base Looks, recipes, Before / After, snapshots and history, all from the keyboard. ↵ on a slider shrinks the palette to a slider bar over the photo: ← → step it (⇧ ×10, ⌥ finer), ↑ ↓ move to the next slider, and you can type a value or x+0.3. A run of presses is one history step. Typing a name and a value, such as exposure 0.7 or temp 5600k, sets it straight from the search. Moving through a picker previews each choice on the photo; Esc goes back one level. A hint bar always shows the keys that work right now, and each opening shows a tip. ⌘F opens it for sliders only, searching by name or the words people use (Lightroom's older names too).
  • Sliders by hand: ⌘-scroll over any slider adjusts it (Shift coarse, Option fine), and value fields accept arithmetic such as x+10.
  • Culling while you develop: star ratings, pick/reject flags and color labels, shown on the filmstrip. There's also an Info overlay (I), Lights Out (L), full-screen preview (F), and Paste from Previous (⌥⌘V and the Previous button).
  • Copy, paste and sync settings, as Lightroom does: Copy Settings… (⇧⌘C) opens a checklist of every setting and mask, remembered for next time; Paste (⇧⌘V) applies what was ticked, and recomputes the pasted AI masks for the photo. ⌘- and ⇧-click select several photos in the filmstrip: Sync… (⇧⌘S) and Paste reach all of them in the background, with Undo, and Auto Sync (⌥⇧⌘A) repeats every change.
  • Non-destructive edits, saved automatically to a sidecar file next to each photo (IMG_1234.ARW.redlamp).
  • Export dialog (⇧⌘E): JPEG, HEIC and AVIF (lossy, with quality and an optional file size limit) or PNG and TIFF (lossless, with TIFF compression), 8, 10 or 16 bits, sRGB or Display P3. Resize by long edge, short edge, width and height, megapixels or percentage, keep all metadata, all but the location, or none, and choose the folder and file name. Built-in and saved presets, and Export with Previous (⌥⇧⌘E) repeats the last export without the dialog.
  • A headless redlamp command-line tool for rendering and export. Exports smaller than the photo are developed at full resolution and downscaled last, so sharpening, noise reduction and texture look the same at every size.

Film simulations

Eleven film stocks, simulated from their datasheets.

Most film presets are tuned by eye. Redlamp's are physical simulations, built from each manufacturer's own characteristic curves, spectral sensitivities and dye spectra, with the film's grain, halation and bloom.
  1. 1Each colour becomes a spectrum.
  2. 2The film's three layers record it through their own sensitivities.
  3. 3Characteristic curves turn exposure into dye, with interlayer effects and colour masking.
  4. 4A negative is printed or scanned the way a lab would; a slide is lit on a light box.
  5. 5The result is seen through the colour-matching functions of human vision.
The Film Looks window: the open photo in every film, with Portra 400 applied
Window ▸ Film Looks shows the open photo in every film. Hover to preview; click to apply with its grain, halation and bloom.

Colour negative, ISO 400

Colour negative, ISO 100

Colour negative, ISO 200

Colour negative, ISO 400

Tungsten colour negative, ISO 800

Cinema negative on print film, ISO 500

Slide film, ISO 100

Slide film, ISO 50

Black and white negative, ISO 400

Black and white negative, ISO 400

Black and white print

How faithful are they?

  • The colour comes from the datasheets: each stock's own curves, sensitivities and dyes, keeping their published order of contrast and grain.
  • A lab's scan or print timing shapes the rest. The Frontier-like and Noritsu-like scanner profiles are characterised from how labs describe them, not measured.
  • Some data is borrowed or uncertain: Portra, Ektar, Gold and Superia borrow Vision3's dye curves, and the 2383 sensitivity curve is the least certain trace.
  • Grain doesn't yet vary with density, and is sized in pixels rather than relative to the frame.
Every film look on the same photo, with the original first
Every look on one photo, the original first.

Kodak, Portra, Ektar, Gold, Vision3, Tri-X, Fujifilm, Superia, Provia, Velvia, Ilford, HP5, Multigrade and CineStill are trademarks of their owners. Redlamp isn't affiliated with them: its looks are built from the published technical data.

Roadmap

Mac first, then iPad and iPhone from the same engine.

Phases 1 to 4 build a high-quality editor and engine on macOS; iPad and iPhone follow in Phase 5. This roadmap is read from the README every time the site is built.

Phase 0

Foundations

largely done
6 of 8
  • mise and Tuist workspace, module graph with enforced boundaries, and an engine purity gate
  • LibRaw vendored as a pinned, static XCFramework (macOS, iOS, and Simulator; arm64 only)
  • Engine API contract, headless CLI, and a unit and engine smoke-test suite
  • Lightroom feature inventory
Show 4 more
  • GitHub Actions CI: purity gate, SwiftFormat lint, build, and tests, with cached LibRaw and fixtures
  • Performance lab: a CI runner on Apple Silicon with regression gates that block merges (iPhone and iPad tiers come with Phase 5)
  • Golden-image color regression tests (ΔE2000) for camera files, and a golden render for every bundled recipe version
  • Written clean-room policy and a license-audit gate in CI

Phase 1

First light

done
6 of 6
  • RAW pipeline core, fused develop kernel, cached pyramid, and latest-wins rendering
  • Develop workspace on macOS, Basic panel, histogram, before/after, sidecars, undo, and export
  • Layer and mask engine, with linear and radial gradient masks, local adjustments, and the Masking panel
  • Sandboxed XPC decode helper
Show 2 more
  • Render scheduler with priority lanes, tile cancellation, and thermal awareness
  • Coordinated sidecar I/O for iCloud Drive

Phase 2

Develop parity

in progress
12 of 19
  • Texture, Clarity and Dehaze, globally and inside masks, and Moiré and Defringe inside masks
  • Copy Settings with Lightroom's checklist, Sync and Auto Sync across a filmstrip selection
  • Detail panel: noise reduction scaled to each photo's measured noise, and noise-aware sharpening, with Lightroom's controls
  • Menon Bayer demosaic with a dual pass for flat noisy areas, hot-pixel repair and highlight reconstruction
Show 15 more
  • Recipes: one format for presets, profiles and LUTs, Base Look tables, camera recipe cards, .cube, .3dl and HaldCLUT import (with LUTs for S-Log3, LogC3, V-Log and Apple Log footage), 39 bundled recipes, and the Recipe Lab
  • Before/After layouts, themes and a Settings window
  • Edge-aware Highlights and Shadows, and edge-refined Dehaze
  • Best-in-class classical noise reduction on raw data, profiled per camera and ISO
  • Better X-Trans demosaicing (Markesteijn)
  • Full DCP camera profiles (dual and triple illuminant), ICC input profiles, and .3dl and log-space LUT import (.3dl and S-Log3, LogC3, V-Log and Apple Log LUTs are done)
  • Film effects for recipes: halation (the red glow around bright lights), bloom and diffusion, and film grain that varies with density and scales with output size
  • Calibration panel: Shadows Tint and the red, green and blue primaries' Hue and Saturation, and the Process version, which moves an edit to a newer rendering only when you ask
  • Remove Chromatic Aberration, from the lens profile or measured from the photo's own edges, and Lightroom's Defringe (Purple and Green Amount and Hue)
  • Lens corrections from the lensfun database and Adobe LCP import (the corrections raw files carry, DNG opcodes, Sony's and Fujifilm's, manual Distortion and Vignetting, and Adobe LCP profiles you put in Redlamp's Lens Profiles folder are done, in the same geometry map; lensfun waits on counsel)
  • Crop and straighten (aspect presets and lock, composition overlays, Angle and the Straighten tool, Constrain to Image), rotate and flip, and the manual Transform sliders, all one geometry map that masks follow
  • Upright: Auto, Level, Vertical and Full from the photo's own straight edges, found by Redlamp's line detector, and Guided from drawn guides. A correction is applied only when the edges agree on it, so a landscape or a still life is levelled at most, and Auto leaves strong perspective partly in place
  • Brush, color range, and luminance range masks, and Vision AI masks (subject, sky, background, people)
  • Slider-feel calibration against Lightroom, and Lightroom XMP preset import (preset import is done, setting by setting, with a report; response curves fitted against Lightroom's renders are next)
  • Photos library integration and a Photos editing extension

Phase 3

Pro masking, healing, AI denoise, focus stacking, and looks

1 of 9
  • SAM-class object and face-part masks, depth range, mask refinement, mask presets, and recomputing AI masks for pasted settings
  • Landscape and body-part masks on a model trained on data we have rights to, and batch updating AI masks across photos
  • Healing, clone, and content-aware remove, with AI inpainting on the device (Remove with content-aware fill, Heal and Clone spots and brushes, Remove Dust and Visualize Spots, and Find for things named in words are done; generative fill for large areas is next)
  • AI Denoise: an on-device model working on raw data, matching or beating the best commercial denoisers, with a fast 1:1 preview and non-destructive results
Show 5 more
  • Focus stacking v1: stacks detected automatically in the filmstrip, alignment (including focus breathing and handheld sequences), depth-map and pyramid fusion strategies, a retouch brush, and results that stay fully editable (alignment, depth solve, fusion and redlamp stack done)
  • Manufacturer lens corrections embedded in RAW files (Sony, Fujifilm, Panasonic, OM System)
  • redlamp-profiler: look matching by black-box measurement (raw-against-camera-JPEG fitting done: four measured film looks ship). Still to do: the remaining film simulations (Eterna, Classic Negative, Nostalgic Negative, Pro Neg, Acros, Reala Ace), which need a shoot with one camera, a chart matrix solve, and a DCP writer
  • Analogue film stocks: film and digital shot side by side with charts, scanned and fitted by the profiler, with halation, bloom and grain per stock
  • The agent recipe studio at scale: many more recipes developed from briefs, once the critics agree with human picks (about 200 pairwise verdicts)

Phase 4

1.0

0 of 4
  • Lightroom XMP sidecar import, HDR/EDR editing and export, and batch export
  • AI-assisted focus stacking: learned fusion and halo suppression, occlusion and motion handling, and good stacks from fewer or handheld frames
  • AI Super Resolution (2x and 4x) that stays faithful and doesn't invent detail
  • Accessibility, usability testing, and the Mac App Store release

Phase 5

iPad and iPhone

0 of 5
  • iPad and iPhone shells on the same engine (compact layout, touch, Apple Pencil), with in-process decoding
  • Coordinated sidecar I/O through Files, and edits moving between devices
  • Tiled rendering for large exports within iPhone and iPad memory
  • On-device timing of the AI models on iPhone and iPad, and performance-lab tiers for both
Show 1 more
  • App Store releases for iPad and iPhone

Unscheduled

Later

  • CloudKit sync with lightweight proxy RAW files
  • A library and catalog, tethered shooting, and panorama and HDR merge
  • More AI features, subject to the research below: lens blur, distraction removal, and personalized auto settings

Redlamp in 24 seconds

The Redlamp app icon: a glowing ruby safelight lens in a steel bezel

Open source

Free, open and yours to build on.

Redlamp is licensed under the Mozilla Public License 2.0, which is compatible with the App Store. Algorithms are implemented clean-room from papers and specifications, and contributions are welcome.
licenseMPL-2.0statuspre-alphacostfree forevercloudnone required

Build from source

An Apple Silicon Mac with macOS 26, Xcode 26 and mise.

$ git clone https://github.com/pdcgomes/redlamp.git && cd redlamp
$ mise install
$ mise run generate
$ mise run run

Homebrew

$ brew tap pdcgomes/redlamp https://github.com/pdcgomes/redlamp
$ brew install --cask redlamp