chore: readme update

This commit is contained in:
aran-yogesh 2026-03-06 14:23:29 -08:00
parent cd671fdca2
commit 1d19c05b7e

123
README.md
View file

@ -10,39 +10,126 @@
<h1>Open SWE - An Open-Source Asynchronous Coding Agent</h1>
</div>
> [!WARNING]
> **⚠️ DEPRECATION NOTICE**
>
> This repository is no longer actively maintained and will not receive further updates. The project has been deprecated and users are advised to seek alternative solutions for their coding agent needs.
Open SWE is an open-source cloud-based asynchronous coding agent built with [LangGraph](https://docs.langchain.com/oss/javascript/langgraph/overview). It autonomously understands codebases, plans solutions, and executes code changes across entire repositories—from initial planning to opening pull requests.
> [!TIP]
> Try out Open SWE yourself using our [public demo](https://swe.langchain.com)!
>
> **Note: you're required to set your own LLM API keys to use the demo.**
> [!NOTE]
> 📚 See the **Open SWE documentation files [here](https://github.com/langchain-ai/open-swe/tree/main/apps/docs)**
>
> 💬 Read the **announcement blog post [here](https://blog.langchain.com/introducing-open-swe-an-open-source-asynchronous-coding-agent/)**
>
> 📺 Watch the **announcement video [here](https://youtu.be/TaYVvXbOs8c)**
# Features
![UI Screenshot](./static/ui-screenshot.png)
- 📝 **Planning**: Open SWE has a dedicated planning step which allows it to deeply understand complex codebases and nuanced tasks. You're also given the ability to accept, edit, or reject the proposed plan before it's executed.
- 🤝 **Human in the loop**: With Open SWE, you can send it messages while it's running (both during the planning and execution steps). This allows for giving real time feedback and instructions without having to interrupt the process.
- 🏃 **Parallel Execution**: You can run as many Open SWE tasks as you want in parallel! Since it runs in a sandbox environment in the cloud, you're not limited by the number of tasks you can run at once.
- 🧑‍💻 **End to end task management**: Open SWE will automatically create GitHub issues for tasks, and create pull requests which will close the issue when implementation is complete.
- 🔗 **Trigger from Linear, Slack, or GitHub** — mention `@openswe` in a Linear comment, Slack thread, or GitHub PR comment to kick off a task
- 👀 **Instant acknowledgement** — reacts with 👀 the moment it picks up your message so you know it's on it
- 💬 **Message it while it's running** — send follow-up messages mid-task and it'll pick them up before its next step
- 🔀 **Run multiple tasks in parallel** — each task runs in its own isolated cloud sandbox, no queuing
- 🔐 **GitHub OAuth built-in** — authenticates with your GitHub account automatically, no token setup needed
- 🚀 **Opens PRs automatically** — commits changes and opens a draft PR when done, linked back to your Linear ticket
## Installation
### Prerequisites
- Python 3.11+
- [uv](https://docs.astral.sh/uv/) package manager
- [LangGraph CLI](https://langchain-ai.github.io/langgraph/cloud/reference/cli/)
- [ngrok](https://ngrok.com/) (for exposing local webhooks)
### 1. Clone the repo
```bash
git clone https://github.com/langchain-ai/open-swe.git
cd open-swe/apps/agent
```
### 2. Install dependencies
```bash
uv sync
```
### 3. Set environment variables
Create a `.env` file in `apps/agent/` with the following:
```bash
# LangSmith
LANGSMITH_API_KEY_PROD="" # Your LangSmith API key
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_HOST_API_URL="https://api.host.langchain.com"
LANGCHAIN_TRACING_V2="true"
LANGCHAIN_PROJECT=""
# LLM
ANTHROPIC_API_KEY="" # Anthropic API key (recommended default provider)
# GitHub OAuth (via LangSmith agent auth)
GITHUB_OAUTH_PROVIDER_ID="" # GitHub OAuth provider ID from LangSmith
X_SERVICE_AUTH_JWT_SECRET="" # Secret for service JWT tokens
# GitHub App (Bot)
GITHUB_APP_ID="" # GitHub App ID
GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
"
GITHUB_APP_INSTALLATION_ID="" # GitHub App installation ID
# GitHub Webhook
GITHUB_WEBHOOK_SECRET="" # Secret for verifying GitHub webhooks
# Linear
LINEAR_API_KEY="" # Linear API key
LINEAR_WEBHOOK_SECRET="" # Secret for verifying Linear webhooks
# Slack (optional)
SLACK_BOT_TOKEN=""
SLACK_BOT_USER_ID=""
SLACK_BOT_USERNAME=""
SLACK_SIGNING_SECRET=""
# Sandbox
DEFAULT_SANDBOX_TEMPLATE_NAME="" # LangSmith sandbox template name (uses default if not set)
# Token encryption
TOKEN_ENCRYPTION_KEY="" # 32-byte url-safe base64 key for encrypting GitHub tokens
```
### 4. Run the agent
In one terminal, start the LangGraph dev server:
```bash
uv run langgraph dev
```
In a second terminal, start the webhook server:
```bash
make run
```
### 5. Expose webhooks with ngrok
In a third terminal, expose the webhook server so Linear/GitHub/Slack can reach it:
```bash
ngrok http 8000
```
Use the ngrok HTTPS URL as your webhook endpoint when configuring Linear, GitHub, and Slack integrations (e.g. `https://xxxx.ngrok.io/webhooks/linear`).
The LangGraph server runs on `http://localhost:2024` and the webhook server on `http://localhost:8000`.
---
## Usage
Open SWE can be used in multiple ways:
- 🖥️ **From the UI**. You can create, manage and execute Open SWE tasks from the [web application](https://swe.langchain.com).
- 📝 **From GitHub**. You can start Open SWE tasks directly from GitHub issues simply by adding a label `open-swe`, or `open-swe-auto` (adding `-auto` will cause Open SWE to automatically accept the plan, requiring no intervention from you). The default `open-swe` labels now use Claude Opus 4.5 for optimal performance. Note: `open-swe-max` and `open-swe-max-auto` labels are deprecated and should no longer be used.
- 📋 **From Linear**. Mention `@openswe` in a comment on any Linear issue and describe the task you want it to perform (e.g. `@openswe fix the login bug described above`). The agent will pick up the issue context along with your instructions and start working on it.
- 🐙 **GitHub (for Open SWE-generated PRs)**. Once Open SWE completes implementation, it pushes changes to a branch `open-swe/<thread-id>` and opens a **draft pull request** linking back to the originating Linear issue. From there, you can review the code, request changes, and merge when ready.