Three distinct audiences — each with different needs, different workflows, and different reasons to choose Moira over the alternatives.
Building production applications
Moira's MIT license and four-tier import surface make it the right foundation for any application that needs reliable astronomical computation without AGPL licensing constraints.
from moira.facade import Moira, HouseSystem
from datetime import datetime, timezone
# Initialize once — kernel auto-detected
m = Moira()
def calculate_chart(birth_dt: datetime, lat: float, lon: float) -> dict:
chart = m.chart(birth_dt)
houses = m.houses(birth_dt, latitude=lat, longitude=lon,
system=HouseSystem.PLACIDUS)
aspects = m.aspects(chart)
return {
"planets": {
name: {"longitude": p.longitude, "speed": p.speed}
for name, p in chart.planets.items()
},
"asc": houses.asc,
"mc": houses.mc,
"aspects": [
{"body1": a.body1, "aspect": str(a.aspect), "orb": a.orb}
for a in aspects
],
}Install Moira, download a JPL kernel, and compute your first chart in under five minutes.