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:
| Planets | VSOP87D analytical theory | Bretagnon & Francou, 1988, Bureau des Longitudes |
| Moon | Chebyshev fit of JPL DE423 (2010) | NASA JPL (public domain); differs from DE440 by <0.1″ here; re-fit planned |
| Moon (embedded) | ELP2000-82 abridged series | Chapront-Touzé & Chapront, as published in Meeus ch. 47 |
| Pluto | Published periodic series | Meeus, Astronomical Algorithms, ch. 37 |
| Chiron | Chebyshev fit of JPL Horizons | NASA JPL small-body system (public domain); raw Horizons samples committed in-repo |
| Nutation | IAU 1980 theory, 63-term abridged table | Meeus ch. 22; terms ≥ 0.0003″ of the 106-term series |
| Precession | IAU 1976 / Meeus formulations | Lieske et al. |
| ΔT | IERS observed values; near-flat then slow tidal rise afterward | International Earth Rotation Service; see Build Notes |
| Houses | Spherical trigonometry from first principles | semi-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.
| Engine | License | Accuracy | Coverage and runtime |
|---|---|---|---|
| Swiss Ephemeris (sweph, WASM ports) | AGPL-3.0 / 700 CHF | 0.001″ | houses, Chiron, nodes; native Node or 250 KB–1.7 MB WASM, plus data files |
| astronomy-engine | MIT | ±60″ | no houses, Chiron, or nodes; 41 KB gz, browser and edge |
| astronomia | MIT | sub-arcsecond planets | no astrology layer; 48 KB gz plus VSOP data |
| ephemeris (Moshier port) | GPL-3.0 | <0.1″ planets, ~3″ Moon | no houses; 235 KB minified, stale since ~2020 |
| celestine | MIT | sub-arcsecond (claimed) | houses (7 systems), Chiron, nodes; 59 KB gz, v0.2.x since Jan 2026 |
| Skyfield | MIT | milliarcsecond (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.