keyboard stuff
1# QMK CLI {#qmk-cli}
2
3## Overview {#overview}
4
5The QMK CLI (command line interface) makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more.
6
7### Requirements {#requirements}
8
9QMK requires Python 3.9 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). These are installed automatically when you install the QMK CLI.
10
11### Install Using Homebrew (macOS, some Linux) {#install-using-homebrew}
12
13If you have installed [Homebrew](https://brew.sh) you can tap and install QMK:
14
15```
16brew install qmk/qmk/qmk
17export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
18qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
19```
20
21### Install Using uv {#install-using-uv}
22
23If you have installed [uv](https://docs.astral.sh/uv/), the QMK CLI can be installed and managed as a uv tool:
24
25```
26uv tool install qmk
27export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
28qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
29```
30
31This installation can be updated via `uv tool upgrade qmk`. See [Upgrading tools](https://docs.astral.sh/uv/guides/tools/#upgrading-tools) for more information.
32
33### Install Using pip {#install-using-easy_install-or-pip}
34
35If your system is not listed above you can install QMK manually. First ensure that you have Python 3.9 (or later) installed and have installed pip. Then install QMK with this command:
36
37```
38python3 -m pip install qmk
39export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
40qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
41```
42
43### Packaging For Other Operating Systems {#packaging-for-other-operating-systems}
44
45We are looking for people to create and maintain a `qmk` package for more operating systems. If you would like to create a package for your OS please follow these guidelines:
46
47* Follow best practices for your OS when they conflict with these guidelines
48 * Document why in a comment when you do deviate
49* Install using a virtualenv
50* Instruct the user to set the environment variable `QMK_HOME` to have the firmware source checked out somewhere other than `~/qmk_firmware`.