Point a camera at the sky.
Get a live view, right on your Mac.
Sky For Mac is a free, open-source, native SwiftUI + Metal capture app for astrophotography cameras — a SharpCap-style tool built from scratch for macOS, not ported through Wine or a JVM. ZWO ASI cameras are supported natively today, with more brands on the roadmap. Live stacking, planetary bursts, polar alignment, and full FITS/TIFF/PNG export, straight off the sensor.
macOS 14+ · GPLv3 · no telemetry, no account, no cloud dependency
Most ASI capture software treats macOS as an afterthought.
SharpCap, FireCapture, and most of the rest of the ZWO ecosystem are Windows-native or Java-based — running on a Mac only through Wine, Parallels, or a JVM, none of which were built with Apple Silicon or this hardware in mind. Sky For Mac is SwiftUI/AppKit from the ground up, which makes a few things possible that a ported tool generally can't do:
⚡ Real GPU acceleration
Debayering, display stretch, denoise, wavelet sharpening, histograms, and live stacking all run as genuine Metal compute shaders on Apple Silicon — not a CPU fallback because the fast path was written for DirectX only.
📱 An iPhone as a capture source
Continuity Camera turns a paired iPhone into a live afocal-projection camera — real focus-lock and frame-stacked Night Mode — an Apple-ecosystem capability a cross-platform tool can't offer on any OS.
🔭 Apple's Vision framework
Star/streak/planet detection and the live plate-solve run through the same on-device Vision framework macOS itself uses, instead of a bundled third-party computer-vision library.
🧵 Swift's actor model, enforced
Every blocking ZWO SDK call is isolated onto its own actor — not just a convention to remember, but something the compiler checks — so a multi-second USB handshake or a long exposure can never freeze the UI.
🔒 Runs entirely locally
No telemetry, no cloud account, no network dependency beyond what the camera itself needs — and the source is open, so all of this is verifiable rather than taken on faith.
🆓 Free and open source
GPLv3-licensed, with an explicit exception permitting linking against ZWO's closed-source camera SDK. No purchase, no subscription, no account.
Everything from first light to a finished stack
A live preview, deep per-camera controls, and dedicated workflows for planetary bursts, deep-sky stacking, and long-term projects.
Live camera control
Connect a ZWO ASI camera over USB — the first supported brand, with more on the roadmap — or an iPhone via Continuity Camera, or any webcam, for a live preview with full gain/exposure/binning/offset control and one-tap gain/offset presets.
Live Stack & Smart Live Stack
Running-average stacking with optional single-star drift correction or experimental mesh-based tracking for field rotation. Smart Live Stack auto-curates, skipping soft or cloud-flagged frames with a live SNR readout.
Planetary & Lucky Imaging
Small-ROI, high-FPS burst capture with sharpness-ranked frame stacking, Vision-tracked auto-centering, and one-tap presets for Saturn, Jupiter, Mars, Venus, and the Moon.
Acquisition Wizard
Pick a target — planet, Moon, or a curated deep-sky list — and get ROI, gain, exposure, and the right stacking mode set up in one step. Save and load full setups as reusable presets, or start the same way from the Home page's own Quick Start.
Polar alignment & ST4 guiding
A two-frame rotation-center solve with a live on-screen correction vector, plus manual ST4 pulse-guide controls for cameras that report a real ST4 port.
Dark/flat calibration
Capture and manage any number of named dark and flat frames, with subtraction/correction toggled independently on the GPU or CPU path.
Histogram & Curves
Per-channel histogram with independent Black/White Point sliders for correcting a light-polluted sky's color cast, plus a Photoshop-style master + RGB Curves panel that detaches into its own window.
Denoise & wavelet sharpening
Real-time bilateral denoise and wavelet sharpening as Metal compute kernels, plus a satellite/aircraft trail masker and a Cloud Cover & Drift Sentinel — never baked into exported raw data.
SER video & export
Record every incoming frame undiscarded to a single .ser file for AutoStakkert!/PIPP/RegiStax, or export single frames/stacks to FITS (with BAYERPAT header), PNG, or TIFF.
Projects & sessions
An iMovie-style library of projects and sessions with timelines, auto-generated capture notes, GPS/manual location, tags, ratings, favorites, and a sky-position Atlas view. See it in the App Tour below.
Equipment manager
Named equipment systems — camera, mount, optical tube, and optional guiding/power/eyepiece gear — assignable per project and inherited by each session.
Local AI panel
A grounded chat panel talking to a local Ollama server — nothing leaves your machine — that can propose a project, a session, or a camera setting change, always behind an explicit Approve/Reject card.
Insights
Most-captured objects, most-used equipment, most common acquisition mode, and a monthly activity chart, aggregated across every project — with "try this next" suggestions.
More than a live view — a whole observing workflow
Beyond the camera view, Sky For Mac keeps a running library of every project, session, and capture, plus the equipment behind them and the insights across all of it.
Straight off the sensor
Unedited live-view captures from real first-light test sessions — no post-processing beyond the app's own live GPU pipeline. See the full, up-to-date catalog in EXAMPLES.md.
What's next
Sky For Mac is still pre-1.0 and under active development. ZWO ASI is the first camera brand it supports, natively, via ZWO's own SDK — it won't be the last. Roughly in priority order:
📷 More camera brands
ZWO ASI is supported natively today. Additional camera brands are planned next — each one needs its own SDK integration and real hardware to test against, so support lands brand by brand rather than all at once.
🔐 App Sandbox
Currently off. Turning it on needs a real migration for existing users'
~/Documents project data, plus verifying the vendored ZWO SDK's
raw USB access still works under a sandboxed, hardened-runtime build.
✅ Notarized, Developer ID-signed builds
Today's releases are ad-hoc signed for local execution only. A real Apple Developer Program membership and Developer ID certificate would let releases launch without a Gatekeeper right-click.
🎯 ST4 guiding on real hardware
The manual ST4 pulse-guide controls are implemented but untested end to end — no ST4-cabled mount has been available yet to confirm a pulse produces a real correction.
🏪 Mac App Store submission
Blocked on more than paperwork: Apple's Store terms have historically been read as conflicting with GPLv3 §6. Worth resolving — legal advice, FSF guidance, or relicensing the distributed binary — before a submission, not after. See why it isn't there yet.
🔧 Hardware to test against
If you have a ZWO (or other) camera, mount, or other astro gear you'd be willing to lend or send for compatibility testing, that directly speeds up this list — reach out via Issues.
Get the latest build
Distributed directly from GitHub Releases — not the Mac App Store. See why below.
macOS build, signed
A universal build of Sky For Mac, code-signed for local execution. It is not notarized by Apple (that requires a paid Apple Developer Program membership — see below), so Gatekeeper will flag it as being from an unidentified developer on first launch.
Installing the .zip: unzip it, then open a Terminal in that folder and run:
bash "Fix Gatekeeper Warning.command"
Either way, the script moves skyformac.app into
/Applications,
clears the Gatekeeper quarantine flag, and resets the Camera permission (needed
once per release, since the iPhone/webcam source can otherwise get silently
stuck denied — the ZWO ASI camera isn't affected). Running it from Terminal
skips the extra "Apple could not verify this app" prompt that double-clicking it
in Finder triggers first — if you do double-click it in Finder instead,
right-click it → Open → Open again in the
confirmation dialog, then do the same for skyformac.app in
/Applications once the script has moved/copied it there.
Why isn't this on the Mac App Store?
⚠ It's GPLv3-licensed, and that's a real, unresolved conflict
- License incompatibility. Apple's App Store Terms have historically been read by the FSF and others as imposing usage/DRM restrictions that conflict with GPLv3 §6 ("Conveying Non-Source Forms") — this has caused real GPLv3 apps to be pulled from, or never submitted to, the App Store in the past.
-
App Sandbox isn't on yet. Store distribution requires
App Sandbox, and turning it on isn't a small toggle here: existing
users' project data lives in
~/Documents, which a sandboxed app can no longer see without a real migration step, and the vendored ZWO ASI camera SDK's behavior under a sandboxed, hardened-runtime build is untested against real hardware. - No Apple Developer Program enrollment yet. Store distribution needs a paid ($99/year) membership tied to a real Team ID — administrative setup that hasn't happened, independent of the licensing question above.
None of this is against the spirit of open source — quite the opposite. Distributing directly from GitHub keeps Sky For Mac's GPLv3 freedoms (use, study, modify, redistribute) fully intact, with nothing depending on Apple's review or continued Store presence to keep working.
Free and open source — GPLv3
Sky For Mac is licensed under the GNU General Public License v3, with one explicit additional permission.
📜 GPLv3
You're free to use, study, modify, and redistribute Sky For Mac — including commercially — as long as derivative works are shared under the same license. Full text in LICENSE.md.
🔌 Special exception for the camera SDK
An additional permission under GPLv3 §7 explicitly allows linking Sky For
Mac against closed-source camera driver SDKs — specifically ZWO's proprietary
ASI Camera SDK (libASICamera2) — and distributing the resulting
binary, without that closed-source dependency "infecting" the rest of the
license.
🛰️ Third-party notices
The vendored ZWO ASI Camera SDK is © ZWO Co., Ltd. under its own SDK terms. The bundled Messier/Caldwell/bright-star catalog is a small subset of the Stellarium project's DSO data (GPLv2). Full attributions in THIRD_PARTY_NOTICES.md.
🤝 No telemetry, ever
Everything runs locally. No analytics SDK, no crash reporter phoning home, no account, no cloud dependency beyond what the camera itself needs — and since the source is open, that's independently verifiable rather than a claim to take on faith.