AuLun Ephemeris.
The astronomy under every AuLun chart is our own engine — validated against NASA JPL Horizons to sub-arcsecond accuracy. It's on npm, free for non-commercial use.
What it is.
You give it a birth moment and a birth place — date, time, timezone, latitude and longitude — and it hands back the complete natal chart as data. Not a picture, not a horoscope reading: the precise raw material both of those are made from.
One call returns exact zodiac positions for about thirty bodies (Sun, Moon, the planets, Pluto, Chiron, and sixteen asteroids and dwarf planets like Ceres and Eris), the personal frame — Ascendant, Midheaven, and twelve house cusps in any of eleven house systems — the derived points astrologers use (lunar nodes, Lilith, the Hermetic lots), and every aspect between bodies with whether it's applying or separating, plus larger patterns like grand trines and T-squares. Tropical by default; sidereal (Vedic Lahiri or Fagan–Bradley) on request.
The engine deliberately stops at the numbers. Drawing the wheel and interpreting “Moon in Scorpio in the 8th house” is the app's job. The engine's job is to make sure the astronomy underneath is unimpeachable.

Accuracy you can check.
Positions are apparent geocentric places computed from the same planetary and lunar theories the professional tools use (VSOP87E, ELP/MPP02, JPL-derived state vectors) with full IAU 2000A/2006 precession-nutation, light-time, and relativistic aberration. We validate the output against NASA JPL Horizons across 1900–2100: sub-arcsecond median accuracy for every supported body, with the Moon at a median 0.06 arcseconds. That matches or beats the Swiss Ephemeris — without its license strings.
Built for shipping apps.
It's one npm install: a WebAssembly binary with all ephemeris data embedded (~13 MB), TypeScript types included, Node 18+, no native compilation, serverless-friendly. Timezones are handled the way birth data actually needs — IANA zones resolved at the historical birth instant, with explicit, correct handling of DST folds and gaps instead of a silent guess. It's the same engine running under every chart AuLun serves in production.
npm install @aulunarcana/ephemerisLicensing.
Free for non-commercial use — personal projects, education, and research cost nothing under the license that ships with the package. Anything sold, monetized, or operated for commercial advantage needs a commercial license; terms are straightforward and we're easy to reach.