Skip to main content

OpenJyotish — Free Vedic Astrology Toolkit

Free, open-source, cross-platform Vedic astrology software.
CLI + GUI (PyQt6) + TUI (terminal). AI-powered readings via local LLMs.

51 CLI commands  |  8 GUI categories + sub-tabs  |  9 TUI menus + sub-menus
28-section JSON API for AI agents (+ JSON-LD)  |  1631 tests  |  GPL v3.0

Showcase: the Gandhi retrospective — a pre-registered validation study. Fixed chart, seven datable life events, dashas/transits/yogas checked in the open, miss included.

Quick Install

Option 1: Release (Windows — no Python needed)

Download the latest openjyotish-v*-windows.zip from Releases.
Extract, double-click OpenJyotish.bat. Includes ephemeris data.

Option 2: From source (Linux / Mac / Windows with Python)

# Linux / Mac
git clone https://github.com/velteyn/OpenJyotish.git
cd OpenJyotish
./install.sh
./run.sh

# Windows
git clone https://github.com/velteyn/OpenJyotish.git
cd OpenJyotish
install.bat
run.bat

Requires: Python 3.11+

Ephemeris data is auto-downloaded by install.sh / install.bat (2 files, ~1MB). pip installs: the app offers the one-time download on first Calculate (or Tools → Ephemeris → Download, or openjyotish download-ephe). Your own textbook .txt files go in the books folder inside your per-user data directory (Knowledge tab → "Import books…" or openjyotish knowledge-import f.txt), then Build/Rebuild the Vector DB. The public repo ships a clean database (schema + city atlas, no book texts): your library stays yours. Out of the box you still get a working library: our 10-chapter OpenJyotish Primer plus four public-domain classics (Iyer's Brihat Jataka 1885 and Brihat Samhita 1884, Burgess's Surya Siddhanta 1860, Sastri's Siddhanta Siromani 1861 — provenance in src/jhora/data/books/SOURCES-PD.md). The vector build loads them automatically on first run, so the Guru and Learn cite real textbooks with zero setup.

No-Python downloads (Windows & macOS)

Each release ships ready-to-run binaries — no Python, pip or terminal needed:

Platform Files
Windows OpenJyotish-<ver>-Windows-Setup.exe (installer: wizard, Start menu, uninstaller)
Linux OpenJyotish-<ver>-Linux-amd64.deb (sudo dpkg -i, menu entry + openjyotish CLI) or -Linux-x86_64.tar.gz

Notes: the apps are unsigned, so Windows SmartScreen will ask once ("More info" → Run). Your charts live per-user (%APPDATA%\OpenJyotish on Windows).

One-Minute Examples

# Get your chart
openjyotish chart "1973-03-14 14:55 +0100 45.41 11.88"

# Everything at a glance (AI-friendly JSON)
openjyotish analyze "1973-03-14 14:55 +0100 45.41 11.88"

# Current dasa period
openjyotish dasa-timeline "1973-03-14 14:55 +0100 45.41 11.88"

# Choghadiya — auspicious/inauspicious time slots for today
openjyotish choghadiya --lat 28.61 --lon 77.21 --tz 5.5

# Strengths
openjyotish shadbala --bhava --vimsopaka "birthdata"

# Prediction (Tithi Pravesha)
openjyotish tithi-pravesha "birthdata"

# Matchmaking
openjyotish kuta "girl_birthdata" "boy_birthdata"

# AI interpretation (needs Ollama)
# Full guide: https://github.com/velteyn/OpenJyotish/wiki/AI-Complete-Guide
openjyotish ai "birthdata"
openjyotish teach "How do I read my 7th house?" --chart "birthdata"

# Launch desktop app
./run.sh

Birth Data Format

All commands accept birth data as: "YYYY-MM-DD HH:MM TZ LAT LON"

"1973-03-14 14:55 +0100 45.41 11.88"
  │         │     │     │      └─ Longitude (E positive)
  │         │     │     └─ Latitude (N positive)  
  │         │     └─ Timezone (+0100 = UTC+1, +0530 = India, -0500 = EST)
  │         └─ Local time (24h)
  └─ Date

GUI

openjyotish gui or ./run.sh — 8 main categories with sub-tabs:

Category Contains
Dashboard Current dasa, transits, strengths, upcoming
Chart & Varga Chart View (Planets & Data, Ashtakavarga), Planets, Houses & Chalit, Varga Charts, Yogas
Strengths Shadbala, Arudha & Karaka, Ashtakavarga
Dasas Dasa Periods with interactive bar chart
Transits & Tajaka Transits, Tajaka & TP, Mundane
Special Matchmaking, Prasna, Muhurta (incl. Choghadiya), KP, Remedies
AI & Learn AI Chat, AI Teacher, Knowledge, Reading
Tools Ephemeris

Getting started: Fill form → "Find" city → "Now" button → "Calculate"

Supported AI Models

Prompt templates, thinking behavior and context needs differ per model, so only this slate is verified (eval harness) and guaranteed:

Pick Model (LM Studio key) For
Quality mistralai/ministral-3-14b-reasoning Best entities/faithfulness; slow on small GPUs
Speed/VRAM qwen/qwen3.5-9b (clean instruct release) Fits 8GB VRAM, fast; weaker entity tracking

Set it in the AI tab's Prefer field (or CLI --preferred-model); the app auto-loads it with a VRAM-safe context and never unloads your own models. Roleplay/abliterated merges and ultra-low quants (IQ1_S) confabulate lore — avoid them for readings. Anything outside the slate may work but is not guaranteed.

Full audit trail, per-model scorecards and setup laws: docs/AI_LESSONS.md.

Astrologer adapter (optional)

A domain LoRA — openjyotish-astrologer-lora-vN — is published with each release to cut verifier flags on readings. It assists wording only; the engine still owns every fact and verify-repair stays on. Dataset generation, the Unsloth recipe, the eval harness and the LM Studio / Ollama / Unsloth Studio loader steps (plus the --provider/--model/--url setting) are in tools/train/README.md.

TUI

openjyotish tui — interactive terminal app with the same 9-category structure.
Arrow keys ↑↓ to navigate, letters to jump, Enter to select, b to go back, q to quit.

Main Menu:
  1  Birth Data Input          d  Dashboard
  c  Chart & Varga             s  Strengths
  a  Dasas & Timing            t  Transits & Tajaka
  x  Special                   i  AI & Knowledge
  u  Tools                     q  Quit

AI Tool-Calling (JSON API)

One command, everything computed. Pipe to AI agents, jq, or Python:

openjyotish analyze "birthdata"
# → 10KB JSON — 21 sections, every calculation

# Pipe it around
openjyotish analyze "..." | jq '.planets.Su.house'
openjyotish analyze "..." | jq '.dasa.mahadashas[] | select(.current)'
openjyotish analyze "..." | jq '.dasa.systems'   # current MD in every dasa system
openjyotish analyze "..." | jq '.choghadiya.current'   # current Choghadiya slot
openjyotish analyze "..." | jq '.muhurta_adjuncts.chandra_bala'   # daily adjunct grades
import json, subprocess
data = json.loads(subprocess.run(
    ["openjyotish", "analyze", birthdata], capture_output=True, text=True
).stdout)

All CLI Commands (42)

Command What it does
chart Rasi chart + planets + upagrahas + outer planets (--nodes mean/true, --chalit + --bhava-method default/sripati)
analyze AI-friendly JSON dump (28 sections, incl. Sade Sati timeline, dasa entry)
shadbala Six-fold planetary strength (+ --bhava + --vimsopaka)
kuja-dosha Kuja Dosha (Mangal Dosha) Mars affliction
yogas Detect 200+ planetary combinations
ashtakavarga BAV, SAV, Sodhya Pinda, Kakshya bindu, Bala reduction stages (--bala)
dasa Dasa periods for any system: vimsottari/ashtottari/yogini/sudasa/chara/narayana/kalachakra/brahma/karaka/shoola/trikona/varnada/sthira/navamsa/yogardha/niryana-shoola/lagna-kendradi/drig/sudarshana/moola/tara/lagnamsaka/padanaathaamsa/rasi-bhukta-vimsottari (MD/AD; system positional, --karaka-role for karaka, --house for shoola)
dasa-timeline Text bar chart with now-marker
dasa-chart Period tree around the running period (MD → AD → PD; --at, --depth)
dasa-entry Entry chart — sky at a period's opening (PATH like Jupiter/Saturn; --system)
conditional-dasas List additional dasa systems that apply
transit Current transits with SAV scores and gochara vedha (obstruction)
sade-sati Sade Sati phase dates (12th/peak/2nd) + Kantaka/Ashtama Shani timeline
special-points Baadhaka sthana, Pushkara navamsa/bhaga, Mrityu bhaga, 64th navamsa, 22nd drekkana
maitri Graha Maitri — natural, temporal and compound (Panchadha) friendship tables
tajaka Tajaka return charts — annual/monthly/2.5-day/5-hr/25-min/2-min (--level, --index, --sunrise, --vimshottari sesham/full from the return Moon) + Tajaka yogas on CLI/GUI
tithi-pravesha Annual solar-tithi ingress
progression Secondary progressions (1 day = 1 year)
kuta Marriage compatibility (Porutham + Ashta Koota)
prasna Horary (108/249/Nadi modes)
muhurta Electional — 11 task types (+ --adjuncts daily table, --janma-nakshatra Bala grades)
choghadiya 8 day + 8 night auspicious/inauspicious time slots
hora Planetary hours — 24 horas (12 day + 12 night) in Chaldean order
mundane World events, eclipses, ingresses
compare Natal vs transit or two-chart comparison
interpret Rule-based chart reading
traditional-report Formatted traditional-style chart report
knowledge Search Vedic textbooks provided by you in txt format
ai LLM chart reading (Ollama/LM Studio/Unsloth)
teach AI Teacher — learn Vedic astrology
export HTML report — positions, strengths (incl. per-varga), ashtakavarga, yogas, sahamas, special lagnas, arudhas, karakas, KP, chalit, dasa, transits, Sade Sati timeline
ephemeris Daily planet table
varga Any divisional chart (D-1 to D-150)
navamsa D-9 Navamsa
vargottama Planets/lagna holding the same rasi in D-1 and each varga (D-9 classical)
panchanga Monthly calendar (paksha/tithi/nakshatra/yoga/karana, sunrise/sunset, rahu kalam; --adjuncts adds Durmuhurta/Varjya)
chakras Sarvatobhadra + Kota chakras
lagnas All special lagnas with meanings
kp Krishnamurti Paddhati — Placidus cusp/planet lord chains, Ruling Planets, bhava significators, and the KP view of the Vimsottari dasa (--ayanamsa krishnamurti, --when)
sphutas Prasna Marga auspicious points (Tri/Chatus/Pancha/Prana/Deha/Mrityu/Beeja/Kshetra/Yoga)
upagrahas Solar + temporal (Gulika/Mandi) sub-planets
remedies Rule-based remedies — Ishta/Palana devata, gemstone, mantra, yantra, charity, dasha-lord, doshas; --partner adds marriage doshas (sourced)
learning Marana karaka, KP sub-lords, vaiseshikamsas
tui Launch interactive terminal UI
gui Launch desktop GUI

Features

Calculation Engine

Rasi chart (D-1) with South/North/East styles · 23 varga charts (D-2 to D-150) · 32 dasa systems (incl. Moola + Tara + Narayana variants) · 8 conditional dasas · Shadbala · Bhava Bala (per-varga) · Vimsopaka Bala (5 schemes incl. Dwadasa Vargeeya) · 200+ yogas · 36 Sahamas · Rule-based remedies · Ashtakavarga (BAV/SAV/Kakshya) · Arudha Padas · Chara Karakas · 36 Sahamas · 20 ayanamsa modes (Lahiri/Raman/KP/Fagan/Tropical/etc.) · Outer planets (Uranus/Neptune/Pluto) · Upagrahas (5 solar + Gulika/Mandi) · Special lagnas (Bhrigu Bindu/Indu/Varnada/Pranapada/Vighati) · KP mode — Placidus cusp/planet lord chains, Ruling Planets, sub-lords (5 levels) · Chalit/Bhava charts (any varga) Tattva dignities · Jaimini rasi strength · Graha-drishti API (give/receive) · JSON-LD export (analyze --jsonld)

Forecasting

Transits with SAV scores · Tajaka solar return · Tithi Pravesha · Progressions · Dasa timeline · Mundane (ingresses/eclipses/conjunctions) · Matchmaking (10 Porutham + Ashta Koota 36pt) · Muhurta · Choghadiya · Hora · Prasna

AI & Data

Local LLM (Ollama/LM Studio/Unsloth) · RAG pipeline with textbook citations · AI Teacher mode · 8 AI topic templates · Context budgeting for small models · LM Studio setup guard (preferred model auto-load with VRAM-safe context) · Mechanical answer verification (every reading checked against computed data) · Unified SQLite DB (atlas 34K cities + knowledge + charts) · HTML export · JHD import/export · Chart browser · JSON API for AI agents

Architecture

src/jhora/
├── types/          Enums: Graha, Rasi, Nakshatra, Varga, Bhava, Dasa
├── ephemeris/      Swiss Ephemeris wrapper (18 API functions)
├── charts/         ChartBuilder, ChartData (frozen), VargaChartComputer
├── calc/           29 modules: strengths, yogas, dasas, transits, chakras...
├── dasas/          32 dasa systems (+ shared Jaimini core)
├── ai/             AI engine, RAG pipeline, JSON export, teacher
├── interpreter/    Chart reading, knowledge base
├── export/         HTML report generator
├── io/             Atlas (SQLite/FTS5), JHD parser
├── core/           Unified database
├── cli/            Typer CLI (42 commands)
├── tui/            prompt_toolkit menu system
└── ui/             PyQt6 GUI (8-category tabs, chart widget, dasa timeline)

💬 Community & Support

If you want to discuss the project, ask questions, or share your own astrology software tools, join our official community on Reddit: r/AstrologySoftware.

Traditions & Lineage

No single sampradaya — like the classical compendium tradition itself, this toolkit follows an eclectic school with a clear backbone:

  • Parashara core (Brihat Parashara Hora Shastra): Lahiri ayanamsa, whole-sign Rasi houses, Vimsottari dasa, Shadbala, Ashtakavarga — the mainstream North-Indian practice most software implements.
  • Jaimini integration (SJC / Sanjay Rath lineage, via P.V.R. Narasimha Rao's integrated approach): Arudha Padas, Chara Karakas, Rasi dasas (Chara, Narayana, Sudasa).
  • Karnataka muhurta (B.V. Raman): electional rules, Panchaka-Rahita, Durmuhurta/Varjya.
  • Krishnamurti elements: KP sub-lords for stellar precision.
  • Tajaka annual horoscopy: Indo-Persian Varshaphala (solar returns, Muntha, Mudda/Patyayini dasas).

Purists of any single tradition will find foreign bodies here; that mixing is the school this project continues.

Credits

Methodology follows the PVR Narasimha Rao / Sri Jagannath Centre tradition; classical texts are cited per module.
Atlas data: GeoNames.org (CC BY 4.0).

License

GNU GENERAL PUBLIC LICENSE v3.0 — free forever.
Modifications must remain open. Network use counts as distribution.

Release files for openjyotish 1.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openjyotish 1.8.0
File Size Uploaded
openjyotish-1.8.0.tar.gz 1.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for openjyotish 1.8.0
File Interpreter ABI Platform
openjyotish-1.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.2 MB

Release files / openjyotish-1.8.0.tar.gz

Download URL openjyotish-1.8.0.tar.gz
Size 1.6 MB
Tags Source
SHA-256 checksum
How to use checksums
7eadf9b36e73a7d3146c7221384563d9256ce658c84991d80ee70ab9861bca16
BLAKE2b-256 checksum
How to use checksums
68ddbb354defbb42324d4004746e9909035d42a4865a07208ed6ebbd79e51e71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / openjyotish-1.8.0-py3-none-any.whl

Download URL openjyotish-1.8.0-py3-none-any.whl
Size 1.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
f99975dd7d029fc1d272dffac25e3bb70a52607dbb85433b38904f68c02e8c01
BLAKE2b-256 checksum
How to use checksums
15594a319f35d27c64ee9d6759face0588dce6d35fd23ef791fff212ed72c744
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

1.8.1

2 release files

This release

1.8.0 This release

2 release files

1.7.0

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page