Skip to main content

Kyber 0.9.0

· 2 min read

Version 0.9.0 focuses on platform polish and quality-of-life improvements for both hosts and clients. On macOS, the client now handles Retina display scaling correctly, so the streamed image fills the window at the right resolution. Mouse movement on macOS has also been reworked to no longer depend on a private system framework, making it more robust and future-proof.

Cursor handling has been significantly overhauled: the log spam from repeated "SetCursor: Reject" messages is gone, and cursor shape and position tracking on Linux hosts has been updated with a newer library version. The client no longer hangs indefinitely when an error occurs during startup — it now exits cleanly with an informative message. Hostname resolution from the command line now works correctly, so you can pass a domain name instead of a raw IP address. The QUIC layer has also gained the ability to run a host and a client on the same machine, enabling local loopback streaming for testing.

Changelog​

  • client: Update to winit 0.28.1
  • libkynput: Update to xcb 1.2.0. Used on Linux Host to get cursor position and shape
  • libkynput: Update to SDL 2.26.3
  • kymux: A controller and a client can now be started on the same machine
  • macOS client: Relative mouse moves can now be received without enabling IOKit
  • macOS client: Correctly scale window size on Retina displays
  • client: Hostname are now resolved when passed in the commandline
  • Client isn't stuck anymore if an error occurs at early startup
  • client: Rework cursor handling. "SetCursor: Reject" log spam should not happen anymore

Kyber 0.8.1

· One min read

This patch addresses a handful of regressions from version 0.7. Gamepad inputs are no longer forwarded when the client window loses focus, which prevents unintended input being sent to the host. Keyboard state is now properly flushed when the window loses focus or the application exits, avoiding stuck keys on the host. Two cursor-related regressions have been resolved: the cursor can once again be correctly confined within the window when it is hidden, and spurious mouse position events are no longer sent on Windows when the cursor is hidden and relative mouse movement is in use. A random crash at startup on Apple Silicon Macs caused by a parsing issue in the QUIC connection setup has also been fixed.

Changelog​

  • client: Avoid to send Gamepad events when window focus is lost
  • controller: Fix keyboard flush on Window focus loss/Application exit
  • client: When the cursor is hidden, it is now impossible to go out of the window (0.7 regression)
  • Windows: If MouseMove is supported, avoid to send MousePosition when cursor is hidden (0.7.0 regression)
  • macOS M1 client: Fix a random crash at startup, during Kymux URI parsing

Kyber 0.8.0

· 2 min read

Version 0.8.0 is a significant milestone that introduces QUIC-based streaming as the default transport protocol, replacing the older RTP-based approach. The new transport layer delivers improved performance and reliability, and is now the recommended way to connect a client to a host. Alongside this, a new streaming pipeline component is now used on the host side to handle video encoding and delivery, replacing the previous implementation with one that is more flexible and maintainable.

GPU support on Windows has been extended considerably: AMD and Intel GPUs are now supported for hardware-accelerated video encoding when using the QUIC transport. A new --video_codec option lets you choose between H.264, HEVC, and AV1, giving you control over compression and compatibility depending on your hardware. For users who prefer or need RTP, it remains available via a new --protocol option, though some newer features are exclusive to the QUIC path.

The server now handles spawning and coordinating the input and streaming services directly, improving process management and stability. Communication between client and server has been moved to HTTPS for better security. A new --port option has been added so you can configure the server port from the command line.

Changelog​

  • controller/libkynput: windows_sys is now used and replaces winapi
  • Rust dependencies updated
  • Rust toolchain updated to 1.65.0
  • Add avserver that now uses libtxproto
  • controller: Use libkypc to spawn and communicate inputserver and avserver
  • controller: Switch to HTTPS
  • client: Kymux (QUIC) replaces RTP as the default protocol
  • client: Add --protocol option to choose between Kymux/RTP
  • avserver: Add support of AMD and Intel GPUs on Windows. Not supported when using RTP
  • client: Add --video_codec option to choose between H264/HEVC/AV1. Not supported when using RTP
  • client: Add --port to choose the port to use to connect to a controller

Kyber 0.7.0

· 2 min read

This release is a substantial macOS milestone. The VideoToolbox hardware decoding performance issue introduced at launch is fixed, bringing macOS up to the same hardware-accelerated quality as other platforms. Custom cursor shapes are now displayed correctly on macOS, and the middle mouse button works without requiring the experimental IOKit input path. Fullscreen mode on macOS now properly hides both the menu bar and the Dock, and it activates correctly whether triggered from within the app or from the status bar button. For users with multiple monitors, fullscreen now locks the cursor inside the video area on all platforms, making multi-monitor setups on macOS genuinely usable. An experimental low-level keyboard and mouse capture mode for macOS is available by setting the KYBER_USE_IOKIT environment variable. On Windows, a cursor position bug that occurred after resizing the window has been corrected. Package sizes on Windows and Linux have been reduced by stripping debug symbols from binaries and libraries.

Changelog​

  • controller: Update actix-web to 4.2.1
  • controller/libclient/libkynput: Update tokio to 1.21.2
  • macOS client: Fix Videotoolbox performances issue
  • macOS client: Add custom cursor support
  • macOS client: Experimental support of IOKit KeyboardKey/MouseMove grab. Enabled when envvar KYBER_USE_IOKIT is defined.
  • macOS client: Fullscreen now hides Status bar, dock
  • macOS client: Cursor location assistance is disabled
  • macOS client: Fullscreen behavior also applied when fullscreen is triggered with the Status bar fullscreen button
  • Windows txproto: Fix the cursor position sent. The cursor wasn't warped at the correct position after a window resize
  • macOS client: Bind middle mouse button when not using IOKit
  • All clients: Fullscreen now locks the cursor in the video. This also allows to use macOS client on multiple screen setups
  • Windows/Linux: libvlc build has been reduced
  • Windows/Linux: Final packages have cleaned. Useless files aren't copied, and bins/libs are stripped

Kyber 0.6.0

· One min read

Kyber now supports audio. Capture is available on Windows and Linux, and playback works on all platforms — audio is disabled by default and can be enabled by passing --audio=true. macOS joins the platform roster with software-based video decoding and full keyboard, mouse, and gamepad input support; hardware-accelerated decoding via VideoToolbox is present but not yet performant in this release. Input forwarding can be fully disabled by passing --inputs=false, which is useful for view-only monitoring setups. A long-standing bug on Linux where a left mouse click would only register once has been fixed, and a loading failure affecting both client and host on Windows 11 has been resolved.

Changelog​

  • client: --inputs=false can now be passed to disable inputs
  • Audio grab (Windows/Linux) and playback (All) is now available. It is disabled by default, and can be enabled with --audio=true
  • Update libvlc, based on ba9b27e1ae + 0latency.41
  • macOS client: Minimal implementation. Video Toolbox performances are bad, but software decoding is working correctly. Basic Keyboard/Mouse/Gamepad support
  • Linux client: Fix a mouse left click issue that works once
  • Windows: Fix loading issue for both Client/Host on Windows 11

Kyber 0.5.0

· One min read

This release updates the underlying libraries used for gamepad and input handling. The Windows gamepad driver has been switched to a new MIT-licensed implementation, keeping Kyber's dependency footprint cleanly open-source. SDL2 has been updated to version 2.0.22. A video artifact issue on the Windows client has also been resolved, resulting in a cleaner image during streaming.

Changelog​

  • Switch to Rust 1.61.0
  • Run cargo update
  • Windows: Switch to vigem-client crate (MIT license)
  • Update SDL2 to 2.0.22
  • Windows client: Fix video artifact issue

Kyber 0.4.0

· One min read

Input handling and window interaction have been significantly improved in this release. The host machine's cursor shape is now sent to the client at connection time, so you see the right cursor immediately rather than waiting for your first mouse movement. Gamepad plug and unplug events are now reliably forwarded to the host regardless of whether the client window is focused. In relative mouse mode, the cursor is properly confined to the client window, preventing it from drifting outside.

Changelog​

  • client: Input/Window interaction improvements
  • Host cursor is now sent to the client on connection
  • Gamepad plug/unplug are sent even if the window isn't focused
  • client: The cursor is now grabbed within the window in relative mode

Kyber 0.3.0

· One min read

This release adds support for YUV 4:4:4 chroma subsampling, which preserves full colour detail and is useful for text-heavy workflows like remote desktops and coding environments. Pass --444 when launching the client to enable it. A decoding bug for 4:4:4 video on Windows has also been fixed, so colour output is now correct on that platform.

Changelog​

  • client: Add --444 flag to enable YUV 4:4:4
  • Windows client: Fix 444 decoding

Kyber 0.2.0

· One min read

This release focuses on stability and input reliability. The client now handles host-side crashes more gracefully instead of hanging or erroring out unexpectedly. Mouse handling received meaningful attention: relative mouse movement now works correctly in demanding games like Assassin's Creed Odyssey, and a one-frame latency issue in the RTP video path has been fixed. On Linux, the input subsystem was updated to support libinput 1.19 and later, extended keyboard scancodes are now handled correctly even for users who are not in the input group, and the client can be terminated cleanly with Ctrl+C.

Changelog​

  • Improve client robustness when a process crashes on host side (#71)
  • Assassin's Creed Odyssey is not playable with the mouse
  • Linux client: Add support of libinput 1.19+
  • Linux client: Extended scancodes are now handled correctly when the user isn't in input group
  • Linux client: App can now be closed with CTRL+C
  • vlc: Fix a one-frame latency issue on RTP access

Kyber 0.1.0

· One min read

Kyber's initial release. This first version brings a fully functional remote streaming client and host for both Windows and Linux. You can stream video from a host machine to a client over an encrypted QUIC connection, with keyboard, mouse, and gamepad input forwarded back to the host in real time.

Changelog​

  • Windows Host and Client
  • Linux Host and Client