A real-time terminal dashboard for tracking NASA's Artemis II crewed lunar flyby mission, built with Go and Bubble Tea.
- Deep Space Network -- real-time antenna tracking, signal status, and range via DSN Now
- JPL Horizons -- spacecraft position, velocity, and Earth/Moon distance via the Horizons API (spacecraft ID
-1024) - NOAA SWPC -- space weather conditions (Kp index, solar wind, Bz, proton flux, flare class) via SWPC services
- NASA Blog -- mission log entries from the Artemis blog WordPress REST API
- Go 1.26.1+
- A terminal emulator with 256-color support (most modern terminals)
- Minimum terminal size: 60 columns x 14 rows (more space shows more panels)
go build -o artemis ./main.go
./artemisOr run directly:
go run main.goMake targets and version check:
make build
make run
./artemis --versionFor the standard Go workflow, install directly into your Go bin directory:
go install .For a repo-aware install that preserves the Makefile's version ldflags, use:
make installBy default this installs to ~/.local/bin/artemis. Override the destination if needed:
make install PREFIX=/usr/localIf ~/.local/bin is not already on your PATH, add it in your shell config:
export PATH="$HOME/.local/bin:$PATH"| Key | Action |
|---|---|
q / Ctrl+C |
Quit |
Esc |
Quit, or close the in-app mission log reader |
t |
Toggle between Gantt chart and event timeline |
c |
Cycle color theme (Default, Retro, Hi-Con, Critical) |
v |
Cycle Trajectory, Orbital Context, Instruments, DSN SKY, and Weather Trends views |
f |
Toggle fullscreen visualization mode |
s |
Cycle visualization effects (stars / ship / off) |
p |
Cycle screen protection (off / drift / drift+idle) |
n |
Toggle native notifications |
u |
Toggle metric and imperial telemetry units |
r |
Force-refresh all data sources |
j / Tab |
Select next mission log entry, or scroll down in the reader |
k / Shift+Tab |
Select previous mission log entry, or scroll up in the reader |
Enter |
Open selected mission log entry in the in-app reader |
o |
Open the selected mission log entry in the browser |
The dashboard shows panels based on available terminal height, in priority order:
- Mission Clock -- MET, UTC time, mission day, next event countdown
- Spacecraft State -- distance from Earth/Moon, speed, Earth radial rate, ecliptic lon/lat, position vector, RTLT, AOS/LOS signal status
- Space Weather -- NOAA R/S/G scales, Kp index, solar wind, Bz, proton flux
- Deep Space Network -- active dishes, signal bands, data rates, range
- Mission Timeline -- Gantt chart or scrolling event list with 25 mission events
- Mission Log -- latest NASA blog posts with selection, in-app reader, reload, and browser opening
- Trajectory -- Earth-centered Horizons mission path with sampled arc status, twinkling stars, and current Earth/Moon/Orion positions
- Crew -- the four Artemis II astronauts and their roles
Visualization modes:
- Trajectory shows the sampled Earth-centered mission path, with the current Orion, Earth, and Moon positions overlaid.
- Orbital Context shows the current Earth-Moon-Orion geometry in a fixed top-down Earth-centered map with reference rings.
- Instruments shows the same current state as telemetry gauges, short trend graphs, and directional scopes rather than a literal map.
- DSN SKY shows the current dish azimuth/elevation tracking geometry plus an active dish list.
- WEATHER TRENDS shows recent Kp, Bz, solar-wind, and proton trendlines with a live conditions snapshot.
Instruments quick read:
- Velocity shows current speed, Earth radial velocity, inertial velocity components, and short speed/radial trendlines.
- Range shows current Earth and Moon distance, Earth/Moon split, Earth-Moon baseline, and DSN range trend.
- Signal shows AOS/LOS, active DSN dish, RTLT, downlink rate, and short RTLT/downlink trendlines.
- Bearing is Orion's Earth-centered heading in the ecliptic plane.
- Proximity plots the Moon relative to Orion, with the center crosshair representing the spacecraft.
Press f to expand the active visualization into fullscreen mode with MISSION CLOCK and SPACECRAFT STATE embedded inside the visualization panel.
Mission log reader:
- Press
Enteron a selected mission log item to open the in-app reader. - Use
j/kor the arrow keys to scroll,PgUp/PgDnorSpaceto page, andg/Gto jump to the top or end. - Press
rto reload the selected post,oto open it in the browser, andEscto close the reader.
Notifications:
- Press
nto toggle native desktop notifications for mission phase changes and newly detected mission log entries. - Native notifications are supported on macOS (
osascript) and Linux (notify-send).
Screen protection:
- Press
pto cycle betweenoff,drift, anddrift+idle. driftslowly nudges the entire dashboard to reduce static pixels during long sessions.drift+idlekeeps the slow drift and switches to a dim wake screen after inactivity.- Unattended environments can set startup defaults with:
ARTEMIS_SCREEN_PROTECT=drift-idle
ARTEMIS_SCREEN_PROTECT_DRIFT_INTERVAL=60s
ARTEMIS_SCREEN_PROTECT_IDLE_AFTER=15mPolling intervals are tuned for long-running sessions to minimize battery and network usage:
| Source | Interval |
|---|---|
| Deep Space Network | 30 seconds |
| JPL Horizons | 5 minutes |
| Space Weather | 5 minutes |
| NASA Blog | 1 hour |
Press r at any time to force an immediate refresh of all sources.
Trendlines advance when fresh source samples arrive, so r will also force the instruments sparklines to append a new point immediately.
Restart behavior:
- The long mission arc (
trajectoryPath) is reconstructed from Horizons on startup. - The recent Horizons-derived live trail and related speed/radial trend buffers are also repopulated from a short recent Horizons history window on startup.
- Space weather trend buffers are repopulated from recent NOAA history on startup.
- DSN short-term trend buffers are restored from a local cache file and pruned if they are too old to be useful.
Cycle through four themes with c:
- Default -- blue/green on dark background
- Retro -- amber/green phosphor terminal
- Hi-Con -- high-contrast white/green/yellow
- Critical -- dark red mission-critical aesthetic
