About this project

Rancher Desktop is an open-source desktop application that provides Kubernetes and container management on Windows, macOS and Linux. The project is an Electron application written mainly in TypeScript, bundling multiple technologies into one cohesive tool. It includes a command-line utility, rdctl, written in Go. The README is aimed at developers working on Rancher Desktop itself. User-facing information lives at rancherdesktop.io, and user documentation at docs.rancherdesktop.io. Development workflow: - Most tasks (development builds, packaging, unit tests, end-to-end tests) run through yarn scripts; some exceptions such as BATS tests exist. - Windows setup is offered in two forms: a Microsoft Windows 10 development virtual machine with an automated PowerShell setup script, or a manual environment using WSL, Scoop, nvm, Visual Studio with the Desktop development with C++ workload and Windows SDK, plus git line-ending configuration. - macOS setup uses nvm to install Node 22, yarn, and Go via Homebrew. On Apple M1 machines, an M1 environment variable must be set before installing dependencies and running scripts. - Linux setup requires Node.js v22 with development packages, yarn classic, Go 1.22 or later, and a C/C++ toolchain for node-gyp to build the ffi-napi package. Running and testing: - yarn dev runs a development version. - yarn test runs unit tests; yarn test:e2e runs integration tests. - yarn build and yarn package produce build output in dist/. Cross-compilation is not supported. Debugging: - Chrome remote debugging can be enabled with --remote-debugging-port and --remote-allow-origins flags on Linux, macOS and Windows, then accessed via Chrome at the local port. Extensions can be remote-debugged the same way after loading an extension. - GoLand (and similar JetBrains IDEs) can debug the dev environment using the Node.js plugin and a Node.js run configuration pointing at scripts/ts-wrapper.js scripts/dev.ts. Development builds: - On Windows and macOS, each commit triggers GitHub Actions that upload .exe and .dmg artifacts. - On Linux, GitHub Actions performs part of the process and Open Build Service finishes it. There are dev and stable channels; dev builds come from the main branch and release-* branches, with versions formatted as priority.branch.commit_time.commit. Instructions are provided for adding .deb and .rpm development repositories and for accessing development AppImage builds. API: - Rancher Desktop supports a limited HTTP-based API defined in pkg/rancher-desktop/assets/specs/command-api.yaml, with client examples in go/src/rdctl. The API is at version 1 but is considered internal and experimental, subject to change without notice. Contributing and further reading: - A CONTRIBUTING.md document and a docs/development/ directory provide additional developer documentation.