One-stop terminal app for amateur astronomers. Sky panel + telescope/eyepiece catalog in a single binary, sharing your location, Bortle rating, and conditions across both modes. Decides whether tonight is worth taking the telescope out for, then tells you which gear to grab.
Built on crust (TUI), with glow for inline images and orbit for ephemeris. Rust merger of astropanel (Ruby) and telescope-term (Ruby). Part of the Fe₂O₃ Rust terminal suite.
Sky mode with the sky chart for the selected hour:
The same sky full screen, on s:
Sky mode with NASA's Astronomy Picture of the Day:
Cross-mode T popup: every currently-visible body × every telescope+eyepiece combination from your gear catalog, with magnification, true field of view, and exit pupil:
Gear mode with the per-combination details pane: select a telescope and eyepiece and see magnification (with % of max-useful and a zone label), true FOV (with framing against Andromeda / Pleiades / Beehive / Orion Nebula / Moon / Jupiter / Mars), exit pupil with its eye-physiology category, the closest recommended target type, 2× Barlow yields, and notes pulled from the equipment record:
git clone https://github.com/isene/astro
cd astro
PATH="/usr/bin:$PATH" cargo build --release
ln -sf "$PWD/target/release/astro" ~/bin/astro
astroFirst launch prompts for location and migrates ~/.nova/config.yml and ~/.scope/data.json if they exist, so users coming from the predecessors carry their settings forward.
Press ? inside either mode for the full keybinding reference.
Plan your observations with weather, ephemeris, and events.
- 9-day weather forecast from met.no with hourly detail, cached 3 hours.
- Condition scoring (green / yellow / red) per your cloud, humidity, temperature, wind limits.
- Visibility bars for Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune. One bar per hour, one column per body.
- Moon phase rendered as the Moon-bar shade (new = dark, full = bright).
- Ephemeris table (RA, Dec, distance, rise, transit, set) for all bodies, computed against the IAU 2006 obliquity standard via orbit.
- Astronomical events from the in-the-sky.org RSS feed, in-line with the hour bracket.
- Tonight summary fallback when there are no notable events: moon phase + rise/set, planets above the horizon, constellations near the zenith for the date and hemisphere, Bortle hint.
- Sky chart for the selected hour, drawn by starmap in pixels or braille: 9,096 stars from the Yale Bright Star Catalogue, the constellation figures, the 219 Messier and Caldwell objects at their true size, and the sun, moon and planets where they actually are. Zenith at the centre, horizon at the rim, north up and east left. It sits in the main pane and follows the selected hour;
sgives it the whole screen. Offline, and the faintest star it plots follows your Bortle setting and the room it has. - Astronomy Picture of the Day (NASA APOD, cached per day).
- Inline image display via kitty / sixel / w3m / chafa.
- Julian Date in the header.
- Async fetches — background threads load events and images without blocking the UI.
Catalog telescopes, eyepieces, and miscellaneous equipment (barlows, focal reducers, filters, diagonals, finders). Astro computes focal ratio, magnitude limit, min/max magnification, separation limits, recommended eyepiece focal lengths for different targets, exit pupil, true field of view, and more. Tag combinations to build observation logs.
Press g from Sky mode to enter Gear mode; g again to flip back.
Three stacked panes plus a Scope×EP combo detail to the right of the Eyepieces pane:
- Telescopes (top, max 7 rows) — your scopes. The cursor row drives the per-EP figures shown below.
- Eyepieces (middle) — your EPs. Each row shows magnification, TFOV, exit pupil, and a target-class suitability ladder for the currently-selected scope.
- Scope × EP combo (right of Eyepieces) — narrative details of the selected scope+EP combination: magnification with a "% of max-useful" zone label, TFOV with framing comparisons, exit-pupil quality, best-target classification, 2× Barlow yields, and any notes from the equipment record.
- Misc (bottom) — barlows, focal reducers, filters, diagonals, finders, and anything else that isn't a scope or an EP.
Reading left to right:
| Token | Meaning |
|---|---|
astro vX.Y.Z |
Crate version. |
[Gear] |
Current mode (the other is Sky). |
[Telescopes] / [Eyepieces] / [Misc] |
Currently focused pane. TAB cycles. |
TS: N |
Number of tagged telescopes (not catalog count). |
EP: N |
Number of tagged eyepieces. |
Misc: N |
Number of tagged misc items. |
sort: on/off |
Whether each list is sorted (TS by aperture, EP by focal length). Toggle with o. |
<MGN @ Bortle N |
The Bortle-adjusted limiting magnitude in use, pulled from your Sky-mode site. |
The tag counts matter because Ctrl-O (observation log), x (CSV export), and the combo table all operate on tagged items. Tagging answers "what gear am I taking out tonight"; press SPACE on a row to flip its tag (a green ▐ marker appears next to the cursor).
| Col | Meaning |
|---|---|
| APP | Aperture (mm) |
| TFL | Focal length (mm) |
| F/? | Focal ratio (FL / APP) |
| <MGN | Magnitude limit (dimmest visible) — Bortle-adjusted from the Sky-mode setting |
| xEYE | Light gathering vs. the naked eye |
| MINx | Minimum usable magnification |
| MAXx | Maximum usable magnification |
| SEP-R / SEP-D | Rayleigh / Dawes separation limits (arcsec) |
| *FLD | Recommended eyepiece for star fields |
| GLXY | Recommended eyepiece for galaxies and nebulae |
| PLNT | Recommended eyepiece for planets and globular clusters |
| DBL* | Recommended eyepiece for planet details and double stars |
| >2*< | Recommended eyepiece for tight double stars |
| MOON | Smallest feature resolved on the Moon (m) |
| SUN | Smallest feature resolved on the Sun (km) |
| Col | Meaning |
|---|---|
| FL | Focal length (mm) |
| AFOV | Apparent field of view (degrees) |
| MAGX | Magnification |
| TFOV | True field of view (degrees) |
| PPL | Exit pupil (mm) |
| 2BLW | Magnification with a 2× Barlow lens |
| *FLD | ✓ if exit pupil > 6 mm (rich star fields) |
| GLXY | ✓ if exit pupil 3–6 mm (galaxies, nebulae) |
| PLNT | ✓ if exit pupil 1.5–3 mm (planets, globular clusters) |
| DBL* | ✓ if exit pupil 1–1.5 mm (doubles, planet detail) |
| >2*< | ✓ if exit pupil < 1 mm (tight doubles, splitting) |
The five suitability columns are mutually exclusive — exactly one ✓ per row, in the bucket the EP×scope combination falls into. With no scope selected, all five stay dim.
| Col | Meaning |
|---|---|
| Equipment | Free-text name |
| Kind | Free-text category (barlow, reducer, filter, diagonal, finder, Ha filter, …) |
| Factor | Magnification multiplier for barlows / reducers (e.g. 2.0 for a 2× barlow, 0.5 for a 0.5× reducer); - when not applicable |
| Notes | Free-text notes |
In Gear mode, select a telescope and an eyepiece and press f: the pair
joins the eyepiece set, saved in ~/.astro/combos.json. Add as many as
you like. In the full-screen sky chart, v draws each one as a circle
the size of its true field of view, round the crosshair, in its own
colour. Put the crosshair on M31 with / M31 and you see at once which
of your combos frames it. F in Gear mode lists the set, and x there
takes a pair out.
In the sky chart, put the crosshair on an object (/ M57 goes there)
and press a: it joins the plan for that night. A night ends at 08:00,
so 02:00 belongs to the evening before and 10:00 plans the coming one.
p shows the plan. Each target has its best time and how high it gets
then, when it is above 20°, and which combo in your eyepiece set frames
it best: the tightest field that holds it with room round it.
At the eyepiece, o marks a target seen: pick the combo by number
(Enter takes the best one) and say what you saw. The time is the clock's.
The night lives in ~/.astro/nights/<date>.json, and the same night is
written as a HyperList log, <date>.hl, for scribe. astro writes that
log again on every change, so notes go in through astro.
The observation log (Ctrl-O in Gear mode) lists tonight's best
deep-sky targets from all 219 objects: those that climb past 30° and
that your largest tagged telescope can show, brightest first.
The merge unlocks features neither standalone app could:
Tin Sky mode opens a popup listing each currently-visible body × every telescope+eyepiece combo from the Gear catalog, showing magnification, TFOV, and exit pupil. Combos that exceed the scope's useful max magnification get a⚠.- Bortle-aware magnitude limit: the
<MGNcolumn in Gear mode subtracts(Bortle - 3) × 0.4mag from the textbook dark-sky figure, so the displayed mag limit matches what you can actually see from your site. The applied Bortle is shown in the Gear mode header. - Observation log auto-fill (
Ctrl-Oin Gear): the generated log file is prepopulated with:- date, location, time, weather, moon phase, visible planets, and Bortle from the Sky-mode snapshot taken when you pressed
g; - tagged telescopes, eyepieces, and misc gear with their notes;
- a combination table (MAGX / TFOV / pupil) for every tagged scope × tagged EP pair;
- tonight's deep-sky targets: the Messier and Caldwell objects that climb past 30° tonight and that your largest tagged telescope can show;
- solar / H-α viewing tips — appended automatically when any tagged misc item is recognised as a solar filter (
solar,h-alpha,daystar,quark,coronado,lunt, …).
- date, location, time, weather, moon phase, visible planets, and Bortle from the Sky-mode snapshot taken when you pressed
| Key | Action |
|---|---|
? |
Help (centered popup) |
g |
Switch to Gear mode |
T |
Tonight's gear suggestions popup |
Ctrl-A |
A Claude session about the forecast and the selected hour (claude on the PATH); /exit comes back |
UP / DOWN, k / j |
Move row |
PgUP / PgDOWN, K / J |
Page |
HOME / END |
First / last hour |
e |
Show all upcoming astronomical events |
s |
Sky chart full screen; its keys are below |
A |
Astronomy Picture of the Day (covers the chart; ESC puts the sky back) |
ENTER |
Refresh current image |
r |
Redraw all panes |
R |
Refetch weather + events |
l |
Location name |
a / o |
Latitude / Longitude |
c |
Cloud limit (%) |
h |
Humidity limit (%) |
t |
Temperature lower limit (°C) |
w |
Wind limit (m/s) |
b |
Bortle scale (1–9) |
W |
Save config to ~/.astro/config.yml |
ESC |
Reset status line |
q / Q |
Quit |
| Key | Action |
|---|---|
h / l |
An hour back / on |
j / k |
A day on / back |
| arrows | Move the crosshair over the sky; the view follows it through the hours |
+ / - |
Zoom in / out |
Ctrl-A |
A Claude session about the chart and what is under the crosshair |
/ |
Go to an object: M31, C14, NGC 7000, part of a name, or the Sun, the Moon or a planet by name |
ENTER |
What is under the crosshair: kind, magnitude, size, constellation; for the Sun, the Moon or a planet, where it is (and how much of the Moon is lit) |
ENTER again |
Its picture from Wikipedia, in a box in the middle; f turns it as the naked eye, a telescope (south up) or a star diagonal (mirrored) shows it, q closes. Fetched once, kept in ~/.astro/images/ |
r in the picture |
The eyepiece view instead, and back: see below. The choice stays for the next object, and after astro restarts |
e in the eyepiece view |
The next combination of your eyepiece set |
+ - in the eyepiece view |
Lean in and back: the middle of the field up to 8× larger. A small field on a screen looks smaller than the same field filling the eyepiece; this makes up for it |
v |
The eyepiece set's circles round the crosshair, with a legend |
a |
Add the object under the crosshair to the night's plan |
p |
The night's plan (o seen, u not seen, x remove, ENTER go to it) |
d |
The Messier and Caldwell objects on / off |
0 |
The whole sky again |
[ / ] |
Fewer / more stars |
c / n |
Constellation lines / names |
q |
Back |
Photos of deep-sky objects show far more than any eye at a telescope. r shows the object as your eyepiece does instead.
- The sky comes from the Digitized Sky Survey (DSS2), through the CDS image service. It is cut to the true field of a combination from your eyepiece set, first the one that frames the object best.
- Only the part the eye catches stays: less as the telescope shrinks, less under a brighter Bortle sky. Stars stay points, down to what the telescope reaches.
- Grey, never white, inside a round field stop.
- With no eyepiece set, astro shows a 100 mm telescope with a field three times the object's size.
It is a model of the view, not a photo of it. The plates are kept in ~/.astro/images/dso/.
The Sun, the Moon and the planets move across the survey's plates, so they get their own eyepiece view:
- Each is at its true size in the field, from its distance tonight. At 50× Jupiter is a small disk and Uranus a dot; at 200× the Moon overflows the field.
- It is lit from the side the Sun is on: Venus near the Sun is a thin crescent, Mars a little gibbous.
- Jupiter's four moons stand where they are tonight (Meeus, Astronomical Algorithms, chapter 44). A moon behind the planet is hidden.
- Saturn is drawn, not photographed: its rings tilt as they do tonight, from where its pole points. In 2026 they are nearly edge-on.
- The air, or the telescope's own limit, softens it, whichever is coarser.
- The Sun is today's white-light picture from NASA's SDO satellite, orange as a glass solar filter shows it, spots and all. Look at the Sun only through a proper solar filter over the front of the telescope.
| Key | Action |
|---|---|
? |
Help (centered popup) |
g |
Back to Sky mode |
t |
Add telescope (name, aperture mm, focal length mm[, notes]) |
e |
Add eyepiece (name, focal length mm, AFOV°[, notes]) |
m |
Add misc gear (name, kind[, factor][, notes]) |
ENTER |
Edit selected |
TAB |
Cycle focus (Telescopes → Eyepieces → Misc) |
UP / DOWN, k / j |
Move cursor |
Shift-UP / Shift-DOWN |
Reorder |
HOME / END |
Jump to start / end |
SPACE |
Tag / untag |
f |
Put the selected telescope + eyepiece in the eyepiece set, or take it out |
F |
List the eyepiece set; x takes the selected pair out |
A |
Tag all |
u |
Untag all |
o |
Toggle sort (APP / FL) |
Ctrl-A |
A Claude session about the gear on screen |
Ctrl-O |
Create observation log from tagged equipment (auto-filled with Sky-mode context) |
x |
Export tagged items to CSV |
X |
Export all items to JSON |
D |
Delete selected |
r |
Redraw |
v |
Show version |
ESC |
Reset status line |
q / Q |
Quit (save / no save) |
Each forecast hour gets "negative points" based on your limits:
- 2 points if cloud cover > cloud_limit
- +1 point if cloud cover > (100 - cloud_limit) / 2
- +1 point if cloud cover > 90 %
- +1 point if humidity > humidity_limit
- +1 point if temperature < temp_limit
- +1 point if temperature < temp_limit - 7 °C
- +1 point if wind > wind_limit
- +1 point if wind > 2 × wind_limit
0–1 = GOOD (green), 2–3 = FAIR (yellow), 4+ = BAD (red).
~/.astro/config.yml (auto-created on first run; first launch also prompts for location):
location: Oslo
tz_name: Europe/Oslo
lat: 59.91
lon: 10.75
tz: 1.0
cloud_limit: 40
humidity_limit: 80.0
temp_limit: -10.0
wind_limit: 8.0
bortle: 4.0
show_planets: true
show_events: truelocation: display name shown in the headertz_name: IANA timezone for the in-the-sky.org events feed (Cont/City format)lat/lon: observer position in degreestz: UTC offset in hours (e.g.1.0for CET,-5.0for EST)cloud_limit,humidity_limit,temp_limit,wind_limit: thresholds for condition coloringbortle: light-pollution class for your site (1 = darkest, 9 = inner-city)
Other paths:
~/.astro/gear.json— telescope and eyepiece catalog (JSON).~/.astro/gear_config.json— Gear-mode visual settings (colors, auto-backup count).~/.astro/gear_backups/— rotated catalog backups.~/.astro/weather_cache.json— weather cache (TTL 3 hours).~/.astro/images/— APOD per day. Old Stelvision starchart files are deleted on start; the chart is drawn now.
On first launch astro looks for ~/.nova/config.yml and ~/.scope/data.json and copies them to the matching ~/.astro/ paths. The originals are left in place; you can delete them at your leisure.
The standalone nova and scope repos are archived in favour of this app.
- Linux or macOS, x86_64 or aarch64.
imagemagick(convert) onPATHfor inline image display.- A terminal that speaks the kitty graphics protocol, sixel, w3m img, or chafa for inline images. Without any of those astro still runs, and the sky chart is unaffected: it is braille, not an image. Only APOD needs a graphics-capable terminal.
- Weather: api.met.no (Norwegian Meteorological Institute)
- Events: in-the-sky.org RSS feed
- Sky chart: starmap, which carries the Yale Bright Star Catalogue, Hipparcos distances, the IAU star names and d3-celestial's constellation figures
- APOD: apod.nasa.gov
- Ephemeris: orbit, IAU 2006 obliquity standard, ported from ruby-ephemeris
See the Fe₂O₃ suite overview and the landing page for the full list of projects.
| Tool | Role |
|---|---|
| rush | Shell |
| pointer | File manager |
| kastrup | Messaging hub |
| scroll | Web browser |
| tock | Calendar |
| hyper | HyperList outline viewer |
| watchit | Movie / series browser |
| astro | Astronomy panel + gear catalog |
Public domain (Unlicense).




