# Naelos Ephemeris

Where the planets appear, from 13,200 BC to AD 17,191, computed from NASA JPL's own planetary ephemerides. It is the engine behind every chart Naelos draws, and it is open source under the Apache 2.0 licence: free to use, in anything.

- Source: https://github.com/altariqabraham-design/naelos-ephemeris
- npm: https://www.npmjs.com/package/naelos-ephemeris
- In use: https://naelos.ai/ and, for AI assistants, https://naelos.ai/mcp.md

## Built on NASA's data

JPL publishes two ephemerides together: DE440, its most accurate for modern times, and DE441, integrated across 30,000 years. Naelos Ephemeris uses DE440 from 1550 to 2649 and DE441 either side, refitted into compact tables, one file per century, each matching JPL's own numbers to within 0.01″. Everything that turns where a body is into where it appears from Earth is done at run time: light-time, the bending of light by the Sun, aberration, precession and nutation.

## Checked against NASA, not against another program

- Across 1550–2649, every body within 0.02″ of JPL's DE440, and speeds within 0.00001° a day.
- From 9000 BC to AD 9000, every body's separation from the Sun within 0.004″ of JPL Horizons, NASA's own online service.
- Every position can show its working: the JPL data it came from, each correction in order, how sure the clock was, and a link that asks Horizons for the same number.

For scale, a chart prints positions to the arcminute, which is 60″.

## What it computes

- The Sun, Moon and planets; Chiron, Ceres, Pallas, Juno and Vesta (1600–2497, where JPL publishes their orbits); the mean and true North Node; mean and true Lilith.
- Houses in Placidus, Koch, Whole Sign, Equal, Porphyry, Campanus, Regiomontanus, Meridian and Morinus, with the Ascendant, Midheaven and Vertex.
- Eclipses, and exact stations, ingresses, returns, lunations and transits — solved, not sampled, so no pass of a retrograde loop is missed.
- How sure a chart is when the birth time is not: which signs, houses and aspects a birth window allows. And rectification from dated life events.
- Dates in either calendar for any year: the Julian calendar before 15 October 1582, as history records them.

## How far back it can be trusted

The planets hold across the whole span. What becomes uncertain far from the present is the clock: the Earth's rotation has slowed unevenly, and how fast it turned is known to about five minutes at the start of the Christian era and to hours by 10,000 BC. The Moon moves about 0.55″ a second and the Ascendant about 15″, so a chart of 10,000 BC has sound planets, a Moon good to a few degrees, and houses no one can know. The engine says so rather than hiding it.

## Use it

```
npm install naelos-ephemeris
```

```js
import { readFileSync } from "node:fs";
import { fileURLToPath } from "node:url";
import { NaelosEphemeris, julday, tablesFor, SE_MARS, SEFLG_SPEED } from "naelos-ephemeris";

const table = (name) =>
  readFileSync(fileURLToPath(import.meta.resolve(`naelos-ephemeris/data/${name}`)));

const t = julday(2026, 10, 20, 12); // UT
const eph = NaelosEphemeris.fromBuffers(tablesFor(t, t).map(table));
eph.calc_ut(t, SE_MARS, SEFLG_SPEED); // { longitude, latitude, distance, longitudeSpeed, … }
```

Plain TypeScript, no native code and no runtime dependencies: it runs in Node, Deno, Bun and the browser. The tables for 1550–2649 ship in the package (6.6 MB); the 294 tables beyond them (162 MB) are on the de441-v1 release (https://github.com/altariqabraham-design/naelos-ephemeris/releases/tag/de441-v1), each with a checksum to verify it by. Its calls answer the way Swiss Ephemeris's do — the same body numbers, flags and fields — so software written for one can move to the other.

## Licence

Copyright 2026 Altariq Abraham, doing business as Apex Node. Licensed under the Apache License, Version 2.0. The tables are derived from NASA JPL's DE440 and DE441, works of the United States Government in the public domain. The licence grants no rights to the Naelos name.
