Lesavka
Lesavka is a remote-control and remote-presence client/server pair built to make a far-away desktop feel as direct and usable as possible. It combines live eye-feed previews, input routing, device staging, capture power control, clipboard send, and operator-focused observability in one launcher.
What Lesavka Can Do
- Launch and control a live remote relay session from a local desktop app
- Preview the left and right remote eye feeds inline or in broken-out windows
- Stage the local camera, microphone, speaker, keyboard, and mouse before connecting
- Route keyboard and mouse ownership between local and remote on demand
- Send clipboard text into the remote session
- Control relay GPIO/capture power from the launcher
- Show local and remote build versions so we know which code is running on each side
- Install cleanly through idempotent client/server install scripts
Current Capabilities
- KDE launcher integration for the local client install
- Session console with copy and breakout support
- Adjustable per-eye server-side capture controls for resolution, fps, and bitrate
- Adjustable breakout sizing for each eye feed with standard client-side display profiles
- Automatic redocking of broken-out eye windows when the relay disconnects
- Modifier-aware keyboard relay that now supports
Shift+a -> A - Client and server semver visible in the launcher
Install / Update
Local Client
cd /home/brad/Development/lesavka
git pull --ff-only
sudo LESAVKA_REF=master ./scripts/install/client.sh
Server (theia)
ssh theia 'cd /var/src/lesavka && git pull --ff-only && sudo LESAVKA_REF=master ./scripts/install/server.sh'
These install scripts are intended to be the trusted, repeatable delivery path. They pull the requested ref, ensure the environment is ready, build the correct binaries, install them into sensible system paths, and refresh the launched application or service.
Capture / Display Profiles
- Each eye now has separate server-side capture controls for
resolution,fps, andbitrate. Sourceresolution keeps the HDMI device's own H.264 stream and asks the server to pace it. That is the lowest-overhead path, but its keyframe cadence comes from the capture hardware.- Standard capture resolutions such as
360p,540p,720p,900p, and1080pforce the server to re-encode the eye feed. Once you choose one of those, fps and bitrate become explicit knobs instead of being hidden inside a single preset. - Breakout display profiles use standard client-side sizes plus
Source SizeandDisplay Size, so the popout window size is explicit instead of implied.
Versioning
- Lesavka uses semver:
<major>.<minor>.<patch>. - Bump
patchfor bug fixes, stability work, profile tuning, and install-script fixes that should not change the operator workflow. - Bump
minorfor new user-visible features, diagnostics, launcher controls, or protocol additions that remain backward-compatible when client and server are updated together. - Bump
majorfor breaking changes to protocol, install behavior, or operator workflows that require a deliberate upgrade step.
Quality Gate
- The CI gate order is documented in
docs/quality-gate.md. - Runtime and test environment variables are indexed in
docs/operational-env.md. - Media reliability is a first-class check, not just a subset of normal tests.
Operator Workflow
- Install or update the client and server through the install scripts.
- Launch
Lesavkafrom the KDE application launcher or runlesavka. - Stage the local devices you want the next relay session to inherit.
- Connect the relay and confirm the eye previews come online.
- Route inputs to the remote when you are ready to drive the far-side machine.
- Use the session console and diagnostics tools to understand what the session is doing.
Roadmap
Highest-Impact Next Steps
- Add a real diagnostics panel with breakout/copy support
- Show stream health metrics such as fps, dropped frames, RTT, jitter, and packet loss
- Improve client decoder selection so preview and breakout paths prefer hardware acceleration when possible
- Surface server adaptive-stream stats directly in the launcher
After That
- Add adaptive bitrate and resolution controls
- Add synthetic motion/input test scenes for objective latency and smoothness measurement
- Add artifact-quality scoring for controlled test patterns
- Keep tightening the “feels local” experience for typing, motion, and conference-style usage
Philosophy
Lesavka is meant to be practical. The goal is not just to establish a remote session, but to make that session reliable, measurable, and comfortable enough for important real-world work.
Description
Languages
Rust
82.8%
Shell
14.9%
C++
1.4%
Python
0.8%