Skip to content

README's --agent openhands command is broken with current openhands-ai (1.x) #1

@zhaoyb1990

Description

@zhaoyb1990

Summary

The README's quick-start command for the OpenHands scaffold:

harbor run --path data/opt-3.0.0-roadmap --agent openhands --model ...

fails today because the upstream openhands-ai package (1.x series, the current PyPI latest) no longer exposes the openhands.core.main module that harbor's installed/openhands adapter uses for verification and agent invocation.

Reproduction

Fresh environment, default args from README:

uv tool install harbor          # 0.6.1 today
git clone https://github.com/UniPat-AI/RoadmapBench.git
cd RoadmapBench

export OPENAI_API_KEY=...
export OPENAI_BASE_URL=...

harbor run \
    --path test-assets/rat-0.21.0-roadmap \
    --agent openhands \
    --model "openai/your-model" \
    --n-attempts 1 --n-concurrent 1 --yes \
    --jobs-dir results/

Result (after ~3-5 minutes of cold install):

NonZeroAgentExitCodeError: Command failed (exit 1)
stdout: ... Installed 352 packages in 139ms ...
stderr: /opt/openhands-venv/bin/python: No module named openhands.core.main

Root cause

harbor/agents/installed/openhands.py hardcodes two operations that assume openhands-ai ships an openhands.core.main runpy entry point:

# verification (install step)
"/opt/openhands-venv/bin/python -m openhands.core.main --version"

# runtime (run step)
"/opt/openhands-venv/bin/python -m openhands.core.main"

This was true in openhands-ai 0.x but the package was restructured around 1.x — the SDK and tooling moved into a separate openhands-sdk package, and the monolithic CLI entry was removed. openhands-ai 1.7.0 (today's PyPI latest) contains openhands.agent_server, openhands.sdk, openhands.tools, openhands.server — but no openhands.core.

Confirmed:

  • harbor v0.6.1 (RoadmapBench README's expected default install): broken
  • harbor v0.6.5 (released same day as RoadmapBench): broken
  • harbor main (today): broken — adapter has not been updated since 2026-03-24

Pinning a known-historical version doesn't trivially help: openhands-ai 0.9.x is yanked / has broken transitive deps (e.g. e2b<0.18.0 no longer resolvable on PyPI); 0.10.0+ requires Python ≥ 3.12 but is on the post-restructure side of the boundary.

Impact

OpenHands rows in Table 2 (Resolved %, Completion Score, Avg. Turns, Output Tok.) cannot be reproduced as documented. We verified across several models that the documented command fails identically.

(The --agent terminus-2 scaffold path is unaffected and works correctly.)

Requests

To restore reproducibility, could the maintainers please share:

  1. The exact openhands-ai version used to produce the Table 2 OpenHands baselines.
  2. The harbor version / commit hash used.
  3. The Python version inside the task containers.
  4. Model snapshot identifiers (e.g. claude-opus-4-7-20260420 rather than Claude-Opus-4.7).

Environment

  • harbor: 0.6.1 (also tested 0.6.5, 0.8.0, main)
  • openhands-ai: 1.7.0 (latest)
  • Python: 3.13 (uv-managed inside container)
  • Base image: znpt/roadmapbench-rat-0.21.0-roadmap (DockerHub)
  • OS: Linux x86_64
  • Date: 2026-05-24

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions