New library: seiza (星座 — “constellation”), a Rust astronomical plate solver. Give it an image of the night sky and it figures out exactly where the telescope was pointing — star detection, TAN WCS fitting, and both hinted and blind solving — built to power the astrometric features in tenrankai and, eventually, PSF Guard.
The speed story
Plate solving has a reputation for being slow. It doesn’t have to be. Measured on a 16-core desktop, no GPU, everything from a cold start:
- A 24 MP wide field blind-solves in under 2 seconds against a 2.5M-star Tycho-2 catalog — including building the entire 2M-pattern whole-sky index from scratch (1.2s) before searching it (0.4s).
- A 61-megapixel raw FITS frame goes from file-open to hinted solution in 0.7 seconds — load, autostretch, star detection, solve.
- Hinted solving itself runs in tens of milliseconds, with typical RMS of 0.2–0.5″ on real frames.
Those numbers came from a day of optimization passes that took the blind index build alone from 13.5s to 1.6s. The tricks: star unit vectors so every radius test is a dot product (no per-pair trigonometry), boundary-aware descriptor hashing (1–4 probes per quad instead of 3⁵), a frozen sorted-array index with branchless binary search, uniform-grid matching, rayon across all cores, and SIMD kernels with runtime AVX2 dispatch so released binaries stay portable.
More than stars
Getting started is one command: seiza download-data prebuilt pulls
SHA-256-verified star and object catalogs from the CDN — Tycho-2 (2.5M
stars, 25 MB), Gaia DR3 (36.7M stars), a 314k-entry object store, and a
transient catalog refreshed nightly. Building your own deeper sets from
primary sources stays supported, but nobody should have to spend hours
against the ESA archive just to solve their first image.
The object catalogs pack NGC/IC/Messier, Sharpless, Barnard, LDN, vdB,
UGC, PGC galaxies, Green’s supernova remnants, Wolf-Rayet stars, named
stars — plus live transient lists and comet/asteroid orbital elements
propagated to each image’s capture time, so an active supernova or a
passing comet is an object like any other. Solve an image, and it tells you
everything in the footprint with full ellipse geometry. There’s also
seiza-fits, a dependency-free FITS reader with exact single-pass
statistics, MTF autostretch, and OSC debayering (a 26 MP sub loads in
~75ms).
It’s on crates.io, with deb and RPM packages on GitHub releases.
The tenrankai integration
This is why seiza exists. With seiza wired in, tenrankai plate-solves astro images and draws object overlays: an “Objects” toggle on the image detail page reveals labeled markers for everything in frame — with collision-nudged labels, a frame-encompassing badge for the big stuff, zoomable views with touch-safe controls, and solutions persisted into the same markdown metadata sidecars everything else lives in. Solve once, flat files forever.
Here it is running against my shot of SN 2026sqf — a real screenshot, solved from the Tycho-2 catalog in well under a second:

My favorite part is that magenta label: transient overlays. The object store carries a live, reloading supernova catalog scoped to each image’s capture date — the solver knew that SN 2026sqf, type II, discovered 2026/07/08, was active in this frame on that night, automatically. When the catalog updates, persisted overlays regenerate.
Flat files in, annotated sky out.