# 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