Provenance

Sources

Most astrology software computes positions with Swiss Ephemeris. Since v2.10.1 (June 2021) it is AGPL-3.0, dual-licensed at 700 CHF for closed source. Astrodienst's stated position is that an application serving its results over a network must open-source the complete stack or buy the license. Open-source astrology libraries (kerykeion, immanuel, flatlib) sit on it and inherit those terms. Most commercial astrology APIs do not say what engine they run.

Caelus is written from the published record. Coefficients trace to public literature or public-domain ephemerides:

PlanetsVSOP87D analytical theoryBretagnon & Francou, 1988, Bureau des Longitudes
MoonChebyshev fit of JPL DE423 (2010)NASA JPL (public domain); differs from DE440 by <0.1″ here; re-fit planned
Moon (embedded)ELP2000-82 abridged seriesChapront-Touzé & Chapront, as published in Meeus ch. 47
PlutoPublished periodic seriesMeeus, Astronomical Algorithms, ch. 37
ChironChebyshev fit of JPL HorizonsNASA JPL small-body system (public domain); raw Horizons samples committed in-repo
NutationIAU 1980 theory, 63-term abridged tableMeeus ch. 22; terms ≥ 0.0003″ of the 106-term series
PrecessionIAU 1976 / Meeus formulationsLieske et al.
ΔTIERS observed values; near-flat then slow tidal rise afterwardInternational Earth Rotation Service; see Build Notes
HousesSpherical trigonometry from first principlessemi-arc definitions, closed-form angles

Other engines

The table below places Caelus among the engines it is most often compared with. The figures were checked between February and June 2026, and sizes are gzipped wherever the project publishes them that way.

EngineLicenseAccuracyCoverage and runtime
Swiss Ephemeris (sweph, WASM ports)AGPL-3.0 / 700 CHF0.001″houses, Chiron, nodes; native Node or 250 KB–1.7 MB WASM, plus data files
astronomy-engineMIT±60″no houses, Chiron, or nodes; 41 KB gz, browser and edge
astronomiaMITsub-arcsecond planetsno astrology layer; 48 KB gz plus VSOP data
ephemeris (Moshier port)GPL-3.0<0.1″ planets, ~3″ Moonno houses; 235 KB minified, stale since ~2020
celestineMITsub-arcsecond (claimed)houses (7 systems), Chiron, nodes; 59 KB gz, v0.2.x since Jan 2026
SkyfieldMITmilliarcsecond (JPL)no astrology layer; Python only, 32 MB–3.1 GB BSP files

celestine (MIT, January 2026) is the closest project in the list, since it also computes houses, Chiron, and the nodes without shipping data files. As of its v0.2.1 the differences are that Caelus publishes per-body deltas against its oracles (Validation) and ships an MCP server and an edge API, and that Caelus covers twelve house systems against celestine's seven.

Swiss Ephemeris as oracle

During development, Caelus positions were compared against Swiss Ephemeris 2.10 at random instants across 1000–3000, but no Swiss Ephemeris code or coefficient ships in the package. An early Chiron fit sampled its asteroid file offline, and the released fit is built from JPL Horizons instead. The two Chiron integrations agree to 0.85″ in the worst case across 1900–2099.

License

Caelus is MIT licensed, so it can ship in closed source, SaaS, mobile, or edge bundles without AGPL obligations and without deploying ephemeris files. The engine and its embedded data come to ~153 KB gzipped, which is small enough to compute a full chart in the browser, and the same code runs on the edge API and in the MCP Server.

Because the engine runs in the browser, an app can compute a chart on the user's own device and never send their birth time or place to a server. The caelus-starter template is built this way, which removes a good deal of privacy and GDPR overhead, since there is no birth data to store, transfer, or lose. The same arrangement is harder to reach on a Swiss Ephemeris stack, where the AGPL license applies once results are served over a network and full accuracy depends on ephemeris files too large to ship to a browser.

Validation tables →