OpenHands
Docs ↗

Open-source AI software agent

It doesn't just suggest code — it ships it.

OpenHands is an AI agent that works the way a developer does: it reads your repository, writes and edits files, runs commands in a real terminal, browses the web, executes the tests, and opens a pull request when it's done.

01

The short answer: it does the work.

Give OpenHands a task in plain language and it takes the actions needed to finish it. These are the things people reach for it most.

Build from scratch

Greenfield work is where agents shine. “Build a frontend-only TODO app in React, state in localStorage” becomes a running project you can iterate on.

Add features to real code

It explores an unfamiliar codebase first — grepping, reading, tracing call sites — then makes changes that match the conventions already there.

Fix bugs and debug

Reproduce the failure, form hypotheses, patch the cause, and re-run the suite to prove the fix holds.

Refactor and migrate

Rename across dozens of files, split fat modules, or move a codebase between major framework versions — the kind of mechanical change nobody wants to hand-edit.

Run the boring maintenance

Dependency bumps, lint cleanups, test backfills, changelog and release notes, README and docs that drifted out of date.

Review and QA changes

Read a pull request critically, leave inline comments, actually run the branch to check the behaviour, then drive it until CI is green.

Work with git and your forge

Branch, commit, push, and open a pull request on GitHub, GitLab, or Bitbucket — or pick up work straight from a Jira or Linear ticket.

Handle the non-code chores

Scripts, data wrangling, notebooks, infrastructure config, scaffolding, one-off investigations — anything you'd do from a shell.

02

How it actually gets there.

Under the hood is a reasoning-and-action loop. The agent picks a tool, observes what happened, and decides the next move — repeating until the goal is met.

STEP 01

Explore

Searches and reads the repo to build real context before touching anything.

STEP 02

Plan

Breaks the task into tracked steps and picks the smallest change that works.

STEP 03

Act

Edits files, runs bash commands, installs packages, drives a browser when needed.

STEP 04

Verify

Runs tests, linters, and the app itself — then reads the output and fixes fallout.

STEP 05

Hand off

Commits, opens a PR, and explains what changed and why.

03

Five ways to put it to work.

Same agent, different front doors. Pick the one that matches how you want to work — and choose separately where the agent's workspace lives.

Agent Canvas

The recommended way to run OpenHands: a browser client and control centre for conversations, files, terminal, editor, and automations. It connects to a backend on your machine, in Docker, on a VM, or in the cloud.

Browser

OpenHands Cloud

The managed service at app.all-hands.dev. Nothing to install — sign in with GitHub, GitLab, or Bitbucket and get hosted execution, integrations, access controls, and budget management.

Hosted

Terminal & IDE

Run openhands for an interactive CLI, or openhands -t "…" to start with a task. Headless mode fits scripts and CI, and ACP support puts the agent inside your editor.

CLI · ACP

Software Agent SDK

A composable Python library for building your own agents: custom tools, sub-agents, hooks, model routing, sandboxes, and metrics. It's the engine behind the CLI and Cloud.

Python

Agent Server

Expose agent execution, conversations, tools, and workspaces over REST and WebSockets — including an OpenAI-compatible endpoint so existing chat clients can talk to an agent.

REST · WS
04

It bends to your setup.

Out of the box the agent is general-purpose. These are the seams you use to make it specific to your team, your repo, and your tools.

Skills

Reusable instructions and domain knowledge, loaded per repo, per keyword, or per file path — so you stop pasting the same prompt every time.

MCP servers

Model Context Protocol support means the agent can discover and use tools from external servers automatically, across every OpenHands surface.

Automations

Scheduled or event-triggered runs: nightly dependency syncs, monitoring a repo, reacting to a GitHub webhook or a custom event.

Chat & tickets

Kick off work from Slack, or from a Jira or Linear issue, and let the results land back where your team is already talking.

Your own LLM

Provider-agnostic by design, with routing, fallbacks, streaming, and reusable model profiles. Local models work too.

Sandboxing

Run the workspace in Docker, Apptainer, a VM, or a hosted sandbox when you'd rather the agent didn't touch your laptop.

05

Start in one command.

With Node.js 22.12+ and uv installed, launch the whole local stack — browser client and backend — with a single line. Prefer nothing installed at all? Open Cloud instead.

bash
$ npx @openhands/agent-canvas
▸ starting agent server …
▸ canvas ready at http://localhost:8000
 
fix the failing auth test and open a PR
▸ read tests/test_auth.py
▸ bash pytest -k auth 1 failed
▸ edit app/auth.py
▸ bash pytest -k auth 4 passed
✓ opened PR #218
06

Worth knowing before you start.