Implements RFC 6143 SS7.7.6: a ZRLE rectangle is a 4-byte compressed length followed by that many zlib-compressed bytes, decompressing to 64x64 tiles each using one of five subencodings (Raw, Solid, packed palette, Plain RLE, Palette RLE). The zlib stream persists for the whole connection rather than being reset per-rectangle or per-update, so VncSessionBackend now owns a lazily-initialized, persistent z_stream torn down only in resetProtocolState() on a fresh connect/reconnect. Since the entire rectangle's compressed data decompresses into memory in one shot, tile parsing is a plain synchronous loop rather than needing its own RfbState values -- only the compressed-length and compressed-data reads are actual protocol states. Tile decoding (the five subencodings, including the continuation-byte run-length encoding shared by two of them) lives in vnc_pixel_codecs.h/.cpp alongside the Hextile decoder, unit-tested with 6 new tests covering each subencoding plus a persistence test that splits one continuous deflate stream across two separate FramebufferUpdate messages -- it only decodes correctly if the connection's inflate stream is retained between them. Adds a top-level find_package(ZLIB REQUIRED) + ZLIB::ZLIB link (previously only pulled in transitively via vendored FreeRDP's own smartcard-emulation feature, which happened to have it enabled but shouldn't be relied on for that). Live-verified against the TightVNC test server that nothing regressed (connect, cursor, clipboard); that server consistently sends Raw for actual framebuffer content regardless of announced encodings, so Hextile/ZRLE's live decode path isn't independently confirmed against a real server -- the unit tests are the primary evidence here. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
OrbitHub
OrbitHub is a cross-platform native desktop app for managing and launching remote sessions from one place.
It is implemented in C++17 with Qt6 Widgets and built with CMake.
Supported target platforms:
- Windows
- Linux
- macOS
Current Status
OrbitHub is in active development.
- Milestones completed: M0-M9
- Current milestone: Milestone 10 (v1.0 Stabilization)
- Latest checkpoint tag:
v2026.9.15 - VNC (M6) covers standard VNC Authentication and no-auth servers; see docs/PROGRESS.md for known gaps (Apple Screen Sharing auth, compression encodings, resize, cursor sync, clipboard)
Progress and milestone details:
Latest release (installers for Windows, Linux, and macOS):
User Guide:
- docs/USER_GUIDE.md (also available as a PDF attached to each release, and in-app via
Help -> User Guide)
Screenshots
Profiles organized into folders, with protocol, host, and tags shown at a glance. (Sample data shown; not real hosts.)
An interactive SSH terminal session in a tab, with the event log below.
An embedded RDP session in a tab.
Implemented Features
Profile Management
- SQLite-backed profile storage
- Create, edit, delete profiles
- Protocol-aware profile validation (SSH/RDP/VNC)
- Profile search and sorting
- Tags support
- Folder/subfolder support
ListandFoldersprofile views- Right-click profile tree actions:
- New Folder
- New Connection
- Drag-and-drop profile moves between folders with persistence
Session Experience
- Multi-tab session window
- Auto-connect on tab open
- Disconnect on tab close
- Session state indicators on tabs
- Timestamped event log with filtering and export
SSH
- Embedded interactive terminal (in-app typing)
- Theme support (
Dark,Light,Solarized Dark) - Password and private-key auth flows
- Known-hosts policy support
RDP
- Embedded in-window RDP rendering surface (no external launcher)
- Keyboard/mouse input forwarding
- Resize handling and resolution renegotiation
- Domain-aware authentication support
- RDP security/performance profile options
App UX
- App icon and themed About dialog
Filemenu:- New Profile
- New Folder
- Quit
Helpmenu:- About OrbitHub
Build and Run
Detailed platform instructions:
Quick start (Linux/macOS with Ninja):
cmake -S . -B build -G Ninja
cmake --build build
./build/orbithub
Packaging
Detailed packaging instructions for all platforms:
Linux (.deb):
./packaging/linux/build-deb.sh
Linux (Flatpak):
./packaging/flatpak/build-flatpak.sh
Windows (Inno Setup installer):
.\packaging\windows\build-installer.ps1
macOS (.dmg):
./packaging/macos/build-dmg.sh
Dependencies
Core dependencies:
- Qt 6 (Widgets, SQL)
- CMake 3.21+
- C++17 toolchain
Protocol/runtime dependencies:
- SSH client (
ssh) available onPATHfor SSH sessions
Bundled/vendored third-party components:
- KodoTerm
- libvterm
- FreeRDP/WinPR
Licensing
Project license:
- MIT (see LICENSE)
License links:
- MIT License: https://opensource.org/licenses/MIT
- GNU LGPLv3: https://www.gnu.org/licenses/lgpl-3.0.html
- Apache License 2.0: https://www.apache.org/licenses/LICENSE-2.0
Important third-party license notes:
- Qt6 is dynamically linked in this project build setup.
- Qt6 is used under LGPLv3 terms in this project build setup.
- KodoTerm and libvterm are MIT-licensed.
- FreeRDP/WinPR is Apache-2.0 licensed.
Repository license files:
- Project: LICENSE
- KodoTerm: third_party/KodoTerm/LICENSE
- FreeRDP: third_party/FreeRDP/LICENSE
See in-app Help -> About OrbitHub for license links and third-party inventory.
Repository Structure
src/- application source codedocs/- build guide, spec, and progress trackingthird_party/- vendored third-party dependenciesbuild/- local build output (generated)
Notes
- Passwords are requested at connect time and are not stored in the profile database.
- VNC support covers standard VNC Authentication and no-auth servers (e.g. TigerVNC, x11vnc, TightVNC); it doesn't yet reach macOS's built-in Screen Sharing server, which uses a different authentication scheme (see docs/PROGRESS.md, Milestone 6).


