> ## Documentation Index
> Fetch the complete documentation index at: https://yukta.infenia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Install Yukta

> Install the Yukta server and the yukta-cli client on Linux, macOS or Windows, with Docker, or with the client alone, and check that the server is up.

<dl />

> [!NOTE]
>
> Yukta is in **alpha**. Release `0.1.0-alpha.4` and later ship a native server and client for Linux (`amd64`, `arm64`), macOS and Windows (`amd64`), plus a multi-architecture Docker image. `0.1.0-alpha.3` and earlier have a native server for Linux `amd64` only: with those, on any other system, use Docker for the server. The macOS and Windows builds are not signed or notarized. Breaking changes to the workflow JSON, the API and the MCP tools are still possible before 1.0. See [Releases](https://yukta.infenia.com/reference/releases.md) for what each release contains.

By default the server keeps sessions, workflows and run history **in memory**, so they are gone when it stops. Storing them on disk is part of the Plus edition, see [Licensing and editions](https://yukta.infenia.com/reference/licensing.md).

## Prerequisites

* A terminal and `curl`.
* Linux, macOS or Windows `amd64` (or Linux `arm64`) with a release that has a native server for it, or Docker for any other system.
* Port `9858` free on your machine.

## Install the server and the client on Linux

```bash theme={"system"}
curl -fsSL https://github.com/infenia/yukta/releases/download/v0.1.0-alpha.4/install.sh | sh
```

The script downloads the files for your system, checks their SHA-256 checksums, and stops without installing anything if one does not match. When `cosign` is installed it also checks the Sigstore signature and tells you it did. It never uses `sudo` and does not edit your shell profile. It puts `yukta` (the server) and `yukta-cli` (the client) in `/usr/local/bin` when you run it as root, or in `~/.local/bin` otherwise.

You should see the installer name the version and the folder, then end with:

```text theme={"system"}
Installed: /home/you/.local/bin/yukta (server) <version>
Installed: /home/you/.local/bin/yukta-cli (client) <version>
```

Your folder differs, and `<version>` is the release you installed. If the script prints `is not on your PATH`, add the folder it names to `PATH`.

Start the server:

```bash theme={"system"}
yukta
```

It stays in the foreground and listens on `127.0.0.1:9858`, so only your machine can reach it.

## Connect your AI agents

At the end of an install on a terminal, the script lists the AI agents it found (Claude Code, Codex, Antigravity, Cursor, VS Code, Windsurf, OpenCode) and asks whether to connect them. Connecting registers the Yukta MCP server in the agent and installs the Yukta skills, so the agent can run and steer workflows through MCP, `yukta-cli` or REST. It asks only where someone can answer, and never edits an agent's configuration otherwise.

```bash theme={"system"}
# connect the agents found, without asking
curl -fsSL https://github.com/infenia/yukta/releases/download/v0.1.0-alpha.4/install.sh | sh -s -- --agents auto
# or name them; "none" skips the step
curl -fsSL <install.sh url> | sh -s -- --agents claude,codex
```

On Windows set `$env:YUKTA_AGENTS = 'auto'` (or a list, or `'none'`) before running `install.ps1`. Any time later, `yukta-cli agents list|install|uninstall` does the same; see [Connect an AI assistant](https://yukta.infenia.com/guides/ai/connect-an-assistant.md) for what it changes and how to undo it. Uninstalling Yukta with the script disconnects the agents it connected.

## Install on macOS

From `0.1.0-alpha.4`, the same script installs the native server too:

```bash theme={"system"}
curl -fsSL https://github.com/infenia/yukta/releases/download/v<version>/install.sh | sh
```

Replace `<version>` with that release, for example `0.1.0-alpha.4`; `latest` skips pre-releases. The macOS server is built for Intel. On Apple silicon it runs through Rosetta 2 (`softwareupdate --install-rosetta`), and you still get a native `yukta-cli`. The binaries are not signed or notarized, so macOS warns about a file you download in a browser. The script avoids that warning. With the `0.1.0-alpha.3` (or earlier) script, only the client is installed and the Docker command for the server is printed.

## Install on Windows

From `0.1.0-alpha.4`, download `yukta-<version>-windows-amd64.zip` from the [release page](https://github.com/infenia/yukta/releases), check it against `SHA256SUMS` (see [Releases](https://yukta.infenia.com/reference/releases.md#verify-a-download)), unzip it and run `yukta.exe` from PowerShell:

```powershell theme={"system"}
Expand-Archive yukta-<version>-windows-amd64.zip .
.\yukta-<version>-windows-amd64\yukta.exe
```

The zip holds `yukta.exe` and `yukta-cli.exe`. SmartScreen warns about the unsigned download: choose **More info**, then **Run anyway**. A one-line `install.ps1` is not part of the releases yet. For `0.1.0-alpha.3` and earlier, download `yukta-cli-windows-amd64.exe` for the client and run the server with Docker Desktop or WSL 2.

## Install the server with Docker

Use this on a system without a native server, or when you prefer a container. The image is multi-architecture (`linux/amd64` and `linux/arm64`) from `0.1.0-alpha.4`.

```bash theme={"system"}
docker run --rm -p 127.0.0.1:9858:9858 \
  -e YUKTA_API_KEYS_0_NAME=admin -e YUKTA_API_KEYS_0_KEY=change-me -e YUKTA_API_KEYS_0_ROLE=ADMIN \
  ghcr.io/infenia/yukta:0.1.0-alpha.4
```

A container listens on all its interfaces, so the server refuses to start without an API key. Replace `change-me` with a long random value. Every `curl` call to this server then needs `-H "X-API-Key: <your key>"`, `yukta-cli` reads the key from `YUKTA_TOKEN`, and the web UI asks for it on first use. The image has no shell, runs as an unprivileged user and keeps data in memory unless you mount a folder, see [Deploy Yukta](https://yukta.infenia.com/guides/operate/deploy.md).

## Install only the client

If a server already runs somewhere, install the client alone:

```bash theme={"system"}
curl -fsSL https://github.com/infenia/yukta/releases/download/v0.1.0-alpha.4/install.sh | sh -s -- --cli-only
```

With the `0.1.0-alpha.3` (or earlier) script on macOS, `--cli-only` is what you get anyway. On Windows, download `yukta-cli-windows-amd64.exe` from the release page.

Point the client at your server with `--url` or `YUKTA_SERVER_URL`, and give it a key with `YUKTA_TOKEN` or `--token-file`. The client sends the key as a bearer token and refuses to send it over plain `http` to another host unless you pass `--insecure-token`.

## Check that it works

In a second terminal:

```bash theme={"system"}
curl http://localhost:9858/actuator/health
```

```json theme={"system"}
{"groups":["liveness","readiness"],"status":"UP"}
```

Add the `X-API-Key` header when you started the container with a key. Then check the client:

```bash theme={"system"}
yukta-cli --version
yukta-cli session list
```

```text theme={"system"}
yukta-cli version <version>
Session ID
```

A new server has no sessions, so the second command prints only the column heading. Open `http://localhost:9858/` for the web UI.

> **Stuck?** If `yukta: command not found`, the install folder is not on your `PATH`. Run `~/.local/bin/yukta`, or add that folder. If the server says the address is in use, another program holds port `9858`: stop it, or start Yukta with `--server.port=<other>` and pass `--url` to the client. If Docker exits at once with a message about an API key, you left out one of the three `YUKTA_API_KEYS_0_*` variables.

## Uninstall

On Linux and macOS, run the same script with `--uninstall`. It first disconnects the AI agents Yukta had set up, then removes `yukta` and `yukta-cli` (and the `*.prev` copies kept by an upgrade) from the install folder and nothing else:

```bash theme={"system"}
curl -fsSL https://github.com/infenia/yukta/releases/download/v0.1.0-alpha.4/install.sh | sh -s -- --uninstall
```

Add `--install-dir <dir>` if you installed somewhere other than `/usr/local/bin` (as root) or `~/.local/bin`. Stop a running server first. Sessions kept in a folder with `YUKTA_BOOTSTRAP_DIR` are not touched; delete that folder yourself if you want them gone.

On Windows, delete the folder you unzipped. With Docker, `docker rmi ghcr.io/infenia/yukta:<version>` removes the image (a container started with `--rm` is already gone).

## What you just did

You installed one program that holds the engine, the REST API, the MCP endpoint, the web UI and the built-in plugins, plus a small client for it. Nothing was installed system-wide and nothing leaves your machine except the download.

## Where to go next

* **Run a workflow now:** [Your first workflow](https://yukta.infenia.com/learn/your-first-workflow.md).
* **Upgrade, uninstall or pin a version:** [Deploy Yukta](https://yukta.infenia.com/guides/operate/deploy.md) and [Upgrade and roll back](https://yukta.infenia.com/guides/operate/upgrade-and-roll-back.md).
* **Verify a download yourself:** [Releases](https://yukta.infenia.com/reference/releases.md#verify-a-download).
* **Keep sessions across restarts:** [Persist sessions](https://yukta.infenia.com/guides/operate/persist-sessions.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.