thoth-cli 0.2.14 → 0.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,12 +8,19 @@ A powerful astrological calculation CLI built on [Kerykeion](https://github.com/
8
8
 
9
9
  - **Natal Charts** — Full birth charts with planets, houses, aspects, and balances
10
10
  - **Transits** — Current planetary positions relative to your natal chart
11
- - **Moon Phases** — Current lunar phase and position
11
+ - **Solar Returns** — Annual birthday charts for year-ahead themes
12
+ - **Lunar Returns** — Monthly emotional cycle charts
13
+ - **Synastry** — Relationship compatibility between two charts
14
+ - **Composite Charts** — Merged relationship chart (midpoint method)
15
+ - **Progressions** — Secondary progressions (day-for-a-year)
16
+ - **Solar Arc** — Solar arc directions for timing
17
+ - **Horary** — Question-based divination charts with traditional rules
12
18
  - **Ephemeris** — Position of any celestial body on any date
19
+ - **Ephemeris Range** — Track a planet through signs over time
20
+ - **Moon Phases** — Current lunar phase and position
13
21
  - **Symbol Reference** — Complete guide to astrological symbols and meanings
14
- - **Kabbalistic Colors** — Sephirotic color correspondences throughout
22
+ - **Sephirotic Colors** — Kabbalistic color correspondences throughout
15
23
  - **JSON Output** — Machine-readable output for AI/automation
16
- - **City Geocoding** — Use city names instead of coordinates
17
24
 
18
25
  ## Installation
19
26
 
@@ -21,100 +28,215 @@ A powerful astrological calculation CLI built on [Kerykeion](https://github.com/
21
28
  npm install -g thoth-cli
22
29
  ```
23
30
 
24
- **Requirements:**
25
- - Node.js 18+
26
- - Python 3.10+
27
-
28
- The Python core (Kerykeion) installs automatically.
31
+ The binary downloads automatically on first install (~18MB).
29
32
 
30
33
  ## Quick Start
31
34
 
32
35
  ```bash
33
- # Calculate a natal chart
34
- thoth chart --date 1879-03-14 --time 11:30 --city "Ulm" --nation "DE" --name "Einstein"
36
+ # Natal chart
37
+ thoth chart --date 1991-07-08 --time 14:06 --city "New York"
38
+
39
+ # Current transits
40
+ thoth transit --natal-date 1991-07-08 --natal-time 14:06 --city "New York"
35
41
 
36
- # Get current transits to a natal chart
37
- thoth transit --natal-date 1879-03-14 --natal-time 11:30 --city "Ulm" --nation "DE"
42
+ # Solar return for 2026
43
+ thoth solar-return --natal-date 1991-07-08 --natal-time 14:06 --city "New York" --year 2026
38
44
 
39
- # Current moon phase
45
+ # Horary divination
46
+ thoth horary --question "Should I take the job?" --city "New York"
47
+
48
+ # Relationship synastry
49
+ thoth synastry --date1 1991-07-08 --time1 14:06 --city1 "NYC" \
50
+ --date2 1990-03-15 --time2 09:30 --city2 "LA"
51
+
52
+ # Moon phase
40
53
  thoth moon
41
54
 
42
- # Where is Pluto right now?
55
+ # Where is Pluto?
43
56
  thoth ephemeris --body pluto
44
57
 
45
- # Symbol reference guide
58
+ # Symbol reference
46
59
  thoth key
47
60
  ```
48
61
 
62
+ ---
63
+
49
64
  ## Commands
50
65
 
51
- ### `thoth chart`
66
+ ### `thoth chart` — Natal Chart
52
67
 
53
- Calculate a natal chart.
68
+ Calculate a complete birth chart.
54
69
 
55
70
  ```bash
56
- thoth chart --date 1879-03-14 --time 11:30 --city "Ulm" --nation "DE" --name "Einstein"
71
+ thoth chart --date 1991-07-08 --time 14:06 --city "New York"
72
+ thoth chart --date 1991-07-08 --time 14:06 --lat 40.7128 --lng -74.0060
73
+ thoth chart --date 1991-07-08 --time 14:06 --city "New York" --svg-file chart.svg
57
74
  ```
58
75
 
59
- **Options:**
60
76
  | Flag | Description | Required |
61
77
  |------|-------------|----------|
62
78
  | `--date` | Birth date (YYYY-MM-DD) | Yes |
63
79
  | `--time` | Birth time (HH:MM) | Yes |
64
80
  | `--city` | City name | Yes* |
65
- | `--nation` | Country code (US, UK, DE, etc.) | No (default: US) |
66
- | `--lat` | Latitude | Yes* |
67
- | `--lng` | Longitude | Yes* |
81
+ | `--nation` | Country code (default: US) | No |
82
+ | `--lat` / `--lng` | Coordinates | Yes* |
68
83
  | `--name` | Name for the chart | No |
84
+ | `--svg` | Output SVG chart | No |
85
+ | `--svg-file` | Save SVG to file | No |
69
86
  | `--json` | Output raw JSON | No |
70
87
 
71
88
  *Either `--city` or both `--lat` and `--lng` required.
72
89
 
73
- **Output includes:**
74
- - Ascendant and Midheaven
75
- - All 10 planets + Chiron, Lilith, Nodes
76
- - House placements
77
- - All 12 house cusps
78
- - Element balance (Fire/Earth/Air/Water)
79
- - Modality balance (Cardinal/Fixed/Mutable)
80
- - Top 15 natal aspects
81
- - Lunar phase at birth
82
-
83
90
  ---
84
91
 
85
- ### `thoth transit`
92
+ ### `thoth transit` — Current Transits
86
93
 
87
- Calculate current transits to a natal chart.
94
+ Calculate transits to a natal chart.
88
95
 
89
96
  ```bash
90
- thoth transit --natal-date 1879-03-14 --natal-time 11:30 --city "Ulm" --nation "DE"
91
- thoth transit --natal-date 1879-03-14 --natal-time 11:30 --city "Ulm" --nation "DE" --orb 1
92
- thoth transit --natal-date 1879-03-14 --natal-time 11:30 --city "Ulm" --nation "DE" --transit-date 2027-01-15
97
+ thoth transit --natal-date 1991-07-08 --natal-time 14:06 --city "New York"
98
+ thoth transit --natal-date 1991-07-08 --natal-time 14:06 --city "NYC" --orb 1
93
99
  ```
94
100
 
95
- **Options:**
96
101
  | Flag | Description | Required |
97
102
  |------|-------------|----------|
98
- | `--natal-date` | Birth date (YYYY-MM-DD) | Yes |
99
- | `--natal-time` | Birth time (HH:MM) | Yes |
103
+ | `--natal-date` | Birth date | Yes |
104
+ | `--natal-time` | Birth time | Yes |
100
105
  | `--city` | City name | Yes* |
101
- | `--nation` | Country code | No (default: US) |
102
106
  | `--lat` / `--lng` | Coordinates | Yes* |
103
107
  | `--transit-date` | Transit date (default: today) | No |
104
108
  | `--orb` | Aspect orb in degrees (default: 3) | No |
105
109
  | `--json` | Output raw JSON | No |
106
110
 
111
+ ---
112
+
113
+ ### `thoth solar-return` — Annual Chart
114
+
115
+ Calculate solar return chart for a specific year.
116
+
117
+ ```bash
118
+ thoth solar-return --natal-date 1991-07-08 --natal-time 14:06 --city "NYC" --year 2026
119
+ ```
120
+
121
+ | Flag | Description | Required |
122
+ |------|-------------|----------|
123
+ | `--natal-date` | Birth date | Yes |
124
+ | `--natal-time` | Birth time | Yes |
125
+ | `--city` | City name | Yes |
126
+ | `--year` | Return year | Yes |
127
+ | `--json` | Output raw JSON | No |
128
+
129
+ ---
130
+
131
+ ### `thoth lunar-return` — Monthly Chart
132
+
133
+ Calculate next lunar return from a given date.
134
+
135
+ ```bash
136
+ thoth lunar-return --natal-date 1991-07-08 --natal-time 14:06 --city "NYC" --from 2026-03-01
137
+ ```
138
+
139
+ | Flag | Description | Required |
140
+ |------|-------------|----------|
141
+ | `--natal-date` | Birth date | Yes |
142
+ | `--natal-time` | Birth time | Yes |
143
+ | `--city` | City name | Yes |
144
+ | `--from` | Date to search from | Yes |
145
+ | `--json` | Output raw JSON | No |
146
+
147
+ ---
148
+
149
+ ### `thoth synastry` — Relationship Aspects
150
+
151
+ Calculate synastry aspects between two charts.
152
+
153
+ ```bash
154
+ thoth synastry --date1 1991-07-08 --time1 14:06 --city1 "NYC" \
155
+ --date2 1990-03-15 --time2 09:30 --city2 "LA"
156
+ ```
157
+
158
+ | Flag | Description | Required |
159
+ |------|-------------|----------|
160
+ | `--date1` / `--time1` | Person 1 birth data | Yes |
161
+ | `--city1` or `--lat1/--lng1` | Person 1 location | Yes |
162
+ | `--date2` / `--time2` | Person 2 birth data | Yes |
163
+ | `--city2` or `--lat2/--lng2` | Person 2 location | Yes |
164
+ | `--orb` | Aspect orb (default: 6) | No |
165
+ | `--json` | Output raw JSON | No |
166
+
167
+ ---
168
+
169
+ ### `thoth composite` — Relationship Chart
170
+
171
+ Calculate composite (midpoint) chart for a relationship.
172
+
173
+ ```bash
174
+ thoth composite --date1 1991-07-08 --time1 14:06 --city1 "NYC" \
175
+ --date2 1990-03-15 --time2 09:30 --city2 "LA"
176
+ ```
177
+
178
+ Same options as synastry. Creates a merged chart representing the relationship itself.
179
+
180
+ ---
181
+
182
+ ### `thoth progressions` — Secondary Progressions
183
+
184
+ Calculate secondary progressions (day-for-a-year method).
185
+
186
+ ```bash
187
+ thoth progressions --natal-date 1991-07-08 --natal-time 14:06 --city "NYC" \
188
+ --target-date 2026-03-01
189
+ ```
190
+
191
+ | Flag | Description | Required |
192
+ |------|-------------|----------|
193
+ | `--natal-date` | Birth date | Yes |
194
+ | `--natal-time` | Birth time | Yes |
195
+ | `--city` or `--lat/--lng` | Birth location | Yes |
196
+ | `--target-date` | Progression target date | Yes |
197
+ | `--json` | Output raw JSON | No |
198
+
199
+ ---
200
+
201
+ ### `thoth solar-arc` — Solar Arc Directions
202
+
203
+ Calculate solar arc directions (all planets advance by Sun's arc).
204
+
205
+ ```bash
206
+ thoth solar-arc --natal-date 1991-07-08 --natal-time 14:06 --city "NYC" \
207
+ --target-date 2026-03-01
208
+ ```
209
+
210
+ Same options as progressions. Shows directed positions and aspects to natal.
211
+
212
+ ---
213
+
214
+ ### `thoth horary` — Question Divination
215
+
216
+ Cast a horary chart for yes/no or situational questions.
217
+
218
+ ```bash
219
+ thoth horary --question "Should I take the job?" --city "New York"
220
+ thoth horary --question "Will we reconcile?" --lat 40.7128 --lng -74.0060
221
+ ```
222
+
223
+ | Flag | Description | Required |
224
+ |------|-------------|----------|
225
+ | `--question` | Your question | Yes |
226
+ | `--city` or `--lat/--lng` | Your current location | Yes |
227
+ | `--json` | Output raw JSON | No |
228
+
107
229
  **Output includes:**
108
- - Current sky (all planets with signs, degrees, houses)
109
- - Side-by-side house comparison (transit vs natal)
110
- - Transit-to-natal aspects with orbs
111
- - House flow notation (e.g., 2H→4H)
112
- - Current lunar phase
113
- - Retrograde indicators
230
+ - Planetary hour and day ruler
231
+ - Strictures against judgment (void of course, etc.)
232
+ - Querent significator (1st house ruler)
233
+ - Quesited significator (relevant house ruler)
234
+ - Moon's last and next aspects
235
+ - Reception and dignity analysis
114
236
 
115
237
  ---
116
238
 
117
- ### `thoth moon`
239
+ ### `thoth moon` — Lunar Phase
118
240
 
119
241
  Get current moon phase and position.
120
242
 
@@ -123,15 +245,9 @@ thoth moon
123
245
  thoth moon --date 2026-03-14
124
246
  ```
125
247
 
126
- **Options:**
127
- | Flag | Description |
128
- |------|-------------|
129
- | `--date` | Date (default: today) |
130
- | `--json` | Output raw JSON |
131
-
132
248
  ---
133
249
 
134
- ### `thoth ephemeris`
250
+ ### `thoth ephemeris` — Planet Position
135
251
 
136
252
  Get the position of any celestial body.
137
253
 
@@ -140,38 +256,49 @@ thoth ephemeris --body pluto
140
256
  thoth ephemeris --body saturn --date 2027-01-15
141
257
  ```
142
258
 
143
- **Options:**
259
+ **Bodies:** sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto
260
+
261
+ ---
262
+
263
+ ### `thoth ephemeris-range` — Track Planet Over Time
264
+
265
+ Get ephemeris positions over a date range.
266
+
267
+ ```bash
268
+ thoth ephemeris-range --body pluto --from 2024-01-01 --to 2030-01-01 --step month
269
+ ```
270
+
144
271
  | Flag | Description | Required |
145
272
  |------|-------------|----------|
146
- | `--body` | Celestial body (sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto) | Yes |
147
- | `--date` | Date (default: today) | No |
148
- | `--json` | Output raw JSON | No |
273
+ | `--body` | Celestial body | Yes |
274
+ | `--from` | Start date | Yes |
275
+ | `--to` | End date | Yes |
276
+ | `--step` | Interval: day, week, month | No (default: month) |
149
277
 
150
278
  ---
151
279
 
152
- ### `thoth key`
280
+ ### `thoth key` — Symbol Reference
153
281
 
154
- Display the complete symbol reference guide.
282
+ Display the complete astrological symbol reference.
155
283
 
156
284
  ```bash
157
285
  thoth key
158
286
  ```
159
287
 
160
- Includes:
161
- - **Planets**Meanings, rulerships, Sephirotic correspondences
162
- - **Points** — Chiron, Lilith, Nodes
163
- - **Zodiac Signs**Element, modality, ruler, mantra
164
- - **Houses**Life areas for all 12 houses
165
- - **Aspects**Degrees, meanings, Hermetic colors
166
- - **Elements** Signs, temperaments, Jungian functions
167
- - **Modalities**Cardinal, Fixed, Mutable
168
- - **Dignities** — Domicile, Exaltation, Detriment, Fall
288
+ **Includes:**
289
+ - Planets — meanings, rulerships, Sephirotic correspondences
290
+ - Points — Chiron, Lilith, Nodes
291
+ - Zodiac Signs — element, modality, ruler, "I AM" mantras
292
+ - Houses — all 12 life areas
293
+ - Aspects — degrees, meanings, orbs
294
+ - Elements & Modalities
295
+ - Dignitiesdomicile, exaltation, detriment, fall
169
296
 
170
297
  ---
171
298
 
172
299
  ## Color System
173
300
 
174
- thoth-cli uses a **Kabbalistic color system** based on Sephirotic correspondences:
301
+ thoth-cli uses **Sephirotic colors** based on Kabbalistic correspondences:
175
302
 
176
303
  | Planet | Sephira | Color |
177
304
  |--------|---------|-------|
@@ -186,8 +313,6 @@ thoth-cli uses a **Kabbalistic color system** based on Sephirotic correspondence
186
313
  | ♆ Neptune | — | Sea Green |
187
314
  | ♇ Pluto | — | Dark Red |
188
315
 
189
- Zodiac signs inherit their ruling planet's color. Aspects inherit their corresponding Sephira's color.
190
-
191
316
  ---
192
317
 
193
318
  ## JSON Output
@@ -195,81 +320,54 @@ Zodiac signs inherit their ruling planet's color. Aspects inherit their correspo
195
320
  All commands support `--json` for programmatic use:
196
321
 
197
322
  ```bash
198
- thoth chart --date 1879-03-14 --time 11:30 --city "Ulm" --nation "DE" --json
323
+ thoth chart --date 1991-07-08 --time 14:06 --city "NYC" --json
324
+ thoth horary --question "Test" --city "NYC" --json
199
325
  ```
200
326
 
201
- Perfect for AI agents, automation, and integration with other tools.
327
+ Perfect for AI agents, automation, and integration.
202
328
 
203
329
  ---
204
330
 
205
- ## Examples
206
-
207
- ### Famous Charts
208
-
209
- ```bash
210
- # Albert Einstein — Pisces Sun, Sagittarius Moon
211
- thoth chart --date 1879-03-14 --time 11:30 --city "Ulm" --nation "DE" --name "Einstein"
212
-
213
- # Carl Jung — Leo Sun, Taurus Moon
214
- thoth chart --date 1875-07-26 --time 19:29 --city "Kesswil" --nation "CH" --name "Jung"
215
-
216
- # Nikola Tesla — Cancer Sun, Libra Moon
217
- thoth chart --date 1856-07-10 --time 00:00 --city "Smiljan" --nation "HR" --name "Tesla"
218
- ```
219
-
220
- ### Transit Analysis
331
+ ## Privacy
221
332
 
222
- ```bash
223
- # Current transits with tight orb
224
- thoth transit --natal-date 1879-03-14 --natal-time 11:30 --city "Ulm" --nation "DE" --orb 1
333
+ **thoth-cli collects no data. Ever.**
225
334
 
226
- # Future transits
227
- thoth transit --natal-date 1879-03-14 --natal-time 11:30 --city "Ulm" --nation "DE" --transit-date 2027-01-15
228
- ```
335
+ - All calculations run locally
336
+ - No analytics, no telemetry, no tracking
337
+ - ✅ No network requests except city geocoding (via GeoNames)
338
+ - ✅ Your birth data stays on your machine
229
339
 
230
340
  ---
231
341
 
232
- ## Architecture
342
+ ## Environment Variables
233
343
 
234
- ```
235
- thoth-cli/
236
- ├── packages/
237
- │ ├── core/ # Python calculations (Kerykeion + Swiss Ephemeris)
238
- │ │ ├── thoth_core/
239
- │ │ │ ├── __init__.py
240
- │ │ │ └── cli.py
241
- │ │ └── pyproject.toml
242
- │ └── cli/ # TypeScript CLI (Commander.js)
243
- │ ├── src/
244
- │ │ ├── bin.ts
245
- │ │ └── lib/
246
- │ │ ├── core.ts
247
- │ │ └── format.ts
248
- │ └── package.json
249
- ├── CHANGELOG.md
250
- └── README.md
251
- ```
344
+ | Variable | Purpose |
345
+ |----------|---------|
346
+ | `KERYKEION_GEONAMES_USERNAME` | Custom GeoNames username for geocoding (optional, avoids rate limits) |
347
+
348
+ Get a free username at [geonames.org/login](https://www.geonames.org/login)
252
349
 
253
350
  ---
254
351
 
255
352
  ## Development
256
353
 
257
354
  ```bash
258
- # Clone
259
355
  git clone https://github.com/aklo360/thoth-cli.git
260
356
  cd thoth-cli
261
357
 
262
- # Install Python dependencies
358
+ # Python core
263
359
  cd packages/core
360
+ python -m venv .venv
361
+ source .venv/bin/activate
264
362
  pip install -e .
265
363
 
266
- # Install TypeScript dependencies and build
364
+ # TypeScript CLI
267
365
  cd ../cli
268
366
  npm install
269
367
  npm run build
270
368
 
271
- # Run locally
272
- node dist/bin.js chart --date 1879-03-14 --time 11:30 --city "Ulm" --nation "DE"
369
+ # Test
370
+ node dist/bin.js chart --date 1991-07-08 --time 14:06 --city "New York"
273
371
  ```
274
372
 
275
373
  ---
@@ -282,19 +380,6 @@ node dist/bin.js chart --date 1879-03-14 --time 11:30 --city "Ulm" --nation "DE"
282
380
 
283
381
  ---
284
382
 
285
- ## Privacy
286
-
287
- **thoth-cli collects no data. Ever.**
288
-
289
- - ✅ All calculations run locally on your machine
290
- - ✅ No analytics, no telemetry, no tracking
291
- - ✅ No network requests except geocoding (via Geonames)
292
- - ✅ Your birth data stays on your computer
293
-
294
- The oracle sees but does not record.
295
-
296
- ---
297
-
298
383
  ## License
299
384
 
300
385
  **MIT** — Use it for anything. Free forever.
Binary file
package/dist/bin.js CHANGED
@@ -88,7 +88,7 @@ EPHEMERIS & MOON
88
88
  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
89
89
  REFERENCE
90
90
  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
91
- thoth key # full symbol reference`).version("0.2.14");
91
+ thoth key # full symbol reference`).version("0.2.15");
92
92
  program.command("chart").description("Calculate a natal chart").requiredOption("--date <date>", "Birth date (YYYY-MM-DD)").requiredOption("--time <time>", "Birth time (HH:MM)").option("--lat <lat>", "Latitude", parseFloat).option("--lng <lng>", "Longitude", parseFloat).option("--city <city>", "City name").option("--nation <nation>", "Country code", "US").option("--name <name>", "Name", "Subject").option("--json", "Output raw JSON").option("--svg", "Output SVG chart").option("--svg-file <path>", "Save SVG to file").action(async (options) => {
93
93
  if (!options.city && (!options.lat || !options.lng)) {
94
94
  console.error(chalk.red("Error: Must provide either --city or both --lat and --lng"));
@@ -665,6 +665,6 @@ program.command("key").description("Symbol reference guide").action(() => {
665
665
  console.log("");
666
666
  });
667
667
  console.log(chalk.dim(""));
668
- console.log(chalk.yellow(" \u{1315D}") + chalk.dim(" thoth-cli v0.2.14"));
668
+ console.log(chalk.yellow(" \u{1315D}") + chalk.dim(" thoth-cli v0.2.15"));
669
669
  console.log(chalk.dim(""));
670
670
  program.parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thoth-cli",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "description": "𓅝 Astrological calculations from the command line. Swiss Ephemeris precision. Built for humans and agents.",
5
5
  "author": "AKLO <aklo@aklolabs.com>",
6
6
  "license": "MIT",
@@ -14,7 +14,7 @@ import https from 'https';
14
14
 
15
15
  const __dirname = dirname(fileURLToPath(import.meta.url));
16
16
 
17
- const VERSION = '0.2.14';
17
+ const VERSION = '0.2.15';
18
18
  const REPO = 'aklo360/thoth-cli';
19
19
 
20
20
  // Use jsDelivr CDN for faster downloads (mirrors GitHub releases)