Strata 1.0 is on the Mac App Store. It takes a planetary, lunar or solar capture from raw video to a finished image on your Mac: frame scoring, stacking, derotation, sharpening, color and export, in one window, on the GPU.
That's the short version. The longer version is that this app took more than six months of testing to get right, and almost none of that time went where I expected it to.

It's called V3 for a reason
On my hard drive the project folder is named V3, because the shipped stacking engine is my third attempt at one. Two earlier engines never made it in front of a single tester. I built them, ran them, looked at what came out, and started over.
All three attempts failed at the same place, and it's the hard part of this kind of stacking. Here's what the pipeline actually does. You record thousands of frames. You analyze them, normalize them, build a reference from that analysis, align every frame against it, and keep only the best set. Then you break each surviving frame into small tiles and go looking, tile by tile, for the best version of each patch of the subject across all of those frames. The final image gets assembled from the winners.
Taking the image apart is easy. Putting it back together is not. Every tile boundary is a place where pieces of different frames meet, and the math has to make that join invisible. Get it wrong and you get seams. You get peppered detail. You get cracks running through an image that otherwise looks fine. At the limb, where the subject meets black sky, you get edge artifacts, because the recombination has to handle a boundary with nothing on one side of it. And underneath all of that, atmospheric distortion is smearing detail and pushing pixels across tile borders, so the thing you're trying to reassemble was never cleanly divided to begin with.
The result has to look like one perfect exposure. Nobody should be able to tell it was ever taken apart. There are a thousand ways to fail that, and my first two engines found plenty of them. Both times I got the pieces working and could not get them back together without leaving fingerprints on the image, so I threw the engine out and started from a different foundation.
Every planetary stacker, mine and everyone else's, does some version of this.
Splitting the image is arithmetic. Making the joins invisible is the hard part, and atmospheric distortion has been smearing detail across those tile boundaries the whole time.

V3 is the one that holds up. It still wasn't right when testers first saw it.
I've shipped four other apps. Strata is the most complicated by a wide margin, and it taught me something about the shape of this kind of work: building the app was maybe ten percent of the effort. The other ninety percent went into getting it to a state where I would put my name on the output.
That ratio surprised me. Writing a wavelet sharpener is a weekend. Writing one that behaves correctly on a mono solar capture, a drizzled lunar mosaic tile, and a Jupiter stack with a moon in the frame, and that produces the same result in batch as it does interactively, and that doesn't quietly change what it does when someone excludes a channel, is six months. Every one of those cases came from a real person sending me a real file that didn't work.
What testers actually changed
The busiest month was the last one before the release build. That is not a coincidence, and it is not a sign something went wrong. It is what the end of a beta looks like when people are still finding things worth fixing.

I want to be specific about this, because "thanks to my beta testers" is easy to say and tells you nothing.
Hardy reviewed this app more thoroughly than I did. He went through every screen down to the color of individual buttons and the wording of labels, and he did it repeatedly, for months. He also found real defects in the output, not just the interface.
Two things in Strata exist because of him. The first is the Passes control on wavelet sharpening. He wanted a sharpness he couldn't reach in one pass, so he exported the image, reloaded it, sharpened it again, and repeated that twenty-eight times to prove the result was worth having. Then he emailed me:
I sharpened the image 28(!) times using Layer 1 with a value of 1.2. Of course, I kept exporting it, then reloading the sharpened version, sharpening it again. The process is rubbish but the result is not so bad. Now just throw a field and a button on the Sharpen page where you can select 28x, and I'll be happy.
He was right, and the compounding it produces is not something you can get by turning a single slider higher. The control shipped a few days later.
The second is a stacking artifact he caught on a deliberately oversharpened full Moon at ten degrees elevation. He isolated it to regions without alignment points, confirmed smaller alignment boxes reduced it, and confirmed the other stacking engine didn't show it at all. That's a complete bug report before I'd looked at a line of code. The fix is in the 1.0.1 update.
Then he did something I hadn't asked for and wouldn't have thought to ask for.
Strata's analysis phase is like a weather forecast. It reads your video before anything has been stacked and predicts which of the night's captures will give you the best final image. Batch Analysis is that same forecast across a whole session, fourteen files ranked before you've committed an evening to processing any of them. It's a prediction, and like any prediction it's only worth something if it turns out to be right.
Hardy wanted to know what the weather actually was. So he built the instrument to measure it: Lunar Image Analyzer, an ImageJ macro that takes finished, unsharpened lunar stacks, tiles them, scores every patch for sharpness, discards the patches that are too dark or too bright or sitting on the limb, and ranks a folder on what's left. It's free, it runs in Fiji, and if you shoot the Moon it's worth your time. Independent of my code entirely, and looking at the finished image rather than the video it came from.
Then he ran both and compared them. On his images, the rank correlation between Strata's forecast and his measurement came out at 0.85. The top pick matched exactly. The top three were the same three, the top six the same six, and seven of the top eight agreed. That's the first time anyone outside my own machine tested whether the prediction predicts anything, and I wouldn't have that answer if he hadn't built the thing to get it.
Sven captures the Sun in H-alpha and Calcium-K for hours at a stretch, one file every thirty seconds. He showed up with a workflow that produced hundreds of files a session and a batch feature that topped out at a handful. Folder batch with no file limit exists because his workflow made the limit look as arbitrary as it was. Point Strata at a directory now and it runs the whole thing.
A second Sven, a different person with the same first name, sent color SER files converted out of Siril that Strata previewed as garbage and stacked worse. Working out why taught me more than I wanted to know about the ways different applications write the same file format, and the fix covered a whole class of third-party conversions rather than just his files.
Antonio was benchmarking Strata against WinJUPOS from the first week, and he was unsparing about it. His first report was that derotation didn't derotate, it just blended two images together, and he sent side by side proof. That report ended with me throwing out the entire optical-flow approach and rebuilding derotation on a different foundation. He also pushed it past the two-image limit it started with.
Drew stress-tested the parts of the app I was least likely to test myself. He found a mosaic artifact in stacked color-camera output that only became visible once you sharpened the finest wavelet layer, and then confirmed the diagnosis with a controlled run using the other stacking engine. He found that excluding a channel in Luminance mode made the sharpening round trip non-identity, so brightness crept up with every pass even at zero sharpening. He found that the comparison view rendered at a different scale than the main view, which is the kind of thing that quietly makes you distrust your own eyes.
Donald sent solar captures that Strata simply refused to process. Bright H-alpha frames rejected wholesale as overexposed. A high-drift close-up that couldn't build a reference frame at all, on a file AutoStakkert handled without complaint. Each one was a real defect in a validity check that was too confident about what a good frame looks like. All of them work now.
Rain City Astro writes Planet Stacker X, which does some of what Strata does and does it for free. He spent time during the beta helping me anyway. He filed reports on a file format I couldn't load, a mono solar capture that froze on analysis, an out-of-memory crash on a very large recording, and stacking quality on undersampled data. He also gave me advice and pointed out things in my own pipeline I had overlooked. I don't take that for granted, and I'd tell anyone to go try his app.
Gerhard found three things that would each have been embarrassing to ship. Strata Warp returning a black image, because the merge divided by the number of frames it had been asked for rather than the number it actually managed to accumulate. A Jupiter capture with moons in the frame, where the validity check threw out 1,831 frames out of 1,835. And FITS exports that PixInsight refused to open, because one non-ASCII character in the metadata was enough to make the file non-conforming. He also asked the follow-up I didn't have a good answer to: when the app decides your frames are no good, why can't you overrule it?
And then there are the people who each sent one file that broke one thing. Christophe caught folder batch occasionally writing a structurally invalid TIFF, which is the worst class of bug in an app like this, because the run reports success and the damage is in the file. He also found solar color refusing to apply to a directly loaded still, and Process Image Folder finding zero files in a folder of Strata's own exports. Kilian sent a solar session where one capture out of fourteen was rejected outright. Shane worked the partial solar disc and prominence edges harder than anyone. Katelyn, Tim, René, Gary, Arthur, Jerzy and Dom each turned up something I would not have found on my own, because none of it happens to the files I shoot.
What's next
1.0.1 is already built and follows shortly. It's bug fixes and finish work: the stacking artifact Hardy caught, mono captures exporting as true single-channel files instead of three identical ones, the comparison view rendering fixes, and the higher-quality stacking engine becoming the default rather than something you have to select.
After that, the roadmap is long, and most of it is already written by the people above. Feature requests I've logged and haven't built yet outnumber the ones I have. Some of them are large enough to be their own projects.
That's the part I'd underline. If you use Strata and something breaks, or something is merely annoying, tell me. That's how the last six months went, and it's how the next six will.
Some of it became a fix. Some became a feature. Some became a decision to deliberately not build something, which is worth just as much and is harder to arrive at alone. A few reports I could not reproduce, and those are still open with your file sitting in a folder on my machine.
Nothing was ignored. If you sent a crash report through TestFlight without leaving your name, if you emailed me one screenshot and never heard back beyond a thank you, if you told me something was confusing and I changed the wording three builds later without saying so: it counted, and it is in here.
Strata 1.0 is a better app than the one I would have shipped alone. That is not a courtesy. It is the plainest description of what happened.
Strata is $34.99 on the Mac App Store, one time, every feature included. It needs macOS 14.6 or later and runs on both Apple Silicon and Intel. There's more detail on the Strata product page.