OpenHands: A Unified Console for AI Coding Agents (84.5K★ on GitHub)
OpenHands provides a self‑hosted Agent Canvas that consolidates multiple AI coding agents such as Codex, Claude Code, Gemini CLI and DeepSeek Harness into a single web UI, supporting customizable backends, automation via GitHub and Slack, and extensible MCP/Skills for seamless development workflows.
OpenHands overview
OpenHands provides a self‑hosted Agent Canvas that acts as a unified console for managing multiple coding agents such as Codex, Claude Code, Gemini CLI and any stdio‑based agent that implements the Agent Client Protocol (ACP) . The project has ~84.5K stars and 11K forks on GitHub and is released under the MIT license.
Problem addressed
When several AI coding agents run simultaneously, each agent typically occupies its own terminal, web UI or window. Developers must switch between these interfaces to monitor progress, reassign tasks, or respond to prompts, which creates significant overhead.
Core components
Agent Canvas : Browser‑based UI for sessions, tasks, workspaces and automation.
Software Agent SDK : Python framework for building coding agents.
Agent Server : Executes agents and exposes REST and WebSocket interfaces.
Automation Server : Manages scheduled jobs and external event triggers.
Workspace / Sandbox : Defines the files, processes, credentials and network resources an agent can access.
An optional community‑driven Sandbox Server can be run separately; it is not started automatically with agent-canvas.
Agent integration via ACP
Agent Canvas includes a built‑in OpenHands agent and can connect other agents through ACP. Officially supported agents are:
Claude Code
Codex
Gemini CLI
Any stdio‑based ACP server, such as DeepSeek Harness ( @deepseek-ai/dsh-acp), can be added in Custom mode by specifying a launch command. DeepSeek Harness is in Developer Preview; its ACP only transmits completed answers and does not expose real‑time reasoning, tool usage, or session forking.
Automation capabilities
The Automate page lists automation tasks. Pre‑built templates include:
GitHub PR Review Assistant : Listens for new pull requests, reads diffs and generates review comments.
GitHub Repository Monitor : Watches issues and PR comments mentioning OpenHands, creates tasks and replies with results.
Slack Channel Monitor : Triggers an agent when a configured Slack channel matches certain conditions.
Slack Standup Digest : Summarises channel activity into an asynchronous stand‑up report.
Each automation task stores its prompt, trigger type, LLM profile and execution log, and can be run manually via a Run now button.
Backend deployment flexibility
Agent Canvas and Agent Server are decoupled. Canvas can run locally while connecting to remote Agent Servers, or mix multiple backends (local, Docker, cloud). Switching backends updates the UI to show the corresponding sessions, models, workspaces and automation settings without changing the front‑end.
MCP and Skills
Agents can call external services through a configured MCP Server (e.g., GitHub, Slack, Linear, Jira). Third‑party agents integrated via ACP inherit the same MCP capabilities if their implementations support them.
Skills are reusable task specifications that describe how a particular workflow should be performed. Combining MCP (what the agent can call), Skills (how the task should be done) and Automation (when to trigger) yields a repeatable development pipeline.
Getting started
Install the agent-canvas package globally with npm and run it:
npm install -g @openhands/agent-canvas
agent-canvasRequirements: Node.js 22.12.x or newer and the uv binary.
After launch, open http://localhost:8000 in a browser. The default service starts the front‑end, Agent Server and Automation Server. Choose an agent, configure model credentials, and open a workspace to create the first development task.
For Docker deployment, use the official image:
export PROJECTS_PATH="$HOME/projects"
mkdir -p "$PROJECTS_PATH" "$HOME/.openhands"
docker run -it --rm \
-p 8000:8000 \
-v "$HOME/.openhands:/home/openhands/.openhands" \
-v "${PROJECTS_PATH}:/projects" \
ghcr.io/openhands/agent-canvas:1.14.0Set PROJECTS_PATH to the directory containing your code. After the container starts, access the UI at http://localhost:8000/canvas.
Example workflow
In a task where the agent refactors an authentication module, the agent first lists relevant files, proposes modifications, and then pauses for confirmation. The entire interaction is recorded in the session history, eliminating the need to inspect terminal logs.
If the machine running the Agent Server already has a logged‑in CLI (e.g., Codex reading the local ChatGPT session), the server can reuse those credentials; otherwise, API keys can be supplied for cloud‑only backends.
Automation example
When a new PR appears, the GitHub PR Review Assistant automation triggers the agent, which reads the diff, analyses affected modules and posts review comments automatically. The task logs the prompt, trigger, LLM profile and execution outcome.
Project repository
https://github.com/OpenHands/OpenHands
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
JavaGuide
Backend tech guide and AI engineering practice covering fundamentals, databases, distributed systems, high concurrency, system design, plus AI agents and large-model engineering.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
