# openhands-openhands

> Runs a web UI to manage and monitor AI coding agents that edit files, run terminal commands, and automate development workflows across local or cloud backends

- repo: https://github.com/OpenHands/OpenHands
- commit: 7dc6805406ea3c76cb4a3ce407c3c72d481b0ac6
- api style: openai
- runs: 7 (None with a reward)
- tasks tried: 5
- models: bedrock/us.anthropic.claude-haiku-4-5-20251001-v1:0
- domains: swe, devops-sre
- languages: 
- capabilities: edits-files, runs-shell, browses-web, uses-git, multi-agent, long-horizon, calls-apis

## How it runs here

OpenHands/OpenHands is the Agent Canvas web frontend plus Node launchers (bin/agent-canvas.mjs, scripts/dev-*.mjs); it contains no task-running CLI. The runnable agent is the pinned `openhands-agent-server` (software-agent-sdk, version from config/defaults.json versions.agentServer = 1.49.6) that the launchers and docker/entrypoint.sh spawn and then drive over its REST API. The overlay installs that pinned server (sdk/tools/workspace pinned alike, plus the posthog constraint the launcher adds) into a uv venv under /opt/harness and copies the repo to /opt/harness/src so the agent-server imports the repo's tools/canvas_ui_tool.py at startup exactly like scripts/dev-safe.mjs and docker/entrypoint.sh do. The run command starts `agent-server --host 127.0.0.1 --port 18000 --import-modules canvas_ui_tool`, then POSTs one conversation (`agent_settings.llm` = model/api_key/base_url with api_mode=chat and native tool calling, LocalWorkspace = the task cwd, worktree=false, initial_message with run=true, NeverConfirm, autotitle off), polls execution_status until finished/error/stuck/idle-after-running, dumps all events to /out/trajectory.json plus conversation.json and agent-server.log, prints the final agent message, and exits 0 on finished/idle. The SDK talks to the model through litellm; with an `openai/<name>` model and base_url=$PROXY_URL/v1 it sends non-streaming OpenAI chat-completions with tool calls (terminal, file_editor, task_tracker, finish, think) — verified against a mock server in both a bookworm and a jammy-based image.

## Results by task

| task | runs | last reward | best reward | last tests |
|---|---|---|---|---|
| [aider_polyglot/polyglot_go_palindrome-products](https://harnessreport.com/tasks/aider_polyglot/polyglot_go_palindrome-products.md) | 1 | 0 |  |  |
| [aider_polyglot/polyglot_python_bowling](https://harnessreport.com/tasks/aider_polyglot/polyglot_python_bowling.md) | 1 | 1 |  | 31 passed |
| [bird-bench/card_games__372](https://harnessreport.com/tasks/bird-bench/card_games__372.md) | 1 | 1 |  |  |
| [humanevalfix/python-12](https://harnessreport.com/tasks/humanevalfix/python-12.md) | 2 | 1 |  | 1 passed |
| [swebench-verified/psf__requests-5414](https://harnessreport.com/tasks/swebench-verified/psf__requests-5414.md) | 2 | 1 |  | 131 passed, 1 xfailed, 158 errors |

## Tests to run next

_ranked by llm_

| task | why |
|---|---|
| [aider_polyglot/polyglot_cpp_allergies](https://harnessreport.com/tasks/aider_polyglot/polyglot_cpp_allergies.md) | Tests whether Go's failure was language-specific; C++ is a compiled language like Go but with different idioms. |
| [aider_polyglot/polyglot_javascript_triangle](https://harnessreport.com/tasks/aider_polyglot/polyglot_javascript_triangle.md) | Expands language coverage to JavaScript—relevant for a web-UI orchestrator—and continues polyglot validation. |
| [spider2-dbt/divvy001](https://harnessreport.com/tasks/spider2-dbt/divvy001.md) | Tests multi-step data transformation workflows beyond single-file code editing, exercising shell integration and long-horizon reasoning. |
| [swebench-verified/sphinx-doc__sphinx-8595](https://harnessreport.com/tasks/swebench-verified/sphinx-doc__sphinx-8595.md) | Real-world repository complexity with git workflows; shows whether the harness scales beyond toy problems to actual codebases. |
| [quixbugs/quixbugs-python-sieve](https://harnessreport.com/tasks/quixbugs/quixbugs-python-sieve.md) | Establishes a baseline for pure bug-fixing (vs. feature implementation) in a tight scope, bridging easy and harder tasks. |

## Runs

| run | task | verifier says | calls | seconds |
|---|---|---|---|---|
| [20260925T090253-openhands-op-python-12](https://harnessreport.com/runs/20260925T090253-openhands-op-python-12.md) | humanevalfix/python-12 | reward 1 · 1 passed | 9 | 40 |
| [20260924T232412-sw-openhands-psf__requests-5414](https://harnessreport.com/runs/20260924T232412-sw-openhands-psf__requests-5414.md) | swebench-verified/psf__requests-5414 | reward 1 · 131 passed, 1 xfailed, 158 errors | 94 | 364 |
| [20260924T230831-sw-openhands-card_games__372](https://harnessreport.com/runs/20260924T230831-sw-openhands-card_games__372.md) | bird-bench/card_games__372 | reward 1 | 5 | 24 |
| [20260924T230708-sw-openhands-python-12](https://harnessreport.com/runs/20260924T230708-sw-openhands-python-12.md) | humanevalfix/python-12 | reward 1 · 1 passed | 9 | 34 |
| [20260924T225744-sw-openhands-psf__requests-5414](https://harnessreport.com/runs/20260924T225744-sw-openhands-psf__requests-5414.md) | swebench-verified/psf__requests-5414 | reward 0 · 7 failed, 124 passed, 1 xfailed, 158 errors · verifier exited 1 | 83 | 336 |
| [20260924T225250-sw-openhands-polyglot_go_palindrome-products](https://harnessreport.com/runs/20260924T225250-sw-openhands-polyglot_go_palindrome-products.md) | aider_polyglot/polyglot_go_palindrome-products | reward 0 | 21 | 93 |
| [20260923T145420-openhands-op-polyglot_python_bowling](https://harnessreport.com/runs/20260923T145420-openhands-op-polyglot_python_bowling.md) | aider_polyglot/polyglot_python_bowling | reward 1 · 31 passed | 49 | 293 |

---
Harness Report runs agent harnesses from their GitHub repos on Harbor tasks and records every model call. Every page is also `.md` and `.json`; index: https://harnessreport.com/llms.txt · MCP: https://harnessreport.com/mcp
