Planets and points
Sun to Pluto, the lunar nodes, Chiron and Black Moon Lilith, with speed and retrograde status, and the Ascendant and Midheaven.
Pure Rust · NASA JPL ephemerides · Python & WebAssembly
astroceleste-engine computes complete astrological charts from JPL ephemerides. One core runs on the server, in desktop and mobile apps and in the browser, and every number matches its reference implementation to within 10−9.
cargo add astroceleste-enginepip install astroceleste-enginenpm install astroceleste-engineExperimental (0.0.x): the API may change in any release. Pin an exact version.
This page runs the engine compiled to WebAssembly. Nothing is sent to a server: the chart is computed on your device from an 11 MB excerpt of JPL DE440s covering 1950–2050, which is downloaded the first time you compute.
The Rust crate, the Python wheel and the npm package share one core and one version. Their results are the same JSON, down to the key order.
use astroceleste_engine::ephemeris::{Kernel, KernelSet, Spk};
use astroceleste_engine::{calculate_chart, ChartRequest, UtcInstant};
let mut kernels = KernelSet::new();
kernels.push(Kernel::new("de440s.bsp",
Spk::open("kernels/de440s.bsp")?)?);
let request = ChartRequest::new(
UtcInstant::parse("1987-05-17T14:30:00Z")?, 41.9, 12.5);
let chart = calculate_chart(&kernels, &request)?;
import astroceleste_engine as ace
engine = ace.Engine(["de440s.bsp"])
chart = engine.chart(
"1987-05-17T14:30:00Z", 41.9, 12.5,
house_system="P",
zodiac_type="sidereal",
ayanamsa="lahiri",
)
chart["planets"][0]["sign"] # 'Taurus'
import init, { Engine } from "astroceleste-engine";
await init();
const engine = new Engine();
const res = await fetch("/ephemeris/de440s.bsp");
engine.addKernel("de440s.bsp",
new Uint8Array(await res.arrayBuffer()));
const chart = engine.chart({
utc: "1987-05-17T14:30:00Z",
latitude: 41.9, longitude: 12.5,
});
Sun to Pluto, the lunar nodes, Chiron and Black Moon Lilith, with speed and retrograde status, and the Ascendant and Midheaven.
Eleven house systems (Placidus, Koch, Regiomontanus, Campanus, Topocentric, Alcabitius, Morinus, Porphyry, Equal, Vehlow, Whole Sign) and the house of every point.
14 ayanamsas, including Lahiri, Fagan-Bradley, Krishnamurti, Raman and Galactic Center.
The five major aspects plus semi-sextile and quincunx, with configurable orbs and moiety methods.
Fixed-star conjunctions with precession, and the Arabic parts with day and night formulas.
Traditional temperament from the primary qualities, and the lunar phase, illumination, dignity and mansion.
Planetary day and hour from the actual sunrise and sunset, significators, void of course Moon and considerations before judgment.
Cross-aspects to a natal chart or between two charts, and charts turned to any house.
Positions come from NASA JPL DE440s (1849–2150) or DE441 (13200 BC–17191 AD), read by a pure-Rust SPK reader. A date outside the loaded kernels is an error, never a guess.
Every release reproduces the reference implementation's output for natal, horary, transit, synastry and derived charts: floats within 10−9, with the same keys in the same order.
Time scales, precession, nutation, light-time, deflection and aberration are checked against Skyfield, and raw kernel states against jplephem.
Pure Rust with no C code and two dependencies (serde, serde_json). Builds for servers,
wasm32-unknown-unknown, Android and iOS.
How accuracy is verified →