HARP - Horizon-Aware Recommender and Planner for deep-sky astrophotography sessions

A CLI planner for deep-sky astrophotography sessions. Given a date, a site, your telescope + camera, the real horizon of your spot and the Moon, HARP ranks the targets you can actually image tonight — usable windows, Moon impact, and mosaic framing tailored to your rig.

Version
CI
Python
GitHub issues
License: GPL v3
License: BSD-2
License: BSD-3
License: MIT

Full documentation — installation, usage, horizon measuring, configuration

Altitude charts

The typical flow: measure the horizon once → generate the .hrz → load it in N.I.N.A. and in HARP → plan the night → export the ranked targets (or the mosaic panels) straight into N.I.N.A.'s sequencer. See examples/ for a working config, horizon file, and sample outputs.

A harp is the celestial Lyre — the constellation Lyra, home of Vega and the Ring Nebula. And the acronym leads with the input most planners ignore: your horizon.

The distribution is harp-astro (the bare PyPI name is squatted by an empty project; a PEP 541 request is pending) — the installed package and the CLI command are plain harp.

Sites (position + .hrz + timezone) and optical setups (focal + sensor) live in sites.yaml, searched in the current directory and ~/.config/harp/. Precedence: CLI option > config value > built-in default. Details in the usage guide.

An Android frontend lives in android/: the same Python core, embedded on-device via Chaquopy, plus a horizon wizard that measures your skyline with the phone's sensors — true-north azimuths computed on-device (built-in World Magnetic Model, no manual declination), tap-to-record vertices, .hrz export.

Two ways to get an APK: CI (every push builds the harp-debug-apk artifact in the Android workflow — zero local setup) or a local build for the fast bugfix loop (gradle -p android :app:assembleDebug, headless toolchain, no Android Studio). Setup commands, phone transfer (HTTP or wireless adb), and the device test checklist: android/README.md.

Scripting/frontend note: harp plan --json, harp info --json, and harp mosaic --json emit machine-readable output over the stable harp.api surface.

Releases: ./release.sh --major|--minor|--patch|X.Y.Z (trunk model on main; tag push triggers CI → PyPI).

HPC/CFD researcher by day, balcony astrophotographer by night. Owns a Newton 200/800 f/4 and a balcony whose entire southern hemisphere is a wall. Measured the horizon with a phone compass while fending off a magnetized railing, then wrote a planner rather than accept that M8 belongs to the neighbours.

Large language model, second author, zero telescopes. Has never seen the night sky — or anything else — yet computed where the Moon would be at 03:46 and was right. Refactored the whole toolkit between dusk and dawn, no coffee involved; accepts payment in tokens and byte-identical CSVs.

Multi-licensed under GPL-3.0-or-later, BSD-2-Clause, BSD-3-Clause, and MIT — choose the one that fits your use. See licensing/.

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filter files by name, interpreter, ABI, and platform.

If you're not sure about the file name format, learn more about wheel file names.

Copy a direct link to the current filters

Details for the file harp_astro-0.1.5.tar.gz.

The following attestation bundles were made for harp_astro-0.1.5.tar.gz:

Details for the file harp_astro-0.1.5-py3-none-any.whl.