Skip to main content

Kyber Server Configuration

The Kyber server is configured exclusively through the single configuration file: kyber_config.toml.

Warning: most of the configuration file changes require the server to be restarted to take them into account.

Quick Reference

SectionPurpose
Video & AudioEncoding and screen capture
ControllerNetwork, TLS, and authentication
InputKeyboard, mouse, clipboard, gamepad
Virtual DisplayVirtual monitors (Windows only, driver not yet public)

Video & Audio [avserver]

Video encoding and screen capture settings.

Encoder Selection

ValueHardwarePlatformDescriptionExperimental
nvencNVIDIA GPUWindows, LinuxNVIDIA hardware encoder (recommended)No
x264CPU (any)Windows, LinuxSoftware encoder, higher CPU usageNo
amfAMD GPUWindowsAMD hardware encoderYes
qsvIntel CPU w/ integrated graphicsWindowsIntel Quick Sync VideoYes
vaapiIntel or AMD GPULinuxLinux hardware accelerationYes

Options

OptionDefaultDescription
encoder"nvenc"Video encoder to use (see table above)
grab_backend"nvfbc"Screen capture backend. Linux only. Requires NVIDIA GPU + X11 + nvenc
intra_refreshtrueEnable Intra Refresh. Only with Kymux + nvenc
clock_type"ZeroedOrigin"PTS clock for audio/video. Values: "ZeroedOrigin", "System"
minimum_bitrate5000000Minimum bitrate in bps (default: 5 Mbps)

Watermark

Optional overlay on encoded video. Supports PNG format.

OptionDefaultDescription
watermark.filenonePath to PNG image
watermark.x0.0Horizontal position: -1.0 (left) to 1.0 (right)
watermark.y0.0Vertical position: -1.0 (bottom) to 1.0 (top)

Example

[avserver]
encoder = "nvenc"
minimum_bitrate = 8000000

[avserver.watermark]
file = "./logo.png"
x = 1.0
y = 1.0

Controller [controller]

Network and authentication settings.

Network

OptionDefaultDescription
port8080HTTP (TCP) and QUIC (UDP) listening port
dataplane_portOverride QUIC port. Warning: May break NAT setups
tls_cert"kybertest_cert.pem"TLS certificate path
tls_key"kybertest_key.pem"TLS private key path
webtransport_gen_certificatetrueAuto-generate certificate for WebTransport

Session

OptionDefaultDescription
session.disable_same_site_protectionfalseSet SameSite=none. Dev only — disables CSRF protection

JWT Authentication

OptionDefaultDescription
auth.jwt.algorithm"HS256"Signature algorithm: "HS256" or "RS256"
auth.jwt.key{ plain = "kyber-authentication-development-key" }Signing key (see example)

Example

[controller]
port = 443
tls_cert = "/etc/kyber/server.pem"
tls_key = "/etc/kyber/server.key"

[controller.session]
disable_same_site_protection = false

[controller.auth.jwt]
algorithm = "RS256"
key = { file = "/etc/kyber/jwt-public.pem" }

Input [inputserver]

Input device handling.

OptionDefaultPlatformDescription
gamepad_force_xbox360falseWindowsForce Xbox 360 controller emulation
clipboard_allow_copytrueAllAllow reading host clipboard
clipboard_allow_pastetrueAllAllow writing to host clipboard
keyboard_key_repeattrueWindowsEnable key repeat on host

Example

[inputserver]
clipboard_allow_copy = true
clipboard_allow_paste = false

Virtual Display [windows_service.kidd]

Virtual display driver. Windows only.

Note: Requires the Kidd driver that will be published soon.

Options

OptionDefaultDescription
enabledtrueEnable/disable Kidd driver
monitor_count1Number of virtual monitors
plug_strategy"minimal_monitor_count"When to plug monitors (see below)

Plug Strategies

ValueBehavior
when_no_monitorOnly if no physical monitor detected
alwaysAlways plug configured number
minimal_monitor_countPlug only enough to reach monitor_count

Custom Display Modes

Add custom resolutions using [windows_service.kidd.extra_modes](../windows_service.kidd.extra_modes.md) (repeatable):

[windows_service.kidd]
enabled = true
plug_strategy = "minimal_monitor_count"
monitor_count = 2

[windows_service.kidd.extra_modes](../windows_service.kidd.extra_modes.md)
width = 1920
height = 800
vsync = 60

[windows_service.kidd.extra_modes](../windows_service.kidd.extra_modes.md)
width = 2560
height = 1080
vsync = 144