Nightbird is a Go library and CLI tool for classical Western astrology calculations.
Astronomical computations are based on the vsop87-go library (https://github.com/ilbagatto/vsop87-go).
The project focuses on a clean, testable core for building and analyzing astrological charts, with a minimal CLI for exploration and debugging.
- Planetary positions (10 bodies)
- Angles (Ascendant, Midheaven, etc.)
- House cusps (multiple systems)
- Placidus (default)
- Koch, Regiomontanus, Campanus, Topocentric
- Equal (Asc / MC / Sign)
- Morinus
- Configurable aspect sets
- Applying / separating motion
- Selection strategies for aspect conflicts on the same pair of objects:
- best by priority — prefers the aspect type with higher predefined priority
- best by orb — prefers the aspect with the tighter orb
- Distribution by elements (Fire, Earth, Air, Water)
- Distribution by qualities (Cardinal, Fixed, Mutable)
- Based on 10 planetary bodies
Build the CLI locally:
go build -o nb ./cmd/nbThen run it from the project root or move the binary to a directory in your PATH.
The nb command provides a simple interface for inspecting charts.
nb -view positions -when 2025-10-02T08:00:00Z -lat 42.6977 -lon 23.3219
Shows:
- longitude
- latitude
- daily motion
- house position
nb -view houses -hsystem Placidus -when ... -lat ... -lon ...
Outputs house cusps for the selected system.
nb -view aspects -when ... -lat ... -lon ...
Shows detected aspects with:
- orb
- applying / separating motion
nb -view balance -when ... -lat ... -lon ...
Displays distribution of planets by:
- elements
- qualities
Run the full test suite:
go test ./...Run tests for a specific package:
go test ./pkg/chart/...Nightbird is organized into small, focused packages:
chart— high-level orchestration (positions, houses, aspects, balance)houses— house system calculationsaspects— aspect detection and selectiontypes— core astrological categories (objects, elements, qualities)skyctx— astronomical context
The design principle is:
chart = orchestration, packages = pure calculations
First iteration complete:
- positions
- houses
- aspects
- basic balance (elements & qualities)
Next steps:
- GUI layer
- predictive techniques
- synastry
MIT