{"id":44826278,"url":"https://github.com/openhands/openhands","last_synced_at":"2026-06-26T22:00:46.953Z","repository":{"id":227390268,"uuid":"771302083","full_name":"OpenHands/OpenHands","owner":"OpenHands","description":"🙌 OpenHands: AI-Driven Development","archived":false,"fork":false,"pushed_at":"2026-06-24T23:03:53.000Z","size":346520,"stargazers_count":78252,"open_issues_count":337,"forks_count":9948,"subscribers_count":462,"default_branch":"main","last_synced_at":"2026-06-25T02:05:03.000Z","etag":null,"topics":["agent","artificial-intelligence","chatgpt","claude-ai","cli","developer-tools","gpt","llm","openai"],"latest_commit_sha":null,"homepage":"https://openhands.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenHands.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-03-13T03:33:31.000Z","updated_at":"2026-06-25T02:01:06.000Z","dependencies_parsed_at":"2026-05-05T17:08:04.500Z","dependency_job_id":null,"html_url":"https://github.com/OpenHands/OpenHands","commit_stats":{"total_commits":2752,"total_committers":211,"mean_commits":"13.042654028436019","dds":0.7452761627906976,"last_synced_commit":"9908e1b28525fe96394446be95fcb00785d0ca0c"},"previous_names":["opendevin/opendevin","all-hands-ai/openhands","openhands/openhands"],"tags_count":149,"template":false,"template_full_name":null,"purl":"pkg:github/OpenHands/OpenHands","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHands%2FOpenHands","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHands%2FOpenHands/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHands%2FOpenHands/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHands%2FOpenHands/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenHands","download_url":"https://codeload.github.com/OpenHands/OpenHands/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHands%2FOpenHands/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34834415,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","artificial-intelligence","chatgpt","claude-ai","cli","developer-tools","gpt","llm","openai"],"created_at":"2026-02-16T22:10:21.521Z","updated_at":"2026-06-26T22:00:46.937Z","avatar_url":"https://github.com/OpenHands.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://assets.openhands.dev/logo-whitebackground.png\" alt=\"OpenHands logo\" width=\"340\"\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cstrong\u003eThe self-hosted developer control center for coding agents and automations.\u003c/strong\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    Run OpenHands, Claude Code, Codex, Gemini, or any ACP-compatible agent across local, remote, and cloud backends.\n  \u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/OpenHands/incubator-program\"\u003e\u003cimg src=\"https://img.shields.io/badge/status-beta-blue?style=for-the-badge\" alt=\"Project status beta\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/OpenHands/agent-canvas/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/OpenHands/agent-canvas/ci.yml?branch=main\u0026style=for-the-badge\" alt=\"CI status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@openhands/agent-canvas\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/%40openhands%2Fagent-canvas?style=for-the-badge\u0026logo=npm\" alt=\"npm version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://docs.openhands.dev/openhands/usage/agent-canvas/backends\"\u003e\u003cimg src=\"https://img.shields.io/badge/Documentation-000?logo=googledocs\u0026logoColor=FFE165\u0026style=for-the-badge\" alt=\"Documentation\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://go.openhands.dev/slack\"\u003e\u003cimg src=\"https://img.shields.io/badge/Slack-Join%20the%20community-611f69?logo=slack\u0026logoColor=white\u0026style=for-the-badge\" alt=\"Join us on Slack\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"#quickstart\"\u003eQuickstart\u003c/a\u003e |\n  \u003ca href=\"https://docs.openhands.dev/overview/introduction\"\u003eDocs\u003c/a\u003e |\n  \u003ca href=\"https://docs.openhands.dev/openhands/usage/agent-canvas/backend-setup/vm\"\u003eSelf-Hosting\u003c/a\u003e |\n  \u003ca href=\"https://docs.openhands.dev/openhands/usage/agent-canvas/acp-agents\"\u003eACP Agents\u003c/a\u003e |\n  \u003ca href=\"https://docs.openhands.dev/openhands/usage/agent-canvas/prebuilt-automations\"\u003eAutomations\u003c/a\u003e |\n  \u003ca href=\"https://go.openhands.dev/slack\"\u003eSlack\u003c/a\u003e\n\u003c/div\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://assets.openhands.dev/screenshot/automation-preview.png\" alt=\"Agent Canvas automation preview\" width=\"100%\"\u003e\n\u003c/p\u003e\n\u003chr\u003e\n\nOpenHands Agent Canvas turns your coding agents into a self-hosted, always-on engineering team. It's a developer control center for starting conversations and automating everyday tasks — like generating reports that publish to Slack or automatically decomposing GitHub issues into tasks.\n\nIt runs locally on your machine by default, but can connect to multiple “agent backends”, e.g. running agents in Docker containers, on VMs, or within your company infrastructure. You can optionally choose to run agents on OpenHands Cloud or OpenHands Enterprise infrastructure.\n\nAgent Canvas runs the open source OpenHands agent out-of-the-box, but can use any third-party agent like Claude Code and Codex.\n\n|    |    |\n|---|---|\n| [**Self-host your way**](https://docs.openhands.dev/openhands/usage/agent-canvas/backend-setup/vm) | Run agents locally, in Docker, on VMs, or anywhere you can run an agent server backend |\n| [**Switch between different backends**](https://docs.openhands.dev/openhands/usage/agent-canvas/backends) | Switch between local, remote, and cloud agents without losing focus |\n| [**Create automations**](https://docs.openhands.dev/openhands/usage/agent-canvas/prebuilt-automations) | Create automations and workflows that integrate with Slack, GitHub, Linear, and more. Run on a schedule or in response to webhook events  |\n| [**Integrate with the tools you use**](https://docs.openhands.dev/openhands/usage/agent-canvas/prebuilt-automations) | Connect your automations with third-party services like Slack, GitHub, Notion, and more to automate workflows |\n| [**Bring your own model**](https://docs.openhands.dev/openhands/usage/settings/llm-settings#llm-profiles) | Use with any LLM |\n| [**Use with any agent**](https://docs.openhands.dev/openhands/usage/agent-canvas/acp-agents) | Use with OpenHands, Claude Code, Codex, Gemini, or any agent with Agent-Client Protocol (ACP). |\n\n\nIf you have questions or feedback, please open a GitHub issue or join the [#proj-agent-canvas channel in Slack](https://openhands.dev/joinslack).\n\n\u003e [!NOTE]\n\u003e The code in this repo is moving! See [Agent Canvas transition FAQ](https://github.com/OpenHands/OpenHands/issues/14841)\n\u003e\n\u003e The source code for OpenHands Agent and Agent Server lives in [OpenHands/software-agent-sdk](https://github.com/OpenHands/software-agent-sdk).\n\u003e\n\u003e The source code for Agent Canvas lives in [OpenHands/agent-canvas](https://github.com/OpenHands/agent-canvas).\n\n## Quickstart\n\nYou can install OpenHands to run agents on any machine: on your laptop, on a dedicated computer like a Mac Mini,\nor on a server in the cloud.\n\nThe most powerful way to run OpenHands is on a server in the cloud. This allows your agents to continue running\neven when your laptop is shut, and makes it easier to trigger your agents through third-party services\nlike Slack, GitHub, and Datadog. See the [self-hosting guide](https://docs.openhands.dev/openhands/usage/agent-canvas/backend-setup/vm) for details, especially with respect to security hardening.\n\nNotably, you can run the backend in _multiple different environments_, and switch between\nthem from the same Agent Canvas frontend. E.g. you can share an Agent Server with your team for agents doing\ncode review and dependency updates, then have your personal agents running on your laptop.\n\n### Option 1: Without a Sandbox\n\n\u003e [!WARNING]\n\u003e This runs the agent-server directly on the machine you're installing on — the agent will have full access to your filesystem!\n\n**Prerequisites**: Node.js 22.12.x or later, `uv`\n\n```sh\nnpm install -g @openhands/agent-canvas\nagent-canvas\n```\n\nThe `agent-canvas` command starts the full local stack by default. You can also split it when you want to run pieces separately:\n\n```sh\nagent-canvas --frontend-only  # static frontend + ingress only\nagent-canvas --backend-only   # agent server + automation backend + ingress only\n```\n\n### Option 2: With a Docker Sandbox\n\n**Prerequisites**:\n\n- Docker: Docker Desktop on macOS/Windows, or Docker Engine/Docker Desktop on Linux.\n- A host directory for `PROJECTS_PATH` containing the project folders you want the agent to access. Create it before starting the container.\n\n**macOS / Linux:**\n\n```sh\nexport PROJECTS_PATH=\"$HOME/projects\"  # directory containing your project folders\nmkdir -p \"$PROJECTS_PATH\" \"$HOME/.openhands\"\n\ndocker run -it --rm \\\n  -p 8000:8000 \\\n  -v \"$HOME/.openhands:/home/openhands/.openhands\" \\\n  -v \"${PROJECTS_PATH}:/projects\" \\\n  ghcr.io/openhands/agent-canvas:1.0.0-rc.11\n```\n\n**Windows (PowerShell / Windows Terminal):** See [README.windows.md](https://github.com/OpenHands/agent-canvas/blob/main/README.windows.md) for the equivalent commands.\n\nThe agent will be able to access any project under `PROJECTS_PATH`.\n\n### Option 3: From Source\n\n\u003e [!WARNING]\n\u003e This runs the agent-server directly on the machine you're installing on — the agent will have full access to your filesystem!\n\n**Prerequisites**: Node.js 22.12.x or later, `npm`, `uv` (for running the agent server via `uvx`)\n\n```sh\ngit clone https://github.com/OpenHands/agent-canvas.git\ncd agent-canvas\nnpm install\nnpm run dev\n```\n\n---\n\nAccess the UI at [http://localhost:8000](http://localhost:8000). You can add additional backends directly from the UI.\n\n# Architecture\n\nAgent Canvas is powered by the [OpenHands Agent Server](https://github.com/OpenHands/software-agent-sdk/tree/main/openhands-agent-server/openhands/agent_server), a REST API for running multiple agents on a single machine. Each Agent Server runs on a single host/port; the Agent Canvas can connect to multiple Agent Servers and easily flip between them.\n\nYou can run an Agent Server anywhere:\n\n- Directly on your laptop (be careful!)\n- On a dedicated machine like a Mac Mini\n- On a virtual machine in the cloud\n- Inside OpenHands Cloud (our commercial offering)\n\nThe Agent Server is often paired with an [Automation Server](https://github.com/OpenHands/automation), which lets you set up agents that run on a schedule or in response to events.\n\n\u003cimg width=\"1456\" height=\"1258\" alt=\"image\" src=\"https://github.com/user-attachments/assets/cb6de6f5-ac30-4d04-a76a-b5c259f0c163\" /\u003e\n\n## More documentation\n\n- [Documentation index](https://docs.openhands.dev/overview/introduction)\n- [Architecture overview](#architecture)\n- [Development guide](./Development.md)\n- [Self-hosting guide](https://docs.openhands.dev/openhands/usage/agent-canvas/backend-setup/vm)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenhands%2Fopenhands","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenhands%2Fopenhands","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenhands%2Fopenhands/lists"}