Skip to content

Harbor adapter for private Terminal-Bench trials - #354

Closed
scgopi wants to merge 2 commits into
mainfrom
feat/harbor-graphcode-adapter
Closed

scgopi wants to merge 2 commits into
mainfrom
feat/harbor-graphcode-adapter

Conversation

@scgopi

@scgopi scgopi commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Adds Tools/harbor-graphcode, a Harbor installed agent that runs each Terminal-Bench task as one GraphCode goal loop, so a private trial can compare it with Harbor's plain claude-code agent on the same model. Nothing is added to Harbor and nothing is submitted anywhere.

What it does

  • install: installs zsh, reuses ClaudeCode.install, uploads graphcode-linux-<arch>.tar.gz and unpacks graphcode, graphcoded and zmx into /opt/graphcode/bin
  • run: starts graphcoded (bypassPermissions, every model alias pinned to Harbor's -m), creates one goal loop with the instruction as its goal, and polls graphcode status until the loop resolves
  • trajectory: mirrors Claude Code transcripts into /logs/agent/sessions/projects, so the inherited converter writes trajectory.json
  • done check: defaults to agent (no predicate; the loop resolves on graphcode node done), the fair arm; opt-in tests makes the task's own test.sh the predicate, an oracle, so only an upper bound

Verification

Check Result
Unit tests (no Docker, no key) ✅ 27 passed
Generated shell bash -n; build scripts sh -n
Adapter's awk parsing against a real graphcoded (macOS SwiftPM build, claude hidden, zero model spend): create → id parsed → loop reached stopped
Linux bundle built in swift:6.2 ⚠️ not run: no container runtime on this machine
Session launch on Linux inside a task image ⚠️ not run

Trial status

No trial has run: no Docker and no ANTHROPIC_API_KEY. docs/benchmarks/terminal-bench-trial.md has the plan, the prerequisites and a cost estimate (smoke ≈ $16, 15-task subset ≈ $120). It is force-added because /docs/* is gitignored.

scgopi and others added 2 commits September 13, 2026 22:02
Tools/harbor-graphcode installs graphcode, graphcoded and zmx into a task
container, creates one goal loop per task and waits for it to resolve,
reusing Harbor's ClaudeCode install and trajectory conversion. The done
check is either the task's own test.sh (an oracle) or the session's own
node done. build-linux-bundle.sh builds the binaries in swift:6.2;
docs/benchmarks/terminal-bench-trial.md holds the trial plan and cost
estimate, not yet run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
done_check=tests makes the task's own test.sh the loop's predicate, an
oracle plain claude-code never gets, so it stays an opt-in upper-bound
arm and done_check=agent becomes the default.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@scgopi scgopi closed this Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant