---
title: "Get started"
description: "Get started with OpenCode."
---

<Callout type="warning">
  These docs are for the beta version of OpenCode, which will become OpenCode 2.0. The beta is still changing: we may
  wipe your data, things may break, and APIs, configuration, and plugin APIs may change.
</Callout>

<Callout type="note">
  OpenCode 2 installs and runs as `opencode2`. It does not replace OpenCode 1's `opencode` binary, so you can keep both
  versions installed and run them side by side.
</Callout>

## Install

<Callout type="note">The curl install script is not available in beta.</Callout>

You can also install it with the following package managers.

<Tabs>
  <Tab title="npm">
    ```bash
    npm install -g @opencode-ai/cli@next
    ```
  </Tab>
  <Tab title="bun">
    ```bash
    bun install -g --trust @opencode-ai/cli@next
    ```
  </Tab>
  <Tab title="pnpm">
    ```bash
    pnpm add -g --allow-build=@opencode-ai/cli @opencode-ai/cli@next
    ```
  </Tab>
  <Tab title="Yarn">
    ```bash
    yarn global add @opencode-ai/cli@next
    ```
  </Tab>
</Tabs>

The package uses a trusted postinstall script to select the native `opencode2` binary for your platform. The Bun and pnpm
commands above explicitly allow that script to run.

### Homebrew

Homebrew installation is not available in beta.

### Arch Linux

Arch Linux installation is not available in beta.

### Windows

<Callout type="tip">
  For the best experience on Windows, install [Windows Subsystem for Linux
  (WSL)](https://learn.microsoft.com/windows/wsl/install), open your Linux distribution, and use one of the beta package
  manager commands above.
</Callout>

<Tabs>
  <Tab title="chocolatey">
    Chocolatey installation is not available in beta.
  </Tab>
  <Tab title="scoop">
    Scoop installation is not available in beta.
  </Tab>
  <Tab title="mise">
    Mise installation is not available in beta.
  </Tab>
  <Tab title="docker">
    Docker installation is not available in beta.
  </Tab>
</Tabs>

Standalone binaries are not available in beta.

---

#### Prerequisites

To use OpenCode in your terminal, you'll need:

1. A modern terminal emulator like:
   - [Ghostty](https://ghostty.org), Linux and macOS
   - [WezTerm](https://wezterm.org), cross-platform
   - [Alacritty](https://alacritty.org), cross-platform
   - [Kitty](https://sw.kovidgoyal.net/kitty/), Linux and macOS
2. API keys for the LLM providers you want to use.

---

## Connect

With OpenCode you can use any LLM provider by configuring its API key.

Run `/connect` in the TUI and select your provider.

```text
/connect
```

If you'd like easy access to all the best coding models you can try out
[OpenCode Console](https://console.opencode.ai).

You can also try [OpenCode Go](https://opencode.ai/go) a $10/month subscription
plan that grants you access to the best open source models.

Use `/models` to browse the providers and models available to your project. See [Providers](/providers) for connection and
configuration details.

---

## Usage

You are now ready to use OpenCode in your project. Here are a few common workflows.

### Ask questions

Ask OpenCode to explain your codebase.

<Callout type="tip">Use `@` to fuzzy search for files in the project.</Callout>

```text
How is authentication handled in @packages/functions/src/api/index.ts
```

### Add features

Ask OpenCode to add a feature by describing the desired behavior and providing relevant context.

```text
When a user deletes a note, flag it as deleted in the database.
Create a screen that shows recently deleted notes.
From this screen, the user can restore a note or permanently delete it.
```

<Callout type="tip">Give OpenCode plenty of context and examples.</Callout>

### Undo changes

Use `/undo` when a change isn't what you wanted.

```text
/undo
```

OpenCode stages a conversation revert and restores your original message so you can revise it. In a Git repository, it
also restores file changes when snapshots were captured successfully. Run `/undo` multiple times to move the conversation
boundary back, or use `/redo` to restore the staged conversation and files. See [Undo](/snapshots) for
limitations and safety details.

```text
/redo
```

---

## Customize

Make OpenCode your own by [picking a theme](/themes), [customizing
keybinds](https://opencode.ai/docs/keybinds), [configuring formatters](/formatters), [creating commands](/commands), or
editing the [OpenCode config](/config).
