当一群热爱化学的天文爱好者尝试创作软件时,会发生什么?也许是宇宙大爆炸吧。
What happens when a group of chemistry-loving developers try to build astronomy software? Maybe a Big Bang.
We build a modern, open-source ecosystem for astronomy — layered from foundational C++ infrastructure all the way up to cross-platform desktop and mobile applications. Every component is named after a chemical element, each playing a distinct role in the stack.
Our projects form a coherent layered architecture. Each element family has a specific responsibility:
┌─────────────────────────────────────────────────────────────┐
│ UI & Visualization Layer │
│ Cobalt SkyMap · Cobalt Next · Cobalt Mobile │
│ Cobalt FITS Viewer · Task Editor · Cobalt Guider Client │
├─────────────────────────────────────────────────────────────┤
│ Telescope Control Layer │
│ Lithium (Core) · Lithium Next · Lithium Shell │
│ Lithium Modules · Lithium Driver Libs │
├─────────────────────────────────────────────────────────────┤
│ Specialized Services Layer │
│ Sodium (Autoguiding) · Oxygen (Plate Solving) │
│ Lithium Image (Calibration) · fitsjs-ng (FITS/JS) │
├─────────────────────────────────────────────────────────────┤
│ Foundation Layer │
│ Atom — C++20/23 · 18+ Modules │
└─────────────────────────────────────────────────────────────┘
Atom is the C++20/23 foundational library that powers the entire ecosystem. Every other project builds on it.
18+ modular domains, each independently usable:
| Module | Description |
|---|---|
error / log |
Structured error handling and logging |
async |
Coroutine-based async primitives, thread pools, lock-free queues |
memory |
Memory pools, custom allocators, RAII utilities |
image |
Astronomical image processing pipelines |
io |
File I/O with FITS and SER format support |
connection |
TCP/UDP networking, serial communication |
algorithm |
Astronomical algorithms and numerical methods |
search |
Index and search structures |
secret |
Cryptography primitives |
sysinfo |
CPU, GPU, disk, network introspection |
web |
HTTP utilities and REST client |
meta / type |
Compile-time reflection and type utilities |
Also see AtomLibrary — curated third-party dependencies bundled for consistent builds across all projects.
The Lithium family is the core telescope control and observation sequencing engine.
| Project | Description |
|---|---|
| Lithium | Core observation sequencing platform — connects and coordinates mounts, cameras, focusers, filterwheels, and dew heaters into automated imaging sequences |
| Lithium Next | Next-generation rewrite with modernized architecture and improved performance |
| Lithium Shell | CLI interface for headless/remote Lithium operation |
| LithiumModules | Official plugin modules — telescope drivers, guider integrations, utility extensions |
| LithiumDriverLibs | Low-level hardware driver libraries (cameras, mounts, peripherals) |
| LithiumLibrary | Bundled third-party C++ dependencies for Lithium |
| LithiumCode | VSCode extension for authoring Lithium observation sequences |
| Lithium Image | Image calibration library — flat/dark/bias correction, chessboard calibration, AVX2/OpenMP optimizations |
The Cobalt family provides all user-facing interfaces — web, desktop, and mobile.
| Project | Description |
|---|---|
| Cobalt SkyMap | Desktop star map & observation planner — Stellarium engine, 9-tab astronomical calculator (ephemeris, phenomena, RTS, almanac…), ALPACA mount control, plate solving |
| Cobalt FITS Viewer | Mobile FITS processor — 8 stretch algorithms, 16 colormaps, image stacking, RGB composition, astrometry.net integration, cloud backup (Google Drive / OneDrive / WebDAV) |
| Cobalt Next | Next-generation web frontend for Lithium telescope control, replacing the Vue-based Cobalt |
| Cobalt Next Native | Native desktop/mobile wrapper for Cobalt Next |
| Cobalt Mobile | Mobile-optimized observation control interface |
| Cobalt Task Editor | Visual sequence editor for creating and managing observation automation tasks |
| Cobalt Guider Client | Remote guiding client — integrates with Sodium autoguiding service |
| Cobalt Forward | Proxy and forwarding layer for Cobalt services |
| Cobalt | Original Vue-based web client for Lithium (legacy) |
Sodium is a lightweight autoguiding engine for telescope mounts — tracks guide stars and sends real-time correction signals to keep long exposures sharp. Integrates with Lithium via the Cobalt Guider Client.
C++
Oxygen is a next-generation astrometry and plate-solving engine. Given a FITS image, it determines the exact sky coordinates, rotation, and scale — enabling automated target acquisition and WCS calibration.
C
| Project | Description |
|---|---|
| fitsjs-ng | Next-generation FITS parser for JavaScript/TypeScript — used by Cobalt FITS Viewer and all web-based FITS workflows |
| HEAL | Hello ElementAstro Launcher — bootstraps and manages the ElementAstro toolchain; helps users install, configure, and launch multiple projects |
| TaskEditor | Unified observation task and sequence editor across Lithium/Cobalt workflows |
| atom-web-ui | Web UI for interacting with Atom library internals during development |
| quarcs-server-next | Backend server providing data and API services to client applications |
| LightAPT | Lightweight astronomy planning tool for scheduling and telescope automation |
All repositories are open-source and welcome contributions — whether it's a bug fix, a new telescope driver, or a UI improvement.
- ⭐ Star a project you find useful
- 💬 Open an issue with ideas or bug reports
- 🔀 Fork and submit a PR
- 🌐 Website: lightapt.com
- 👤 Lead: @AstroAir
- 🤖 AI Org: ElementsAI-Dev