IDKMesh is adding OpenHands as the next heterogeneous coding worker after Google Jules. The first integration is deliberately manual and narrow so it cannot silently fan the same agent-ready issue out to two agents.
OpenHands is open-source agent software and supports hosted as well as local/self-hosted execution. That makes it useful for two IDKMesh goals:
Open-source software does not mean hosted model inference is always free. The hosted control surface and the model/runtime cost must be treated separately.
maintainer reviews issue
|
v
agent-ready
|
v
manual "OpenHands Manual Pilot" workflow
|
v
validate open issue + veto labels
|
v
IDKMesh stdlib client -> OpenHands API
|
v
OpenHands conversation at protected default branch
|
v
candidate work / candidate PR
|
v
normal IDKMesh CI + review + human integration
The existing automatic agent-ready path belongs to Jules. The OpenHands pilot therefore has no issue event or schedule trigger.
OPENHANDS_API_KEY.MSKazemi/idkmesh. Do not place the API key in repository variables, issue text, workflow inputs, commits, or logs.The workflow itself receives only contents: read and issues: read. Repository mutation is not granted through the workflow token.
The pilot does not execute the OpenHands GitHub composite Action. Instead, the checked-in stdlib client calls the documented conversation API directly. This avoids a transitive third-party Action dependency and makes the exact HTTP surface reviewable in this repository.
Choose a low-risk, bounded issue that already has agent-ready and none of:
blocked;do-not-automate;human-required;needs-decomposition;research-evidence;security-sensitive.Then run Actions → OpenHands Manual Pilot → Run workflow and enter the numeric issue number.
The preparation step fetches the issue through the GitHub API, validates the approval/veto labels, and writes a bounded prompt. A second checked-in step creates the OpenHands conversation against the exact repository/default branch and polls its status.
The workflow summary retains:
This is operational provenance, not verification.
OpenHands says complete != candidate accepted
candidate PR green != independent verification
verification recommendation != merge authority
Normal protected-main CI and explicit human integration still apply.
The current Jules dispatcher consumes agent-ready automatically. Reusing the same event for OpenHands would create an accidental fan-out race. The provider-neutral target is:
agent-ready = approved for bounded agent work
agent:jules / agent:openhands = explicit worker selection
That routing change should land through the shared connector/GitHub-dispatch control plane, not as a second ad-hoc automatic dispatcher.
Tracked by issue #641:
agent:openhands routing after the common connector contracts stabilize;.github/workflows/openhands-pilot.ymltools/openhands_pilot.pytests/test_openhands_pilot.pyThe pilot never auto-merges and must not be used for security-sensitive, governance, secret-handling, human-observation, or independent-research tasks.