{"id":50844085,"url":"https://github.com/alikh31/dwarflab-viewer","last_synced_at":"2026-06-14T08:05:19.928Z","repository":{"id":361803279,"uuid":"1255872066","full_name":"alikh31/dwarflab-viewer","owner":"alikh31","description":"Unofficial cross-platform desktop viewer for DWARFLAB DWARF telescopes — live view, focus, astro, mount control. Not affiliated with DWARFLAB.","archived":false,"fork":false,"pushed_at":"2026-06-01T09:58:53.000Z","size":166,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T11:23:20.873Z","etag":null,"topics":["astronomy","astrophotography","desktop-app","dwarf-telescope","dwarflab","electron","telescope"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alikh31.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-01T08:48:46.000Z","updated_at":"2026-06-01T09:58:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/alikh31/dwarflab-viewer","commit_stats":null,"previous_names":["alikh31/dwarflab-viewer"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/alikh31/dwarflab-viewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alikh31%2Fdwarflab-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alikh31%2Fdwarflab-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alikh31%2Fdwarflab-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alikh31%2Fdwarflab-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alikh31","download_url":"https://codeload.github.com/alikh31/dwarflab-viewer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alikh31%2Fdwarflab-viewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34313608,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astronomy","astrophotography","desktop-app","dwarf-telescope","dwarflab","electron","telescope"],"created_at":"2026-06-14T08:05:19.052Z","updated_at":"2026-06-14T08:05:19.920Z","avatar_url":"https://github.com/alikh31.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DWARFLab Viewer (Unofficial)\n\n\u003e A cross-platform desktop app for live-viewing and controlling [DWARFLAB](https://dwarflab.com)\n\u003e DWARF smart telescopes — built on the unofficial\n\u003e [`@alikh/dwarflab-sdk`](https://github.com/alikh31/dwarflab-sdk).\n\n[![CI](https://github.com/alikh31/dwarflab-viewer/actions/workflows/ci.yml/badge.svg)](https://github.com/alikh31/dwarflab-viewer/actions/workflows/ci.yml)\n[![Release](https://github.com/alikh31/dwarflab-viewer/actions/workflows/release.yml/badge.svg)](https://github.com/alikh31/dwarflab-viewer/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)\n\n\u003e [!IMPORTANT]\n\u003e This is an **independent, community-built** application. It is **not affiliated\n\u003e with, authorized, or endorsed by DWARFLAB**. \"DWARF\" and \"DWARFLAB\" are\n\u003e trademarks of their respective owner, used here only to describe the hardware\n\u003e this app controls. It talks to your telescope at a low level (motors, focus,\n\u003e power) over your local network — **use at your own risk**; see the\n\u003e [disclaimer](#disclaimer).\n\n## What it does\n\nA native desktop window that connects to a DWARF telescope on your local\nnetwork and gives you:\n\n- **Live camera view** — H.265 RTSP streams (tele + wide) decoded in-app, with\n  no external dependencies (pure-Node RTSP → fMP4 via MSE; no ffmpeg).\n- **Focus** — auto-focus, astro auto-focus, and a magnifier loupe with edge\n  detection for manual focusing.\n- **Mount control** — on-screen direction pad, keyboard, and gamepad slewing.\n- **Astrophotography** — plate-solve calibration, GoTo (with a built-in target\n  catalog), EQ polar-alignment wizard, and live stacking with a live preview.\n- **Camera params** — exposure, gain, white balance, IR-cut filter, and more.\n- **Capture** — photo, burst, video, timelapse, and an album browser.\n- **Wi-Fi setup over Bluetooth** — discover a telescope and configure its Wi-Fi\n  before it's on the network (see [Bluetooth notes](#bluetooth-ble-notes)).\n\n## Install\n\nDownload the installer for your platform from the\n[**Releases**](https://github.com/alikh31/dwarflab-viewer/releases) page.\n\n| Platform | File |\n|----------|------|\n| macOS (Apple Silicon / Intel) | `.dmg` |\n| Windows | `...-Setup.exe` (NSIS) |\n| Linux | `.AppImage` or `.deb` |\n\n\u003e **The binaries are currently unsigned.** Your OS will warn that the app\n\u003e cannot be verified. This is expected for an unsigned open-source build (the\n\u003e app isn't signed with a paid Apple/Windows certificate) — here's how to run it\n\u003e anyway. Only do this for builds you trust.\n\n### macOS\n\nDrag **DWARFLab Viewer (Unofficial)** to your Applications folder, then open it.\nOn modern macOS (Sonoma/Sequoia) you'll see *\"Apple could not verify … is free\nof malware.\"* The old right‑click → Open shortcut no longer bypasses this, so\nuse one of these:\n\n**System Settings (no Terminal):**\n1. Double‑click the app, then click **Done** on the warning (do **not** move it\n   to the Bin).\n2. Open **System Settings → Privacy \u0026 Security**, scroll to the **Security**\n   section. You'll see *\"DWARFLab Viewer (Unofficial)\" was blocked…*\n3. Click **Open Anyway**, authenticate, and confirm **Open Anyway** again. The\n   app is now allowlisted and opens normally from then on.\n\n**Or, one Terminal command** (removes the quarantine flag):\n```bash\nxattr -dr com.apple.quarantine \"/Applications/DWARFLab Viewer (Unofficial).app\"\n```\nThen launch it normally. (Adjust the path if you didn't move it to\n`/Applications`.)\n\n### Windows\n\nRun `dwarflab-viewer-setup-\u003cversion\u003e.exe`. On the SmartScreen prompt, click\n**More info** → **Run anyway**.\n\n### Linux\n\n- **AppImage:** `chmod +x dwarflab-viewer-*-x86_64.AppImage`, then run it.\n  (Needs FUSE; on some distros `sudo apt install libfuse2`.)\n- **.deb:** `sudo apt install ./dwarflab-viewer_*_amd64.deb`\n\n## Connecting to your telescope\n\n1. Power on the telescope and either join its Wi-Fi access point (default\n   `192.168.88.1`) or have both the telescope and your computer on the same\n   network.\n2. Launch the app — it will try to discover the telescope automatically, or you\n   can enter its IP manually.\n3. That's it. Live view and controls become available once connected.\n\n## Bluetooth (BLE) notes\n\nThe optional Wi-Fi-setup feature uses Bluetooth Low Energy to talk to a\ntelescope before it's on your network. BLE needs OS-level access:\n\n- **macOS:** works out of the box (the app declares the Bluetooth usage\n  permission; approve the prompt).\n- **Windows:** needs a compatible Bluetooth adapter.\n- **Linux:** the underlying library needs raw-socket capability. If BLE\n  discovery doesn't work, grant the capability to the bundled Node runtime:\n  ```bash\n  sudo setcap cap_net_raw+eip $(readlink -f /path/to/the/app/binary)\n  ```\n  See the [noble prerequisites](https://github.com/abandonware/noble#prerequisites).\n\nIf Bluetooth is unavailable, the rest of the app still works normally — just do\nWi-Fi setup another way and connect by IP.\n\n## Device support\n\nBuilt and tested against the **DWARF 3** (firmware v1.5.x). Other DWARF models\nthat share the same protocol (DWARF 2, DWARF 3 Plus, DWARF Mini) may work but\nare **unverified** — reports welcome via\n[issues](https://github.com/alikh31/dwarflab-viewer/issues).\n\n## Development\n\nRequires Node.js ≥ 18.\n\n```bash\ngit clone https://github.com/alikh31/dwarflab-viewer.git\ncd dwarflab-viewer\nnpm install\nnpm run dev          # launch the app in dev mode (hot reload)\n```\n\nOther scripts:\n\n```bash\nnpm run build        # build main + preload + renderer (electron-vite)\nnpm run typecheck    # type-check the Node and web sides\nnpm run package      # build + produce installers for the current OS (electron-builder)\n```\n\n### Tech stack\n\n- **Electron** + **electron-vite** (main / preload / renderer)\n- **React 19** + **Tailwind CSS** (renderer UI)\n- **[`@alikh/dwarflab-sdk`](https://www.npmjs.com/package/@alikh/dwarflab-sdk)**\n  for the telescope protocol (WebSocket + HTTP) and\n  **[`@alikh/dwarflab-ble`](https://www.npmjs.com/package/@alikh/dwarflab-ble)**\n  for Bluetooth setup.\n- Pure-Node RTSP client + `jmuxer` for in-renderer H.265 playback.\n\n### Architecture\n\n```\nmain process (Node)                         renderer (React)\n  ├── sdk-service     WebSocket protocol  ◄──► IPC ──► UI panels, hooks\n  ├── discovery       mDNS/UDP device find\n  ├── ble-service     Bluetooth Wi-Fi setup\n  ├── rtsp-client     H.265 RTSP (port 554)\n  └── stream-proxy    raw NAL → HTTP  ─────────► jMuxer → \u003cvideo\u003e (MSE)\n```\n\n## Releases\n\nTag-driven. Pushing a `vX.Y.Z` tag builds installers for macOS, Windows, and\nLinux in CI and attaches them to a GitHub Release. See\n[CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## Disclaimer\n\nThis software is provided \"as is\", without warranty of any kind. It controls\nphysical hardware and communicates with your telescope at a low level. The\nauthors are not responsible for any damage, data loss, or malfunction resulting\nfrom its use. It is not an official DWARFLAB product and is not supported by\nDWARFLAB. Always supervise your telescope while it is under program control.\n\n## License\n\n[MIT](./LICENSE) © alikh31\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falikh31%2Fdwarflab-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falikh31%2Fdwarflab-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falikh31%2Fdwarflab-viewer/lists"}