So yeah. I found a comet! The weekend before last I ran across the sungrazer project – a neat little NASA-funded citizen science project run by the Naval Research Laboratory, soliciting the public to find kreutz comets. There’s a coronagraph on GOES-19 – a geostationary weather satellite – that releases images publicly every 15 mins. It dawned on me that some of the techniques useful in astrophotography (stacking photos, frame subtraction, etc) might be applicable to detecting comets in these frames. Here’s an animation of all the frames of this comet I tracked. It’s faint, but it’s there!
The comet the detector found on its own, crossing CCOR-1's field toward the Sun (off to the left). The yellow crosshair marks it; the stars drift the other way. 2026-10-08 21:15 to 2026-10-09 11:00 UTC, 56 frames at 15 minutes each, about 14 hours.
The bright flash in the middle is not aliens or a supernova, but rather glare from a period during which the earth actually eclipses the sun from the perspective of the instrument. Confirmation came for me when I saw that someone eventually reported it as well, though from CCOR-2, not CCOR-1 – I beat them to it by around 4 hours!
The other night, while working on this moon shenanigans, I had a passing thought (mentioned in that post as well): how much of my astrophotography workflow in pixinsight could I task clippy with automating?
So, I fired up claude code (model Fable 5.1 in xhigh thinking mode) and gave it the parameters: a handful of folders with past imaging session data of mine (either RGB sony pics or mono LRGB image sets ready to be stacked) on my NAS and a github repo. As it happens, pixinsight’s project file format actually keeps a history of each step done to the data to reach the final product, so the natural progression would be to delineate all the steps I did in pixinsight and automate it. This was the most hands-off vibecoding session I’ve ever done (mostly cus it was late and i wanted to go to bed). I told it to create issues on the repo for every step we need to automate/recreate and asked it to iterate on each one till it was done and went to bed.
When I woke up in the morning, it had stopped (because my screensaver kicked in, which purges my ssh key, cutting off its access to github – “security first!” says the guy that handed clippy the keys and went to bed). I had it pick up where it left off and then had it run the full workflow on two targets:
Last Thursday, I got a bit of bad news, so decided to deal with it as I normally do – poured a glass of bourbon and went to go stare at the stars. The only problem? The moon was up, shining bright, waxing gibbous. So I decided to point a camera at it, instead. Despite being an avid photographer and astrophotog (once upon a lifetime), i don’t actually have a particularly good setup for shooting the moon. I realized i did have an old sigma 600mm reflex (mirror) lens and after scrambling through half a dozen adapters I got it rigged up to my camera and started shooting. My impulse (laziness) was to just take a video and stack the frames – a strategy called “lucky imaging”, which is primarily advantageous for atmospheric turbulence (more on this later, highly relevant). So I took a few videos that are fairly enjoyable, but being paranoid I took a few bracketed exposures as well (also relevant).
Once I finished the fun part – staring at the sky, enjoying the nice weather, pressing a shutter button every 30 seconds – I got to the more annoying part: sitting at a computer and loading the usual tools and doing the processing. It’s been a while since I did any planetary body image processing, so I was rusty.. I vaguely recalled PIPP and autostakkert, and even how to do it the hard (but superior) way in pixinsight. But it occurred to me: you know who is really good at shit like this? clippy. So I fired up claude code and got to work. And it did great! Eventually. But first, the result:
Not bad for a very blurry 40 year old reflex lens with a fixed aperture! And now, the gory details:
I made a website you can upload a photo of the night sky (optimized for photos taken with a phonecam) and get an annotated version showing the identified stars, planets, and other solar system bodies. Primarily uses astrometry but some other fun things to add the solar system bodies, satellite tracks, etc.
repo: cwage/asterism — MIT license if you wanna run it yourself
no account needed, no location permission, no compass. it works out where the camera was pointing from the star pattern alone (usually. sometimes. disclaimers apply.)
built a wrapper in go with a collection of sandboxing tools (bubblewrap, seccomp, et al) in order to contain various coding LLM cli tools: cwage/agentpen
forced (well, encouraged) its usage on my nix laptop so that invoking claude or codex actually executes it in this sandboxed tool
why?
When these LLM coding cli tools first emerged, I was cautious and skeptical. It didn’t take long for me to start being impressed, and eventually wanting to see what these things could truly do beyond trivial coding exercises.
cracks knuckles: --dangerously-skip-permissions
Using these tools without guardrails is incredibly impressive. Being able to fire up claude and be like “hey i think my jellyfin client is wedged playing The Magnificent Ambersons – can you ssh into the jellyfin container and make sure GPU passthrough is still working?”, and then watching it proceed to use my local deploy key to ssh in and do the needful is truly impressive. And terrifying. It’s all fun and games for me to YOLO with these tools on my own homelab or whatever, where I accept the risks (of both destructive actions and secrets exfiltration). But in a scenario where I’m running these tools at a company, in a project that touches many sensitive things? Claude’s uncanny ability to derive how to get access to what it needs (all while sending a firehose of any/all information it digs into in the meantime) is actually quite horrifying.
6 months later, i figured it was time to swing the pendulum the other direction and see what it’s like using these tools when you don’t trust them at all. claude and codex both provide their own sandbox options (which is good!), but even they historically haven’t been foolproof – and anthropic’s cli tool source is still weirdly obfuscated/not entirely OSS (despite being leaked). I wanted to build something that doesn’t really trust anyone involved – much like you’d sandbox actively malicious code (sortof).