# Getting Started

Currently CUE can only be installed from source.

## Install CUE from source

### Prerequisites

Go 1.12 or higher (see below)

### Installing CUE

To download and install the `cue` command line tool run

```
go get -u cuelang.org/go/cmd/cue
```

And make sure the install directory is in your path.

To also download the API and documentation, run

```
go get -u cuelang.org/go/cue
```


### Installing Go

#### Download Go

You can load the binary for Windows, MacOS X, and Linux at  https://golang.org/dl/. If you use a different OS you can install Go from source.

#### Install Go

Follow the instructions at  https://golang.org/doc/install#install.
Make sure the go binary is in your path.
CUE uses Go modules, so there is no need to set up a GOPATH.
