OpenHands

Harness · Last verified 2026-09-30

TL;DR

OpenHands is an MIT-licensed coding-agent project whose main repository now ships Agent Canvas, a self-hosted control center (in beta) for running the OpenHands agent or Claude Code, Codex and Gemini CLI across local, Docker, VM or cloud backends. It suits teams wanting always-on coding agents and automations they host themselves.

Key facts

OpenHands key facts. Data as of 2026-09-30.
Type Harness
Languages / SDKs TypeScript, Python
License MIT
Pricing model Open core
Orchestration pattern Supervisor
GitHub stars 89,602 (as of 2026-09-30)
GitHub forks 11,827
Last push 2026-09-30
Latest release v1.24.0
Repository OpenHands/OpenHands
Website openhands.dev
Documentation docs.openhands.dev
Last verified 2026-09-30

Key features

  • Agent Canvas is a browser control center that connects to one or more Agent Server backends (local, Docker, VM, Modal, Kubernetes or OpenHands Cloud) and switches between them. (source)
  • Besides the built-in OpenHands agent, a backend can run Claude Code, Codex or Gemini CLI as ACP agents, spawning each CLI as a subprocess. (source)
  • An agent can call launch_child_conversation to start a linked child conversation in an isolated worktree or on OpenHands Cloud; the child's result returns to the parent. (source)
  • With OH_CONVERSATION_RUNTIME=docker, each new conversation gets its own container and Agent Server, so several agents can run at once. (source)
  • The Software Agent SDK's TaskToolSet lets a parent agent delegate to sub-agents that run to completion and can be resumed by task ID. (source)
  • File-based sub-agents are Markdown files with frontmatter (name, tools, model, permission_mode); built-ins include general-purpose, code-explorer, bash-runner and web-researcher. (source)
  • MCP servers over SSE, Streamable HTTP or stdio are configured under Customize > MCP Servers and registered as agent tools. (source)
  • Automations run agents on a schedule or on webhook events from services such as Slack and GitHub. (source)

Architecture and orchestration pattern

Pattern: Supervisor

The system is split across repositories. OpenHands/OpenHands holds Agent Canvas (the React client and the agent-canvas launcher); the Agent Server, agents and tools live in the Software Agent SDK; an Automation Server handles schedules and webhooks. Canvas only renders state and sends requests: the selected backend's Agent Server runs conversations, tools and workspace operations, and the workspace (host process, Docker, Kubernetes or a managed cloud sandbox) sets the isolation boundary.

Multi-agent work happens at two levels. Across conversations, Canvas can connect to several backends, give every conversation its own Docker container, and let an agent launch linked child conversations whose results flow back to the parent, which is supervisor-style delegation. Inside the OpenHands agent, the SDK's TaskToolSet delegates to named sub-agents (built-in or defined in Markdown files) that run synchronously and can be resumed later. A conversation can also run Claude Code, Codex or Gemini CLI instead of the OpenHands agent, through ACP.

Conversation state is persisted by the Agent Server so conversations can be resumed or branched from an earlier message; sub-agent conversations are saved to disk for resumption, and a condenser compresses long histories.

Human in the loop

In the SDK, a conversation's confirmation policy decides when a person must approve actions: AlwaysConfirm, NeverConfirm or ConfirmRisky (paired with a security analyzer that rates action risk). When the agent is waiting for confirmation, the application can approve or call reject_pending_actions. File-based sub-agents can set permission_mode, otherwise they inherit the parent's policy. In Agent Canvas, approval and critic behaviour are configured under Settings > Verification, the composer shows the agent's current action, and a user can branch a conversation from any earlier message to try a different path.

Harnesses it can drive

Protocols

MCP, A2A and AG-UI support for OpenHands. See the full matrix.
ProtocolSupportNote
MCP Yes evidence
checked 2026-09-30
Client: SSE, Streamable HTTP and stdio MCP servers are started or connected at conversation start and their tools registered with the agent.
A2A Unknown
checked 2026-09-30
No A2A mention in the README or docs llms.txt; GitHub code search found nothing in OpenHands/OpenHands and only unrelated strings in OpenHands/software-agent-sdk.
AG-UI Unknown
checked 2026-09-30
No AG-UI mention in the README or docs llms.txt, no code search hits in either repository, and not in the AG-UI README integration list.

Best for

  • Running coding agents on your own laptop, a Mac Mini, a VM or Kubernetes, with a browser UI to switch between them. (shortlist)
  • Teams that want one UI for the OpenHands agent, Claude Code, Codex and Gemini CLI. (shortlist)
  • Scheduled or event-driven engineering tasks such as PR review, issue triage and reports posted to Slack. (shortlist)
  • Python developers building custom agents with sub-agent delegation on the Software Agent SDK.

Not for

  • Users who need a stable, settled interface today: Agent Canvas is marked beta in the README.
  • Running on a machine you do not want an agent to touch: the npm install runs the agent server with full filesystem access unless you use Docker or a VM.
  • Parallel sub-agent fan-out inside one agent turn: the SDK's TaskToolSet runs sub-agents synchronously.

Quickstart

npm install -g @openhands/agent-canvas

Install not yet verified by this site. What this means

# prerequisites: Node.js 24+ and uv
npm install -g @openhands/agent-canvas

# full local stack (Canvas UI, Agent Server, Automation Server) on http://localhost:8000
agent-canvas

# or give every new conversation its own Docker container,
# so several agents can run at once without sharing a process
OH_CONVERSATION_RUNTIME=docker agent-canvas

# or run only the backend on an always-on machine and connect Canvas to it
agent-canvas --backend-only

# in the UI: choose OpenHands, Claude Code, Codex or Gemini CLI as the agent,
# add an LLM profile, then start a conversation

Common pitfalls

  • Requires Node.js 24 or later and uv (the local agent server runs through uvx).
  • The npm and source installs run the agent server directly on your machine with full filesystem access; use the Docker image or a VM for a sandbox, and read the self-hosting guide before exposing it.
  • Local listeners bind to 127.0.0.1; with --host 0.0.0.0 the session key is no longer injected and you must enter an API key in the UI.
  • Skills, MCP servers, secrets and other settings are saved per backend and do not carry over when you switch backends; MCP changes apply only to new conversations.
  • ACP agents need their CLI installed and signed in (or an API key) on the backend machine, not on the browser's machine.

Official quickstart

Pros

  • MIT-licensed and model-agnostic, with LLM profiles for any provider. (source)
  • Runs third-party agents (Claude Code, Codex, Gemini CLI) through ACP alongside its own agent. (source)
  • Clear trust-boundary options: host process, Docker, VM, Kubernetes or managed cloud sandboxes. (source)
  • SDK sub-agents can be defined in Markdown without Python code and resumed by task ID. (source)
  • Frequent releases: four tagged releases between 2026-09-22 and 2026-09-25. (source)

Cons

  • Agent Canvas carries a beta status badge in the README. (source)
  • The quick npm install runs the agent server on the host with full filesystem access; isolation requires Docker, a VM or a cloud backend. (source)
  • TaskToolSet sub-agents run synchronously, blocking the parent until they finish. (source)
  • The code is split across several repositories (Canvas, Software Agent SDK, TypeScript client, automation), so agent and server changes live outside OpenHands/OpenHands. (source)
  • Legacy sub-agent names (default, explore, bash) are deprecated since SDK v1.12.0 and will be removed in 2.0.0. (source)

Alternatives

FAQ

Does OpenHands support MCP?

Yes. It connects to SSE, Streamable HTTP and stdio MCP servers and registers their tools with the agent. A2A and AG-UI support are not documented.

Is OpenHands free?

The code is MIT-licensed and can be self-hosted at no cost apart from model usage. OpenHands Cloud and OpenHands Enterprise are the project's commercial managed offerings.

Can OpenHands run Claude Code or Codex?

Yes. Agent Canvas can run Claude Code, Codex or Gemini CLI as ACP agents; the backend launches the provider's CLI and reuses its login or an API key.

What is Agent Canvas?

It is what the OpenHands/OpenHands repository now contains: a browser control center that connects to Agent Server backends where the agents actually run.

How is OpenHands different from DeerFlow?

OpenHands focuses on coding agents and lets you run third-party coding CLIs through ACP; DeerFlow is a LangGraph-based research-and-creation harness from ByteDance with a lead agent that spawns sub-agents.

Sources

Unknown fields: protocols.a2a and protocols.agui: searched the README, the docs llms.txt index, GitHub code search in OpenHands/OpenHands and OpenHands/software-agent-sdk (a2a, ag-ui) and the AG-UI README integration list; no support found.

Something wrong or out of date, or do you maintain OpenHands and want this page removed? Report a correction or request removal.