OpenHands
Generated on 29 Jul 2026 from the OpenHands catalog page
Deploy OpenHands Agent Canvas, an open-source self-hosted control center for AI coding agents and automations. Run agents on your Droplet, connect from the browser, and optionally use DigitalOcean Gradient AI for inference.
What is OpenHands?
OpenHands is the open platform for cloud coding agents. Agent Canvas is the self-hosted developer control center: start conversations, run automations, and work with OpenHands or other ACP-compatible agents across local and remote backends.
- Self-hosted – Agents and settings stay on your Droplet
- Browser UI – Agent Canvas on your droplet IP (Caddy reverse proxy)
- Public mode – Protected by a generated API key (
LOCAL_BACKEND_API_KEY) - DigitalOcean Gradient AI – Optional one-key setup for OpenAI-compatible models
- Workspace – Projects under
/home/openhands/projects
Key Features
- Always-on agent backend for coding tasks and automations
- Web UI with API-key gate for internet-facing deployments
- Optional Gradient model access key configuration at first login
- Helper scripts for start/stop/restart/status/update and custom domain TLS
- Ubuntu 24.04 LTS with UFW and fail2ban
System Requirements
OpenHands Agent Canvas runs the agent server on the host. Prefer at least 4 GB RAM.
| Use Case | RAM | CPU | Storage |
|---|---|---|---|
| Minimum (single user) | 4 GB | 2 vCPU | 50 GB |
| Recommended | 8 GB | 4 vCPU | 100 GB |
Included System Components
- Ubuntu 24.04 LTS
- OpenHands Agent Canvas
- Node.js and uv
- Caddy reverse proxy (ports 80/443 → Agent Canvas on localhost:8000)
- UFW and fail2ban
- Dedicated
openhandssystem user
Software Included
| Package | Version | License |
|---|---|---|
| NodeJS | 22.23.1 | |
| fail2ban | 5.4.1 | GNU General Public License 2.0 |
| caddy | 2.11.2 | Apache License 2.0 |
| OpenHands Agent Canvas | 1.5.0 | Github - OpenHands/agent-canvas |
Creating an App using the Control Panel
Click the Deploy to DigitalOcean button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.
Creating an App using the API
In addition to creating a Droplet from the OpenHands 1-Click App using the control panel, you can also use the DigitalOcean API. As an example, to create a 4GB OpenHands Droplet in the SFO2 region, you can use the following curl command. You need to either save your API access token to an environment variable or substitute it in the command below.
curl -X POST -H 'Content-Type: application/json' \
-H 'Authorization: Bearer '$TOKEN'' -d \
'{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image":"openhands"}' \
"https://api.digitalocean.com/v2/droplets"Getting Started After Deploying OpenHands
Getting Started
1. Deploy the Droplet
- Select this 1-Click App from the DigitalOcean Marketplace
- Choose a Droplet size (4 GB RAM minimum recommended)
- Add your SSH key
- Optionally set droplet environment variables
GRADIENT_KEYandGRADIENT_MODEL - Create the Droplet
2. Open the Web UI
- Visit
https://your-droplet-ip - Paste the API key shown in the SSH MOTD (also in
/opt/openhands.envasLOCAL_BACKEND_API_KEY)
3. SSH (optional setup wizard)
ssh root@your-droplet-ipIf Gradient was not passed at create time, the first-login wizard can configure a DigitalOcean Gradient model access key. Create keys at https://cloud.digitalocean.com/gen-ai/model-access-keys.
4. Configure LLM and start working
- In the UI, open Settings > LLM (confirm Gradient settings or add another provider)
- Place code under
/home/openhands/projects - Start a conversation from the home screen
Managing OpenHands
| Action | Command |
|---|---|
| Start | /opt/start-openhands.sh |
| Stop | /opt/stop-openhands.sh |
| Restart | /opt/restart-openhands.sh |
| Status | /opt/status-openhands.sh |
| Update | /opt/update-openhands.sh |
| Domain TLS | /opt/setup-openhands-domain.sh |
| Re-run setup | /etc/setup_wizard.sh |
systemd: systemctl {start|stop|restart|status} openhands
Logs: journalctl -u openhands -f
Configuration paths
- Env / secrets:
/opt/openhands.env - API key file:
/home/openhands/.openhands/api-key.txt - Settings:
/home/openhands/.openhands/ - Getting started:
/root/openhands_info.txt
DigitalOcean Gradient
When configured, OpenHands uses the OpenAI-compatible Gradient endpoint:
- Base URL:
https://inference.do-ai.run/v1 - Model form:
openai/<model-id>(defaultopenai/minimax-m2.5)
You can change the model in Settings > LLM or by re-running the setup wizard.
Custom domain (HTTPS)
Point a DNS A record at the droplet, then:
sudo /opt/setup-openhands-domain.shSecurity notes
- Agent Canvas runs as the
openhandsuser and can read/write that user’s filesystem and run commands in that context - Keep
LOCAL_BACKEND_API_KEYprivate; anyone with the key can use the agent - Prefer a DigitalOcean Cloud Firewall restricting SSH (and optionally HTTP/HTTPS) to your IP
- For production, use a custom domain with TLS via
/opt/setup-openhands-domain.sh
Additional Resources
- Product: https://www.openhands.dev/
- Self-hosting: https://docs.openhands.dev/openhands/usage/agent-canvas/backend-setup/vm
- Docs: https://docs.openhands.dev/
- GitHub: https://github.com/OpenHands/agent-canvas
Support
For OpenHands-specific issues: https://docs.openhands.dev/ and the OpenHands community Slack.
For DigitalOcean Droplet issues: https://www.digitalocean.com/support