You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: DEVELOPMENT.md
+68-17Lines changed: 68 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,28 +11,47 @@
11
11
12
12
</div>
13
13
14
-
# JetKVM Development Guide
14
+
15
+
16
+
15
17
16
18
Welcome to JetKVM development! This guide will help you get started quickly, whether you're fixing bugs, adding features, or just exploring the codebase.
17
19
18
20
## Get Started
19
21
22
+
20
23
### Prerequisites
21
24
-**A JetKVM device** (for full development)
22
25
-**[Go 1.24.4+](https://go.dev/doc/install)** and **[Node.js 22.15.0](https://nodejs.org/en/download/)**
23
26
-**[Git](https://git-scm.com/downloads)** for version control
24
27
-**[SSH access](https://jetkvm.com/docs/advanced-usage/developing#developer-mode)** to your JetKVM device
28
+
-**Audio build dependencies:**
29
+
-**New in this release:** The audio pipeline is now fully in-process using CGO, ALSA, and Opus. You must run the provided scripts in `tools/` to set up the cross-compiler and build static ALSA/Opus libraries for ARM. See below.
30
+
25
31
26
32
### Development Environment
27
33
28
-
**Recommended:** Development is best done on **Linux** or **macOS**.
34
+
**Recommended:** Development is best done on **Linux** or **macOS**.
35
+
36
+
#### Apple Silicon (M1/M2/M3) Mac Users
37
+
38
+
If you are developing on an Apple Silicon Mac, you should use a devcontainer to ensure compatibility with the JetKVM build environment (which targets linux/amd64 and ARM). There are two main options:
39
+
40
+
-**VS Code Dev Containers**: Open the project in VS Code and use the built-in Dev Containers support. The configuration is in `.devcontainer/devcontainer.json`.
41
+
-**Devpod**: [Devpod](https://devpod.sh/) is a fast, open-source tool for running devcontainers anywhere. If you use Devpod, go to **Settings → Experimental → Additional Environmental Variables** and add:
42
+
-`DOCKER_DEFAULT_PLATFORM=linux/amd64`
43
+
This ensures all builds run in the correct architecture.
44
+
-**devcontainer CLI**: You can also use the [devcontainer CLI](https://github.com/devcontainers/cli) to launch the devcontainer from the terminal.
45
+
46
+
This approach ensures compatibility with all shell scripts, build tools, and cross-compilation steps used in the project.
29
47
30
48
If you're using Windows, we strongly recommend using **WSL (Windows Subsystem for Linux)** for the best development experience:
31
49
-[Install WSL on Windows](https://docs.microsoft.com/en-us/windows/wsl/install)
Copy file name to clipboardExpand all lines: README.md
+17-7Lines changed: 17 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,13 +11,20 @@
11
11
12
12
</div>
13
13
14
-
JetKVM is a high-performance, open-source KVM over IP (Keyboard, Video, Mouse) solution designed for efficient remote management of computers, servers, and workstations. Whether you're dealing with boot failures, installing a new operating system, adjusting BIOS settings, or simply taking control of a machine from afar, JetKVM provides the tools to get it done effectively.
14
+
15
+
16
+
JetKVM is a high-performance, open-source KVM over IP (Keyboard, Video, Mouse, **Audio**) solution designed for efficient remote management of computers, servers, and workstations. Whether you're dealing with boot failures, installing a new operating system, adjusting BIOS settings, or simply taking control of a machine from afar, JetKVM provides the tools to get it done effectively.
17
+
18
+
19
+
20
+
15
21
16
22
## Features
17
23
18
-
-**Ultra-low Latency** - 1080p@60FPS video with 30-60ms latency using H.264 encoding. Smooth mouse and keyboard interaction for responsive remote control.
24
+
-**Ultra-low Latency** - 1080p@60FPS video with 30-60ms latency using H.264 encoding. Smooth mouse, keyboard, and audio for responsive remote control.
25
+
-**First-Class Audio Support** - JetKVM now supports in-process, low-latency audio streaming using ALSA and Opus, fully integrated via CGO. No external audio binaries or IPC required—audio is delivered directly from the device to your browser.
19
26
-**Free & Optional Remote Access** - Remote management via JetKVM Cloud using WebRTC.
20
-
-**Open-source software** - Written in Golang on Linux. Easily customizable through SSH access to the JetKVM device.
27
+
-**Open-source software** - Written in Golang (with CGO for audio) on Linux. Easily customizable through SSH access to the JetKVM device.
21
28
22
29
## Contributing
23
30
@@ -31,20 +38,23 @@ The best place to search for answers is our [Documentation](https://jetkvm.com/d
31
38
32
39
If you've found an issue and want to report it, please check our [Issues](https://github.com/jetkvm/kvm/issues) page. Make sure the description contains information about the firmware version you're using, your platform, and a clear explanation of the steps to reproduce the issue.
33
40
41
+
42
+
34
43
# Development
35
44
36
-
JetKVM is written in Go & TypeScript. with some bits and pieces written in C. An intermediate level of Go & TypeScript knowledge is recommended for comfortable programming.
45
+
JetKVM is written in Go & TypeScript, with some C for low-level integration. **Audio support is now fully in-process using CGO, ALSA, and Opus—no external audio binaries required.**
37
46
38
-
The project contains two main parts, the backend software that runs on the KVM device and the frontend software that is served by the KVM device, and also the cloud.
47
+
The project contains two main parts: the backend software (Go, CGO) that runs on the KVM device, and the frontend software (React/TypeScript) that is served by the KVM device and the cloud.
39
48
40
49
For comprehensive development information, including setup, testing, debugging, and contribution guidelines, see **[DEVELOPMENT.md](DEVELOPMENT.md)**.
41
50
42
51
For quick device development, use the `./dev_deploy.sh` script. It will build the frontend and backend and deploy them to the local KVM device. Run `./dev_deploy.sh --help` for more information.
43
52
53
+
44
54
## Backend
45
55
46
-
The backend is written in Go and is responsible for the KVM device management, the cloud API and the cloud web.
56
+
The backend is written in Go and is responsible for KVM device management, audio/video streaming, the cloud API, and the cloud web.**Audio is now captured and encoded in-process using ALSA and Opus via CGO, with no external processes or IPC.**
47
57
48
58
## Frontend
49
59
50
-
The frontend is written in React and TypeScript and is served by the KVM device. It has three build targets: `device`, `development` and `production`. Development is used for development of the cloud version on your local machine, device is used for building the frontend for the KVM device and production is used for building the frontend for the cloud.
60
+
The frontend is written in React and TypeScript and is served by the KVM device. It has three build targets: `device`, `development`, and `production`. Development is used for the cloud version on your local machine, device is used for building the frontend for the KVM device, and production is used for building the frontend for the cloud.
0 commit comments