| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- ---
- title: Intro
- description: Get started with OpenCode.
- ---
- import { Tabs, TabItem } from "@astrojs/starlight/components"
- import config from "../../../config.mjs"
- export const console = config.console
- [**OpenCode**](/) is an AI coding agent built for the terminal.
- 
- Let's get started.
- ---
- #### Prerequisites
- To use OpenCode, you'll need:
- 1. A modern terminal emulator like:
- - [WezTerm](https://wezterm.org), cross-platform
- - [Alacritty](https://alacritty.org), cross-platform
- - [Ghostty](https://ghostty.org), Linux and macOS
- - [Kitty](https://sw.kovidgoyal.net/kitty/), Linux and macOS
- 2. API keys for the LLM providers you want to use.
- ---
- ## Install
- The easiest way to install OpenCode is through the install script.
- ```bash
- curl -fsSL https://opencode.ai/install | bash
- ```
- You can also install it with the following commands:
- - **Using Node.js**
- <Tabs>
- <TabItem label="npm">
- ```bash
- npm install -g opencode-ai
- ```
- </TabItem>
- <TabItem label="Bun">
- ```bash
- bun install -g opencode-ai
- ```
- </TabItem>
- <TabItem label="pnpm">
- ```bash
- pnpm install -g opencode-ai
- ```
- </TabItem>
- <TabItem label="Yarn">
- ```bash
- yarn global add opencode-ai
- ```
-
- </TabItem>
- </Tabs>
- - **Using Homebrew on macOS and Linux**
- ```bash
- brew install opencode
- ```
- - **Using Paru on Arch Linux**
- ```bash
- paru -S opencode-bin
- ```
- #### Windows
- - **Using Chocolatey**
- ```bash
- choco install opencode
- ```
- - **Using Scoop**
- ```bash
- scoop bucket add extras
- scoop install extras/opencode
- ```
- - **Using NPM**
- ```bash
- npm install -g opencode-ai
- ```
- Support for installing OpenCode on Windows using Bun is currently in progress.
- You can also grab the binary from the [Releases](https://github.com/sst/opencode/releases).
- ---
- ## Configure
- With OpenCode you can use any LLM provider by configuring their API keys.
- If you are new to using LLM providers, we recommend using [OpenCode Zen](/docs/zen).
- It's a curated list of models that have been tested and verified by the OpenCode
- team.
- 1. Run `opencode auth login`, select opencode, and head to [opencode.ai/auth](https://opencode.ai/auth).
- 2. Sign in, add your billing details, and copy your API key.
- 3. Paste your API key.
- ```bash
- $ opencode auth login
- ┌ Add credential
- │
- ◇ Select provider
- │ opencode
- │
- ● Create an api key at https://opencode.ai/auth
- │
- ◆ Enter your API key
- │ _
- └
- ```
- Alternatively, you can select one of the other providers. [Learn more](/docs/providers#directory).
- ---
- ## Initialize
- Now that you've configured a provider, you can navigate to a project that
- you want to work on.
- ```bash
- cd /path/to/project
- ```
- And run OpenCode.
- ```bash
- opencode
- ```
- Next, initialize OpenCode for the project by running the following command.
- ```bash frame="none"
- /init
- ```
- This will get OpenCode to analyze your project and create an `AGENTS.md` file in
- the project root.
- :::tip
- You should commit your project's `AGENTS.md` file to Git.
- :::
- This helps OpenCode understand the project structure and the coding patterns
- used.
- ---
- ## Usage
- You are now ready to use OpenCode to work on your project. Feel free to ask it
- anything!
- If you are new to using an AI coding agent, here are some examples that might
- help.
- ---
- ### Ask questions
- You can ask OpenCode to explain the codebase to you.
- :::tip
- Use the `@` key to fuzzy search for files in the project.
- :::
- ```txt frame="none" "@packages/functions/src/api/index.ts"
- How is authentication handled in @packages/functions/src/api/index.ts
- ```
- This is helpful if there's a part of the codebase that you didn't work on.
- ---
- ### Add features
- You can ask OpenCode to add new features to your project. Though we first recommend asking it to create a plan.
- 1. **Create a plan**
- OpenCode has a _Plan mode_ that disables its ability to make changes and
- instead suggest _how_ it'll implement the feature.
- Switch to it using the **Tab** key. You'll see an indicator for this in the lower right corner.
- ```bash frame="none" title="Switch to Plan mode"
- <TAB>
- ```
- Now let's describe what we want it to do.
- ```txt frame="none"
- When a user deletes a note, we'd like to flag it as deleted in the database.
- Then create a screen that shows all the recently deleted notes.
- From this screen, the user can undelete a note or permanently delete it.
- ```
- You want to give OpenCode enough details to understand what you want. It helps
- to talk to it like you are talking to a junior developer on your team.
- :::tip
- Give OpenCode plenty of context and examples to help it understand what you
- want.
- :::
- 2. **Iterate on the plan**
- Once it gives you a plan, you can give it feedback or add more details.
- ```txt frame="none"
- We'd like to design this new screen using a design I've used before.
- [Image #1] Take a look at this image and use it as a reference.
- ```
- :::tip
- Drag and drop images into the terminal to add them to the prompt.
- :::
- OpenCode can scan any images you give it and add them to the prompt. You can
- do this by dragging and dropping an image into the terminal.
- 3. **Build the feature**
- Once you feel comfortable with the plan, switch back to _Build mode_ by
- hitting the **Tab** key again.
- ```bash frame="none"
- <TAB>
- ```
- And asking it to make the changes.
- ```bash frame="none"
- Sounds good! Go ahead and make the changes.
- ```
- ---
- ### Make changes
- For more straightforward changes, you can ask OpenCode to directly build it
- without having to review the plan first.
- ```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
- We need to add authentication to the /settings route. Take a look at how this is
- handled in the /notes route in @packages/functions/src/notes.ts and implement
- the same logic in @packages/functions/src/settings.ts
- ```
- You want to make sure you provide a good amount of detail so OpenCode makes the right
- changes.
- ---
- ### Undo changes
- Let's say you ask OpenCode to make some changes.
- ```txt frame="none" "@packages/functions/src/api/index.ts"
- Can you refactor the function in @packages/functions/src/api/index.ts?
- ```
- But you realize that it is not what you wanted. You **can undo** the changes
- using the `/undo` command.
- ```bash frame="none"
- /undo
- ```
- OpenCode will now revert the changes you made and show your original message
- again.
- ```txt frame="none" "@packages/functions/src/api/index.ts"
- Can you refactor the function in @packages/functions/src/api/index.ts?
- ```
- From here you can tweak the prompt and ask OpenCode to try again.
- :::tip
- You can run `/undo` multiple times to undo multiple changes.
- :::
- Or you **can redo** the changes using the `/redo` command.
- ```bash frame="none"
- /redo
- ```
- ---
- ## Share
- The conversations that you have with OpenCode can be [shared with your
- team](/docs/share).
- ```bash frame="none"
- /share
- ```
- This will create a link to the current conversation and copy it to your clipboard.
- :::note
- Conversations are not shared by default.
- :::
- Here's an [example conversation](https://opencode.ai/s/4XP1fce5) with OpenCode.
- ---
- ## Customize
- And that's it! You are now a pro at using OpenCode.
- To make it your own, we recommend [picking a theme](/docs/themes), [customizing the keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands), or playing around with the [OpenCode config](/docs/config).
|