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
Where Caelus sits, checked February–June 2026. Sizes are gzipped where published:
| 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: houses, Chiron, and nodes with no data files. Differences as of its v0.2.1: Caelus publishes per-body oracle deltas (Validation) and ships an MCP server and edge API; celestine ships Koch, Regiomontanus, and Campanus houses, which Caelus does not.
Swiss Ephemeris as Oracle
During development, Caelus positions were compared to Swiss Ephemeris 2.10 at random instants across 1900–2099. No Swiss Ephemeris code or coefficient ships here. An early Chiron fit sampled its asteroid file offline; release uses JPL Horizons instead. The two Chiron integrations agree to 0.85″ worst-case across 1900–2099.
License
MIT. Ship in closed source, SaaS, mobile, or edge bundles without AGPL obligations or ephemeris file deployment. Engine plus embedded data is ~85 KB gzipped; same code in browser, edge API, and the MCP Server.