OpenSkyLabOpenSkyLab

Getting Started

Installation & First Run

Get OpenSkyLab running in under 5 minutes. No account required, no internet needed after install.

Installation

Linux (Recommended)

Download the AppImage from GitHub Releases. It runs on any modern Linux distribution without installation.

terminal
# Download the latest release
wget https://github.com/makecio/OpenSkyLab/releases/latest/download/OpenSkyLab-x86_64.AppImage

# Make it executable
chmod +x OpenSkyLab-x86_64.AppImage

# Run
./OpenSkyLab-x86_64.AppImage

Alternatively, install via .deb package on Debian/Ubuntu:

terminal
sudo dpkg -i OpenSkyLab_1.0.0_amd64.deb

Windows

Download and run the installer (.exe or .msi). The ASCOM Bridge is included for communicating with ASCOM-native devices.

terminal
# Run the installer
OpenSkyLab-Setup-1.0.0.exe

# Optional: start the ASCOM Bridge for COM device support
# (managed from Settings > ASCOM Bridge in the UI)

macOS

Mount the DMG and drag OpenSkyLab to Applications. Available for Apple Silicon and Intel.

macOS support is coming soon. Code signing and notarization are in progress.

First Run Wizard

On first launch, OpenSkyLab presents a guided setup wizard:

  1. Welcome — Language selection (English, Portugues, Espanol)
  2. Location — Set your observatory coordinates, altitude, and timezone
  3. Equipment — Create your first rig profile with mount, camera, and guide scope
  4. Connection Test — Verify INDI/ASCOM/PHD2 connectivity

All settings are saved to ~/.config/openskylab/config.toml and can be changed later from the Settings panel.

Simulator Mode

Don't have hardware connected? Run OpenSkyLab in simulator mode to explore all features with realistic simulated devices.

terminal
# Run with simulated hardware
./OpenSkyLab-x86_64.AppImage --simulator

# Or from source
cargo run -p osl-api -- --simulator

The simulator provides:

  • SimMount — Realistic slew velocity, tracking drift, meridian flip
  • SimCamera — FITS frames with synthetic stars and realistic noise
  • SimFocuser — Step movement with backlash and HFR parabola
  • SimPHD2 — Guiding RMS 0.3-0.8 arcsec, dither settlement
  • SimDome — Shutter and azimuth rotation simulation
  • SimWeather — Synthetic conditions with slow variation

The frontend never knows if it's talking to real hardware or simulators. The Device Abstraction Layer makes everything transparent.

Equipment Profile

Equipment profiles define your complete rig — mount, camera, optics, focuser, filter wheel, guide camera, and solver settings. Profiles are stored as JSON and can be exported/imported.

Key Profile Fields

SectionKey Settings
LocationLatitude, longitude, altitude, timezone
MountDriver (INDI/ASCOM), type, INDI host/port, meridian flip config
CameraDriver, default gain/offset, cooler target, binning, format
OpticsFocal length, aperture, reducer, FOV, arcsec/pixel
FocuserBacklash, temp compensation, autofocus step size
Filter WheelFilter names per slot, focus offsets
SolverASTAP path, star database, search radius, downsample

Typical Imaging Workflow

  1. Connect devices (mount, camera, guide camera, focuser)
  2. Cool camera to target temperature
  3. Polar align using the Polar Alignment Wizard
  4. Find target on Sky Map, GoTo with one click
  5. Plate solve to confirm pointing accuracy
  6. Start autoguiding (PHD2)
  7. Run autofocus (V-curve)
  8. Start imaging sequence (LRGB, narrowband, etc.)
  9. Monitor live stack as frames accumulate

CLI Arguments

terminal
openskylab-daemon [OPTIONS]

OPTIONS:
  --simulator              Use simulated devices
  --bind <addr>            Listen address (default: 127.0.0.1:7624)
  --token <token>          Auth token for remote access
  --indi-host <host>       INDI server host (default: localhost)
  --indi-port <port>       INDI server port (default: 7625)
  --log-level <level>      Log level: trace, debug, info, warn, error
  --log-format <fmt>       Log format: text, json
  --run-sequence <id>      Run a sequence and exit
  --profile <id>           Activate a profile on startup
  --exit-after-sequence    Exit daemon after sequence completes