# Installation

> Install Elide on macOS, Linux, WSL or Windows with the install script, PowerShell or a package manager, pick a release channel, and add Python.

Choose the installer for your operating system. The scripts install the latest release by default; pass
`--channel=nightly` for daily builds. Check [system requirements](#system-requirements) before installing.

Already installed? [Run your first program](https://elide.help/docs/getting-started).

For Python, use the install script with `--with-python`, Homebrew, or a container. The package installers do not
include Python; see [Python](#python).

## macOS, Linux, or WSL

```bash
curl -sSL --tlsv1.2 elide.sh | bash
```

Installs under `${ELIDE_HOME:-${XDG_DATA_HOME:-$HOME/.local/share}/elide}` and adds `bin` to your shell profile.
Pass options after `bash -s --`:

```bash
curl -sSL --tlsv1.2 elide.sh | bash -s -- --channel=nightly --with-python
```

| Option | Effect |
| --- | --- |
| `--channel=release` or `--channel=nightly` | Select the channel (default `release`). |
| `--install-rev=VERSION` | Install a specific version. |
| `--install-dir=PATH` | Install somewhere else. |
| `--with-python` | Also install the Python component. |
| `--libc=glibc` or `--libc=musl` | Pick the Linux `amd64` build (default: detected, see [System requirements](#system-requirements)). |
| `--no-path` | Leave shell profiles unchanged. |
| `--help` | List every option without installing. |

## Windows

Run this in PowerShell. For WSL, use the [Linux command](#macos-linux-or-wsl) inside your WSL terminal.

```powershell
& ([scriptblock]::Create((irm https://elide.sh/install.ps1)))
```

Installs under `$env:ELIDE_HOME`, or `$env:LOCALAPPDATA\elide` when that is unset. Options: `-Channel`,
`-InstallRev`, `-InstallDir`, `-WithPython`, and `-NoPath`.

## Python

Python is an optional component:

```bash
elide setup python
```

| Install method | Python |
| --- | --- |
| Install script | `--with-python` (`-WithPython` on Windows), or `elide setup python` later |
| Homebrew | Included |
| Container images | Included |
| apt, RPM, MSI, macOS installers | Not available; use one of the methods above |

`elide setup python` uses the binary's own channel; `--channel=release` or `--channel=nightly` overrides it.

## Other methods

- [Packages & Installers](https://elide.help/docs/installation/packages): Homebrew, apt, RPM, macOS and Windows installers
- [Container Images](https://elide.help/docs/installation/containers)
- [Continuous Integration](https://elide.help/docs/installation/ci-cd)
- [GitHub Releases](https://github.com/elide-dev/elide/releases): archives, checksums, and older builds. Keep an
  archive's `bin/` and `lib/` together; `bin/elide` needs `lib/`.

Update a script install with `elide upgrade`, and a package-manager install through its manager.

## Verify the install

```bash
elide --version
elide info
```

<img src="https://elide.help/assets/demos/install-verify.gif" alt="Verifying an Elide installation from the command line" width="1591" height="800" loading="lazy" decoding="async" class="rounded-lg border border-border my-6 w-full" />

`elide info` lists the available languages, including `python` when it is installed. If the shell cannot find
`elide`, open a new terminal or add the install's `bin` folder to `PATH`.

**Next: [run your first program](https://elide.help/docs/getting-started)** in JavaScript or TypeScript, Python, or Java and Kotlin.
If Python is missing, follow [the component setup](https://elide.help/docs/troubleshooting#python-is-not-installed).

## System requirements

| Platform | Architecture | Minimum | Python component |
| --- | --- | --- | --- |
| Linux | `amd64` | glibc 2.17, kernel 4.18 | Yes |
| Linux, static musl build | `amd64` | kernel 4.18 | No |
| Linux | `arm64` | glibc 2.17, kernel 4.18 | Yes |
| macOS | Apple Silicon (`arm64`) | macOS 11 | Yes |
| Windows | `amd64` | — | Yes |

- glibc 2.17 covers RHEL and CentOS 7, Amazon Linux 2, Ubuntu 14.04, Debian 8 and later; the kernel must also be
  4.18 or newer.
- The static musl build (`elide.linux-amd64-musl.*` on [GitHub Releases](https://github.com/elide-dev/elide/releases))
  runs on any `amd64` Linux, including Alpine. It runs JavaScript, TypeScript and WebAssembly, and compiles Java and
  Kotlin; it includes no Python and no JDK, so `elide java` runs programs on an installed JDK (`JAVA_HOME` or `java`
  on `PATH`), and `elide native-image` needs an installed `native-image`. The install script picks it on musl hosts;
  `--libc=glibc` or `--libc=musl` overrides the choice.
- On `arm64`, musl is not supported (`exec elide: no such file or directory`); use a
  [container image](https://elide.help/docs/installation/containers) there.
- Intel Macs are not supported.

Check your glibc with:

```bash
ldd --version | head -1
```
