The Node v1 dashboard is a browser-based single-page application served by a Flask backend. Once running, it is accessible at http://localhost:5173 from any device on the same local network. The dashboard consolidates every operational concern for a Boundless Skies node into one interface: connecting to and controlling your mount, building and executing nightly observation schedules, taking exposures and browsing FITS files, monitoring safety conditions, editing the node configuration, and watching a live log stream—all without touching the command line after initial startup.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/skyrobot804/node_v1/llms.txt
Use this file to discover all available pages before exploring further.
Starting the Dashboard
The recommended way to start the dashboard is through the main process runner, which automatically restarts the Flask server if it crashes. For quick single-run sessions you can launch the dashboard module directly.Recommended: start via main.py
main.py supervises the dashboard process and restarts it automatically on failure.Single-run: start dashboard.py directly
Open the dashboard in your browser
Navigate to http://localhost:5173. The interface loads as a single-page app; no page reloads are required during normal operation.
Panel Overview
The dashboard is organized into several functional panels. Use the cards below to jump to detailed documentation for each major section.Telescope Controls
Discover and connect ALPACA devices, park/unpark, toggle sidereal tracking, slew to RA/Dec coordinates, nudge the mount with the on-screen joystick, run autofocus, and trigger horizon scans.
Scheduling
Browse the built-in Messier/NGC catalog, build a multi-target observation queue with per-target exposure settings, and run fully automated nightly sequences.
Imaging
Take manual exposures, browse and preview FITS files, watch the pier camera live feed, and accumulate signal with the live stacking module.
Safety & Config
The Safety Manager status panel shows sky-area and horizon-obstruction state in real time. The in-browser config editor lets you update
config.yaml without leaving the dashboard.Safety Panel
The Safety Manager status panel appears in the dashboard sidebar. It pollsGET /api/safety and displays the current safe/unsafe state, the reason for any unsafe condition, and whether the emergency park has been triggered. An Emergency Park button is always visible; clicking it sends POST /api/telescope/park immediately regardless of the current schedule or exposure state.
Live Log Stream
The dashboard subscribes to a Server-Sent Events (SSE) stream atGET /api/logs. Log lines are appended in real time to the log panel at the bottom of the page as they are emitted by the Python backend. The stream carries all standard Python logging levels: DEBUG, INFO, WARNING, ERROR, and CRITICAL.
The log panel buffers the most recent lines in the browser. Older lines scroll off as new ones arrive. For persistent log storage, check the
logs/ directory on the node filesystem.Night Vision Mode
A Night Vision toggle in the top navigation bar switches the entire dashboard to a red-tinted CSS theme. This preserves your dark-adapted vision during outdoor observing sessions. All functional elements remain fully operable in night-vision mode; only the color palette changes.Photometry & AAVSO Status Panels
Two read-only status panels in the dashboard show the state of the photometry pipeline and the AAVSO submission queue. The Photometry panel displays the pipeline’s current state (idle, running, or error) and the last measured magnitude and comparison-star result. The AAVSO panel shows whether the most recentPOST /api/aavso submission succeeded and echoes back the target name, magnitude, and timestamp that were sent.
These panels are informational only. To trigger a photometry run, open a FITS file in the FITS browser and click Run Photometry; to submit a measurement to AAVSO, use the submit button that appears after a successful photometry result.
In-Browser Config Editor
The dashboard includes a live YAML editor that reads and writes the node’sconfig.yaml file.
| Action | Endpoint | Description |
|---|---|---|
| Load config | GET /api/config | Returns the current configuration as a JSON object |
| Save config | POST /api/config | Accepts a JSON body, serializes it back to YAML, and writes config.yaml |
A few runtime-safe keys (such as
pier_cam.target_fps and pier_cam.jpeg_quality) are re-read on the next frame and do not require a restart, but the dashboard UI does not indicate which keys are hot-reloadable. When in doubt, restart.