OpenHands is an open-source platform for coding agents. An OpenHands agent works in an isolated environment, reads and changes code, runs commands and tests and can prepare pull requests. The project started in 2024 under the name OpenDevin as an open answer to Devin and was later renamed OpenHands. You can run OpenHands yourself, connect any common language model and build your own agents with an SDK. This article explains its components, how to get started, its strengths and its limitations.
Fact sheet (as of October 2026)
| Characteristic | Details |
|---|---|
| License | MIT |
| GitHub | around 90,000 stars (as of October 2026) |
| Languages | Python (agent SDK), TypeScript (interface, client) |
| Models | Your choice, e.g. Claude, GPT, Gemini or open models via OpenAI-compatible endpoints |
| Deployment | Local, your own server, OpenHands Cloud or Enterprise in your own VPC |
| Cloud pricing | Individual free for one person with up to 10 conversations per day, with your own API key or model usage at cost; Enterprise on request |
The components
| Component | Purpose |
|---|---|
| Software Agent SDK | Python library (plus TypeScript and REST interfaces) for building your own coding agents with tools for the terminal, files and task planning |
| Agent Server | REST API that runs several agents on one machine or in Docker or Kubernetes environments |
| Agent Canvas | Web interface for starting, observing and controlling agents |
| CLI | Command-line agent based on the SDK, similar to Claude Code or Codex CLI |
| Automation Server | Starts agents on a schedule or in response to events, such as new issues |
| OpenHands Cloud / Enterprise | Hosted version with integrations for GitHub, GitLab, Bitbucket, Slack, Jira and Linear; Enterprise can also be self-hosted |
Where the agent runs code depends on the backend you choose: directly on your machine, in Docker containers, on a VM or in the cloud. Only with Docker, a VM or the cloud is execution separated from your system.
Getting started
Starting the interface locally
npm install -g @openhands/agent-canvas
agent-canvas
You need Node.js and uv. Important: this variant starts the agent server directly on your machine, without a sandbox. The agent then has full access to your file system. For isolated execution, use the Docker image or start with OH_CONVERSATION_RUNTIME=docker agent-canvas; each conversation then runs in its own container. After starting it, you enter the model provider and API key in the interface and connect a repository.
Building your own agent with the SDK
import os
from openhands.sdk import LLM, Agent, Conversation, Tool
from openhands.tools.file_editor import FileEditorTool
from openhands.tools.task_tracker import TaskTrackerTool
from openhands.tools.terminal import TerminalTool
llm = LLM(model="<provider/model-name>", api_key=os.environ["LLM_API_KEY"])
agent = Agent(
llm=llm,
tools=[
Tool(name=TerminalTool.name),
Tool(name=FileEditorTool.name),
Tool(name=TaskTrackerTool.name),
],
)
conversation = Conversation(agent=agent, workspace=os.getcwd())
conversation.send_message("Read the README and write three facts about the project to FACTS.txt.")
conversation.run()
The official documentation describes how to install the SDK and provides further examples. Check the current package names there, since the project's structure has changed several times in recent versions.
Typical tasks
- Fixing failing tests: The agent runs the tests, analyzes the failure and proposes a fix.
- Addressing review comments: Comments from a pull request are worked through.
- Resolving merge conflicts and updating dependencies.
- Working on issues: Through the GitHub integration or the Automation Server, an agent starts when a new issue with a specific label appears.
- Implementing small features and scripts from a description.
Strengths
- Open and self-hostable: MIT license, can run on your own infrastructure.
- Free choice of model: You use the model that fits your tasks and budget, including open models.
- SDK for your own agents: You can build OpenHands into your own tools and pipelines as a component.
- Active community and regular releases.
Limitations
- Operations take effort: If you do not use the cloud, you have to manage Docker, the sandbox, updates and credentials yourself.
- Quality depends on the model: With smaller or cheaper models, the success rate drops significantly.
- Model costs: Long sessions with large repositories consume many tokens.
- Rapid change: Components and names have changed several times. Older tutorials often no longer apply.
OpenHands compared
| OpenHands | Devin | Claude Code | |
|---|---|---|---|
| License | MIT | Proprietary | Proprietary |
| Self-hosting | Yes | No | Runs locally in the terminal |
| Model choice | Free | Set by the vendor | Claude models |
| Building your own agents | Software Agent SDK | API | Claude Agent SDK |
You can find a detailed analysis of Devin under Devin AI.
Who is OpenHands for?
- Development teams that want to use coding agents without handing their code to a third-party cloud
- Platform teams that want to integrate agents into their own CI pipelines and internal tools
- Research and teaching, where open, traceable agents matter
If you do not want to run your own infrastructure, OpenHands Cloud or a commercial agent such as Devin or Claude Code is simpler.
Frequently asked questions
Is OpenHands the same as OpenDevin?
Yes. The project started in 2024 as OpenDevin and was later renamed OpenHands.
How much does OpenHands cost?
The software is free (MIT). You pay for model usage with your provider. OpenHands Cloud is free for individuals (up to 10 conversations per day) if you use your own API key or have OpenHands bill model usage at cost. Enterprise offerings are available on request.
Do I need Docker?
Not necessarily, but it is recommended for safe use. The npm installation starts the agent without a sandbox directly on your machine, with full access to the file system. It only runs isolated with the Docker image or with OH_CONVERSATION_RUNTIME=docker. The SDK can also work directly in the local working directory; you should only do either in a non-critical environment.
