The Most Comprehensive Open-Source Astrology Engine
From raw JPL kernel reads to advanced predictive techniques: one library with a documented Python API and native performance paths.
Every capability above, running in your browser
No install, no sign-up for the free tools: the same engine that computes the numbers.
JPL DE440/DE441 Foundation
Built on NASA's most accurate planetary ephemeris. Iterative light-time correction, multi-body relativistic deflection, annual aberration, every step documented and inspectable.
Auditable Calculations
Every intermediate value is accessible. Python API owns orchestration and per-stage controls. Explicit computational policy, deterministic behavior, and documented residuals against ERFA/SOFA.
1,809-Star Sovereign Registry
Sovereign registry with proper motion, parallax, epoch propagation, and Stellar Quality classification. Versioned external-reference evidence is published with its corpus and engine version.
22 House Systems + Aspect Patterns
Placidus, Koch, Regiomontanus, Campanus, Morinus, Porphyry, Whole Sign, Equal, APC, Sunshine, and more. 22 ecliptic aspect types plus 2 declination aspect types, multi-body patterns, and antiscia.
Comprehensive Predictive Engine
Secondary/tertiary/minor progressions, primary directions (Placidus semi-arc & mundane), solar/lunar returns, Firdaria, Zodiacal Releasing, Vimshottari Dasha, and more.
Advanced Astronomy
NASA-canon eclipse solver, heliacal phenomena, occultations, astrocartography, galactic coordinates, parans, retrograde stations, harmonics, and synastry.
Validation-First Design
Comprehensive test suite referencing authoritative sources. Validation reports with documented residuals. Reproducible pipelines for research-grade work.
10,025 Position-Capable Asteroids
The external installed ephemeris manifest covers 10,025 bodies in 401 shards. Separately, the family catalog records 342 families and 200,726 unique numbered asteroids; catalog membership alone is not an ephemeris.
From install to chart in five lines
Moira's API is designed to be explicit and readable. No magic defaults, no hidden configuration. Every parameter has a clear name and a documented effect.
1from datetime import datetime, timezone2from moira import Moira, HouseSystem3from moira.patterns import find_all_patterns4from moira.houses import house_of56m = Moira() # auto-discovers installed JPL kernel78# 1. Planetary positions - full reduction using the installed JPL kernel9chart = m.chart(datetime(2000, 1, 1, 12, 0, tzinfo=timezone.utc))10print(f"Sun: {chart.planets['Sun'].longitude:.6f} deg")11print(f"Moon: {chart.planets['Moon'].longitude:.6f} deg")1213# 2. House cusps (Placidus, London)14houses = m.houses(15 datetime(2000, 1, 1, 12, 0, tzinfo=timezone.utc),16 latitude=51.5074, longitude=-0.1278,17 system=HouseSystem.PLACIDUS,18)19print(f"ASC: {houses.asc:.4f} deg | MC: {houses.mc:.4f} deg")2021# 3. Aspect patterns (21 multi-body configurations)22patterns = find_all_patterns(chart.longitudes())23for p in patterns:24 print(f"{p.name}: {', '.join(p.bodies)}")2526# 4. House placement lookup27sun_house = house_of(chart.planets['Sun'].longitude, houses)28print(f"Sun is in house: {sun_house}")
Moira vs. the competition
The comprehensiveness claim, tested feature by feature against the most popular Python astrology libraries.
| Feature | Moira | Kerykeion | Immanuel | Swiss Eph. |
|---|---|---|---|---|
| Python API with inspectable stages | Yes | No | No | No |
| Inspectable intermediate stages | Yes | No | No | No |
| JPL DE440/DE441 kernel support | Yes | No | No | Yes |
| IAU-aligned precession/nutation | Yes | No | No | Yes |
| Fixed star catalog | Yes | partial | Yes | Yes |
| 22 house systems | Yes | Yes | partial | partial |
| Eclipse & occultation engine | Yes | No | partial | Yes |
| Heliacal phenomena | Yes | No | No | Yes |
| 12 ayanamshas (Vedic sidereal) | Yes | Yes | No | Yes |
| Primary directions (built-in) | Yes | No | No | No |
| Vimshottari Dasha & Nakshatras | Yes | No | No | No |
| Astrocartography (ACG lines) | Yes | No | No | No |
| 512 Arabic Parts | Yes | No | No | No |
| Documented validation residuals | Yes | No | No | Yes |
| MIT License (commercial friendly) | Yes | No | No | No |
| Harmograms / spectral research engine | Yes | No | No | No |
| Synastry, composite & Davison charts | Yes | partial | partial | No |
| SVG chart generation | No | Yes | No | No |
MIT vs. AGPL licensing
Swiss Ephemeris (and the wrappers built on it) requires AGPL compliance — any application using it must also be open-sourced — or a paid commercial license. Moira is MIT licensed: free for closed-source commercial use, no copyleft obligations, no license fee.
* Kerykeion and Immanuel are wrappers over the Swiss Ephemeris C library (pyswisseph). Swiss Ephemeris is a powerful C library with 25+ house systems, eclipses, and fixed stars, but it requires AGPL or a paid commercial license, uses compiled C binaries, and does not expose intermediate calculation stages. Primary directions, Dasha systems, and astrocartography are not part of its core API and require separate implementation.
Read the case study: shipping commercial software without the AGPL →
Moira vs. Swiss Ephemeris
Swiss Ephemeris is a serious, well-validated C library. This is a developer-to-developer comparison of what each approach offers and where the trade-offs lie.
Swiss Ephemeris
Swiss Ephemeris is mature, accurate, and widely deployed. The AGPL license means any application using it must also be open-sourced, or you pay for a commercial license. The C binary means you cannot step through the calculation, modify a stage, or validate an intermediate value without reading C source.
Moira
Moira's Python API orchestrates a C++17 native core for performance while keeping every stage inspectable. The MIT license removes all commercial friction. Features like primary directions, Dasha systems, harmograms, and astrocartography are first-class citizens, not afterthoughts.
When to choose which
- You already have a codebase built on pyswisseph
- You need SVG/PDF chart rendering (Astrodienst tools)
- You already have a codebase built on pyswisseph
- You need SVG/PDF chart rendering (Astrodienst tools)
- You need MIT licensing for commercial products
- You want to inspect, modify, or validate any calculation stage
- You need primary directions, Dasha, harmograms, or astrocartography
- You are building research pipelines that cite specific parameters
- You want a Python-native API without a C dependency chain
In summary: Swiss Ephemeris remains the standard for C-based applications and existing pyswisseph codebases, while Moira is the Python-native alternative for developers who need MIT licensing, an inspectable astronomical pipeline, and built-in predictive techniques such as primary directions and Vimshottari Dasha.
Most astrology software hides the math. Moira shows it.
Swiss Ephemeris wrappers like Kerykeion and Immanuel delegate all computation to a compiled C library. You get results, but no insight into how they were derived. Moira exposes the full reduction pipeline through a Python API, from raw JPL kernel reads to final astrological output, with a native C++17 core handling performance-critical paths transparently.
Each named transformation has documented Python controls and inspectable evidence, while the native core handles performance-critical paths.

Named authorities, corpora, tolerances, and engine versions

Python orchestration. C++17 performance.
Moira runs a C++17 native extension (_moira_native) for performance-critical paths, while the Python layer owns the API surface, orchestration, and documented controls for exposed stages.
Built for Those Who Need to Know
Developers
Build astrology applications on a solid, auditable foundation. Python API with C++ performance core means easy integration, fast event searches, and full debuggability.
Researchers
Reproducible pipelines with documented residuals. Compare results against authoritative sources. Cite specific calculation parameters.
Serious Practitioners
Understand exactly how your chart is computed. Access intermediate values, verify against reference charts, and explore the mathematics of traditional and modern techniques.
Professional chart tools, built for precision
The Moira Workspace is a full-featured browser-based environment powered by the same astronomy-first engine behind the Python library. Calculate natal charts, progressions, synastry, and more, with every intermediate stage visible and exportable.
- Natal, progressed & synastry charts
- JPL DE441 + IAU 2000A precision
- All major house systems
- Interactive chart wheel with aspect filtering
- No per-chart fee · $19/month or $190/year
Ready to build with Moira?
Install in seconds. MIT licensed. No hidden dependencies.