LunarView is an intended open-source, cross-platform C++20 client for legacy AMI MegaRAC SP remote KVM consoles. Its goal is to replace the Java Web Start, JNLP runtime, JNI, and X11 dependencies required by the original JViewer.
The project now contains an experimental, raylib-independent lunarview-cli
headless core. It performs the native MegaRAC web login, obtains and validates
a fresh positional JNLP session, executes the matching IVTP handshake, performs
bounded type-25 frame reassembly and SOC decoding, and writes RGBA PNG output.
It does not invoke Java or JViewer.
The Stage 1 static analysis of the supplied legacy JViewer artifacts is
documented under docs/protocol. The bounded,
firmware-specific Stage 1R capture is documented in
docs/research/runtime-validation.md.
The pinned Stage 2 comparison with the independent Go reference is documented
in docs/research/rd450x-console.md. The
current C++ headless validation result is documented in
docs/research/cpp-headless-validation.md.
The current lab BMC accepts the native C++ session, but produced no type-25 video packets during the tested sessions; the supplied original JViewer behaved identically. The cause remains under investigation. Consequently a real C++ screenshot and visual comparison are still pending. In accordance with the project manifest, the raylib GUI has not started and this is not yet a production-ready client.
Initial target platforms are Windows x86_64, Linux x86_64, and macOS x86_64. The design will remain portable to macOS arm64 and Linux arm64.
Legacy JViewer archives and native libraries live outside this repository and are research inputs only. They must not be modified, redistributed, staged, or committed. Decompiled proprietary sources and private packet captures are also excluded from version control.
The read-only Stage 1 verifier checks the immutable legacy-input hashes, JAR inventories, required classes, embedded native-library copies, and repository boundary:
python3 research/scripts/verify_stage1_inputs.py
python3 research/scripts/verify_stage1_docs.py
python3 research/scripts/verify_stage2_docs.py
python3 -m unittest discover -s research/testsFor a clean macOS/Linux checkout, the bootstrap script downloads a pinned
vcpkg toolchain and dependencies into the Git-ignored .local/ directory,
then builds and runs all offline tests:
./scripts/bootstrap.shWindows uses scripts/bootstrap.ps1. System, explicit FetchContent, and fully
offline dependency modes remain available. See the complete
development setup and migration guide for
prerequisites, clean-machine commands, and the safe GitHub transfer workflow.
./build/dev-vcpkg/lunarview-cli \
--host HOST \
--user USER \
--screenshot frame.png \
--httpThe password is requested interactively and is never accepted in command-line
arguments. Select --http only for a known legacy endpoint; the client emits a
plaintext-transport warning. Use --https when the BMC supports modern TLS.
Useful diagnostics are --verbose, --trace, and --timeout SECONDS.
Current hard limits are deliberate: the matching lab profile uses plain KVM TCP, while KVM-over-TLS and statically unresolved codec combinations fail closed instead of silently changing protocol behavior.
LunarView is free software licensed under the GNU General Public License,
version 3 or (at your option) any later version. See LICENSE.
Third-party components and research references retain their respective licenses. Proprietary JViewer artifacts, decompiled sources, and private captures are not part of the distributed project.