# Using Speakeasy CLI with mise toolkit

[mise](https://mise.jdx.dev/) (pronounced "MEEZ ahn plahs") is a polyglot tool version manager that serves as the front-end to your dev environment. It can manage development tools, environments, and tasks, replacing tools like asdf, nvm, pyenv, rbenv, and others.

This guide shows how to install and manage the Speakeasy CLI using mise toolkit.

## Prerequisites

First, you need to install mise on your system. Follow the [mise installation guide](https://mise.jdx.dev/installing-mise.html) for your operating system.

After installation, add mise to your shell configuration:

```bash
echo 'eval "$(mise activate bash)"' >> ~/.bashrc
# or for zsh
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
```

## Install Speakeasy CLI with mise

Once mise is installed and configured, you can install the Speakeasy CLI using one of the available backends:

<Callout title="Backend Selection" type="info">
  - **aqua**: Recommended backend that offers the most features and security
  - **ubi**: Universal Binary Installer, simpler but with fewer features Both backends will install the same Speakeasy CLI functionality.
</Callout>

## Verify Installation

After installation, verify that Speakeasy CLI is available:

```bash
speakeasy --version
```

You should see the version number of the installed Speakeasy CLI.

## Managing Versions

### Install a Specific Version

```bash
# Install a specific version using aqua backend
mise use aqua:speakeasy-api/speakeasy@1.556.2

# Or using ubi backend
mise use ubi:speakeasy-api/speakeasy@1.556.2
```

### List Available Versions

```bash
# List available versions
mise ls-remote speakeasy
```

### Update to Latest Version

```bash
# Update to the latest version
mise use speakeasy@latest
```

## Project-Specific Configuration

You can configure Speakeasy CLI versions per project using mise's configuration files:

### Using .mise.toml

Create a `.mise.toml` file in your project root:

```toml
[tools]
speakeasy = "1.556.2"
```

### Using .tool-versions

Alternatively, use the `.tool-versions` format:

```
speakeasy 1.556.2
```

When you enter the project directory, mise will automatically use the specified version.

## Authentication and Usage

After installing Speakeasy CLI with mise, authenticate and start using it:

```bash
# Authenticate with Speakeasy Platform
speakeasy auth login

# Start with quickstart
speakeasy quickstart
```

For the full set of CLI commands, type `speakeasy -h`.

## Using in CI/CD

To use Speakeasy CLI with mise in CI/CD pipelines:

```yaml
# Example GitHub Actions workflow
- name: Install mise
  uses: jdx/mise-action@v2
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Install Speakeasy CLI
  run: mise use aqua:speakeasy-api/speakeasy

- name: Use Speakeasy CLI
  run: speakeasy quickstart
  env:
    SPEAKEASY_API_KEY: ${{ secrets.SPEAKEASY_API_KEY }}
```

## Troubleshooting

### Command Not Found

If `speakeasy` command is not found after installation:

1. Ensure mise is properly activated in your shell
2. Restart your terminal or run `source ~/.bashrc` (or `~/.zshrc`)
3. Verify the installation with `mise list`

### Version Conflicts

If you have multiple version managers installed:

1. Check which tools are managing Speakeasy: `which speakeasy`
2. Ensure mise takes precedence in your PATH
3. Consider uninstalling other version managers to avoid conflicts

## Next Steps

- [Generate your first SDK](/docs/sdks/create-client-sdks)
- [Customize your SDK](/docs/customize-sdks/)
- [Set up CI/CD pipeline](/docs/speakeasy-reference/generation/ci-cd-pipeline)
