Ephemeris is a free, native macOS app that reads PHD2 guide logs and turns them into something you can actually navigate — sortable session summaries, a time-series chart with drag-to-zoom, an FFT periodogram, calibration plots with orthogonality checks, and multi-session combining. It's GPL-3.0, available now from Mac Observatory, and built in Swift and SwiftUI from the ground up.

Ephemeris main window showing a full night of combined PHD2 guide sessions, with the sidebar, time-series chart, scatter inset, and inspector visible
Combining a full night of guide sessions, gaps preserved.
Ephemeris 1.0
  • Price: Free
  • License: GPL-3.0 (source on GitHub)
  • Platform: macOS 14 (Sonoma) or later, Apple Silicon native
  • Distribution: Developer ID signed & notarized, direct from Mac Observatory
  • Developer: Andrew Burwell / Mac Observatory

Why I Built It

PHD2 — the open-source autoguiding application by Bruce Waddington and Andy Galasso, and the de facto standard for amateur autoguiding on both Windows and Mac — already has a log viewer. It's called phdlogview, written by Andy himself, and it ships native Mac builds back to Mojave. Most of what I learned about reading guide logs, I learned by reading his code. So let me get this out of the way up front: this isn't me fixing something that was broken. Andy's tool works.

What I wanted was a Mac-native version. Something built around SwiftUI's DocumentGroup so File → Open and dropping a log onto the app icon both worked the way you'd expect, with charts drawn in Swift Charts and an interface that felt like it belonged on the same screen as the rest of my Mac apps. I also wanted to give back to the open-source astronomy community in a way that played to my strengths — designing software for Mac users.

But the bigger reason is what I think Ephemeris can become. The original PHD log viewer, like this v1, is informational. It shows you the numbers. It doesn't tell you what the numbers mean. I think a guide-log analyzer can do more than render a graph — it can help you read the graph. Especially if you're newer to autoguiding and haven't yet learned what 0.8″ RMS with persistent Dec drift looks like versus 0.8″ RMS from poor seeing. v1.0 doesn't do that yet. But it's the direction I'm pointed.

I've already taken a small first step. Ephemeris lets you ⌘-click sessions in the sidebar to combine them into one merged view, with real wall-clock gaps preserved between them. Drag-to-exclude works across the merge. Stats and FFT recompute on the merged session. It's a tiny enhancement, but it's the kind of thing I want to keep adding — small, useful, and aimed at the what do I do with this? question rather than the what does this say? question.

What's in v1.0

Ephemeris summary view showing the aggregate header strip, the green Best and orange Worst session pills, and a sortable session table with the Total RMS quality bar column
The summary view, with the night's best and worst sessions called out.

The summary view is what opens when you load a log. You get aggregate stats up top — total integration time, frame count, weighted RMS — and a sortable table of every guiding session in the file, with green ★ Best and orange ⚠︎ Worst pills marking your standout nights. The Total RMS column has a thin horizontal bar scaled to the worst session, so you can scan quality at a glance without having to read individual numbers.

Ephemeris per-session guide chart with RA in red and Dec in blue, a hover readout card, scatter inset in the corner, and the star mass and SNR sub-charts beneath the main plot
Hover any frame, see RA, Dec, and SNR. Drag to zoom or to exclude.

The per-session chart is built on Apple's Swift Charts. RA in red, Dec in blue, hover for a frame readout, click to pin a vertical rule. Drag to zoom; toggle the mode and drag to manually exclude a range from your stats. There's a translucent XY scatter inset in the corner with concentric rings every 0.5″ (matching PHD2's target convention), a star-mass sub-chart, an SNR sub-chart, and event markers for settling, dither, star-lost, and PHD2 parameter changes. Click an event in the inspector and the chart's selection rule snaps to that frame.

Ephemeris calibration view with a square XY plot, West and East legs in red, North and South legs in blue, dashed concentric reference rings, and the orthogonality readout in the header strip
A clean cal cross looks like a T. Anything else is a clue.

The calibration plot is square, 1:1, with West/East legs drawn in red and North/South in blue, plus orange backlash steps if your mount needed them. The stats strip across the top shows your RA and Dec rates plus orthogonality error — and if it's over 5°, that number turns orange to flag it. Worth catching before your imaging session, not after.

Ephemeris frequency analysis modal showing an FFT periodogram with a logarithmic X-axis, the dominant period highlighted, and the drift-correct toggle visible
FFT analysis on RA — the dominant period is your worm gear, every time.

The FFT periodogram opens with ⌘F. Log-X axis, Hann-windowed, drift-corrected by default, with a vertical rule annotating the dominant period. It's built on Apple's Accelerate framework — no third-party dependencies, no GSL, no SPM packages.

A few other things worth knowing: the app is read-only on log files (it never modifies what it opens), exports go through the system share sheet (CSV of frames, CSV of session stats, log summary CSV, or a 2× PNG of the chart), there's an in-app Apple Help Book at ⌘? with nine topic pages, and the analysis code ships with around 56 unit tests covering parsing, statistics, FFT recovery, and the multi-session merger.

What v1.0 Doesn't Do

Cross-night comparison isn't there yet. Each window is one log file — if you want to look at last week's session and tonight's, that's two windows side by side. There's no PHD2 debug log support either; Ephemeris reads the guide log only. And the polar-alignment estimate is single-session, which means it works well on long sessions and gets noisy on short ones. I'd rather ship without those features than ship them poorly.

Where It's Going

The post-1.0 roadmap is the real reason I'm excited. Three things, in rough order: PHD2 debug log correlation, cross-session trend analysis, and a layer of plain-language interpretation on top of the numbers. The last of those I'm prototyping as an MCP server, so a chat assistant like Claude could read your guide logs directly and have an actual conversation with you about what's going on — "Your RA RMS doubled around 1am — was the wind picking up?" That kind of thing.

What v1.0 brings to the Mac
Four headline features
Multi-Session Combining
⌘-click sessions in the sidebar to merge them into one virtual log with real wall-clock gaps preserved. Stats and FFT recompute on the merge.
FFT Periodogram
Hann-windowed, drift-corrected FFT on Apple's Accelerate framework. Surfaces the dominant period in your guiding so you can spot periodic error.
Drag to Zoom & Exclude
Two interaction modes on the same chart — zoom in for detail, or mark a range as excluded so it stops contaminating your RMS, drift, and peak stats.
Calibration Analysis
Square XY plot with per-direction legs, backlash steps, and an orthogonality readout that turns orange when your axes are off by more than 5°.

Get It

Ephemeris 1.0 is a free download at macobservatory.com — Developer ID signed and notarized, distributed direct from Mac Observatory. macOS 14 (Sonoma) or later, runs natively on Apple Silicon. Source is on GitHub under GPL-3.0, and Andy Galasso's phdlogview (the upstream project this learns from) is at github.com/agalasso/phdlogview. If you want to support continued development, there's a Patreon.

If you find a bug or have a feature you'd like to see — especially anything in the roadmap above — open an issue on GitHub or send me a note. v1.0 is the start, not the destination.

After v1.0
Where Ephemeris is going
From informational tool to interpretive companion — three tracks I'm working on next.
Track 1
Debug Log Correlation
Read PHD2's debug log alongside the guide log. Surface camera state, detection thresholds, and rejection reasons in the same hover readout.
Track 2
Cross-Session Trends
Open a folder of guide logs and see your mount's performance across nights, weeks, months. How is the mount drifting? Is alignment holding?
Track 3
Conversational Analysis
An MCP server so a chat assistant can read your logs directly and have an actual conversation about what's going on — and what to try next.
Mac observatory
More native astronomy software for the Mac
Ephemeris joins Laminar, Strata, and Meridian as part of the Mac Observatory app suite — native tools built for Mac astrophotographers.
Mac Astronomy Software → The MO App Suite → Support on Patreon →
Astrophotography from the Mac perspective