Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
eee41a7
capture: dialect-agnostic token capture for agent rollouts
adithya-s-k Aug 2, 2026
5976ac9
harbor: run Harbor tasks as an OpenEnv environment
adithya-s-k Aug 2, 2026
f1ae0e4
cli: openenv harbor info / rollout / serve / push
adithya-s-k Aug 2, 2026
341eebe
harbor_env: deployment packaging for a Space
adithya-s-k Aug 2, 2026
1b9b324
tests: port ownership, request normalisation, hosted serving
adithya-s-k Aug 2, 2026
d44f42c
docs: add the harbor_env stub and link it
adithya-s-k Aug 2, 2026
c684348
tests: cover the graph, rewards, seams, discovery and rendering
adithya-s-k Aug 2, 2026
af14859
harbor: fix the process-env lock breaking all concurrent rollouts
adithya-s-k Aug 2, 2026
17e080c
harbor: a FATAL capture finding must make the rollout unusable
adithya-s-k Aug 2, 2026
173acd8
harbor: cross-check pi against its own session log
adithya-s-k Aug 3, 2026
49dbdfa
harbor: recover the ATIF trajectory for hermes and openclaw
adithya-s-k Aug 3, 2026
559b30d
capture: name the upstream project in the dialect provenance
adithya-s-k Aug 3, 2026
33516cd
docs: rewrite the harbor_env guide, and make its example importable
adithya-s-k Aug 3, 2026
af2459e
docs: lead on multi-harness training, and document the CLI properly
adithya-s-k Aug 3, 2026
0d5c1de
harbor: stop calling asyncio.run on server-reachable paths
adithya-s-k Aug 3, 2026
24e7bcc
capture: fix the cloudflare forwarder, which never worked
adithya-s-k Aug 3, 2026
6ef13b5
capture: set the served-model marker before transforming, not after
adithya-s-k Aug 3, 2026
f924b40
capture: export every agent root, not only the first
adithya-s-k Aug 3, 2026
ecfb90a
harbor: restore the process env after a rollout, and fix the install …
adithya-s-k Aug 3, 2026
eb6d09e
harbor: give every turn its own prompt ids, and stop deriving turn bo…
adithya-s-k Aug 3, 2026
a18b592
capture: leave the caller's messages alone, and accept an engine URL …
adithya-s-k Aug 3, 2026
628059d
harbor: export a forked prefix once, and never leave a capture server…
adithya-s-k Aug 3, 2026
b592acc
harbor: sort imports the way usort does
adithya-s-k Aug 3, 2026
b2145d3
capture: accept SGLang as an engine, not just vLLM
adithya-s-k Aug 4, 2026
ad059f5
harbor: stop the tool-output box from eating the page scroll
adithya-s-k Aug 4, 2026
902699f
capture: authenticate to the upstream, and negotiate what it accepts
adithya-s-k Aug 5, 2026
84ac60c
capture: probe what an endpoint returns, instead of demanding token ids
adithya-s-k Aug 5, 2026
bde46be
capture: an eval rollout keeps its trace, and never a training contract
adithya-s-k Aug 5, 2026
59a09f5
harbor: carry the key and the capture level through a rollout
adithya-s-k Aug 5, 2026
125288b
harbor: fix the harnesses a compatibility matrix caught
adithya-s-k Aug 5, 2026
4d10afd
harbor ui: an API key field, and say plainly what you are about to get
adithya-s-k Aug 5, 2026
67597d8
tests: cover the negotiation, the eval path, and whether the logprobs…
adithya-s-k Aug 5, 2026
1a5014c
docs: two kinds of rollout, and what each endpoint gives you
adithya-s-k Aug 5, 2026
95ceb5c
Merge remote-tracking branch 'upstream/main' into harbor-integration
adithya-s-k Aug 6, 2026
e69e935
capture: link turns symmetrically, and catch retries of the first call
adithya-s-k Aug 6, 2026
846d805
capture: refuse to present an untrainable turn as a trainable one
adithya-s-k Aug 6, 2026
1a15811
harbor: keep a bad reward or a bad sequence from reaching the trainer
adithya-s-k Aug 6, 2026
14fc268
capture: gate the session routes, and survive odd upstream replies
adithya-s-k Aug 6, 2026
9838206
capture: dialect and transport fixes from review
adithya-s-k Aug 6, 2026
77bcd15
harbor: assume the weaker capture tier until the probe says otherwise
adithya-s-k Aug 6, 2026
7f0e26a
tests: cover the review findings
adithya-s-k Aug 6, 2026
3357767
harbor: one upstream rename should degrade one agent, not eight
adithya-s-k Aug 6, 2026
31d0939
capture: record the sampling parameters each turn was drawn with
adithya-s-k Aug 6, 2026
ad14f55
harbor: mask the aux node's own tokens, not its neighbours'
adithya-s-k Aug 6, 2026
3c71f5e
capture: count tokens in Google's request shape too
adithya-s-k Aug 6, 2026
1c8479c
harbor: don't strand the capture proxy when the tunnel fails
adithya-s-k Aug 6, 2026
4b857b6
capture: sample from the policy when the rollout is trainable
adithya-s-k Aug 6, 2026
5986b79
scripts: measure the top_p truncation bias in logprob_parity
adithya-s-k Aug 6, 2026
d2fc5f5
capture: the engine belongs to the rollout, not to the server
adithya-s-k Aug 20, 2026
5e82fe2
harbor: name the engine per rollout, alongside the harness and the sa…
adithya-s-k Aug 20, 2026
7a2056a
harbor: carry each turn's request on the wire
adithya-s-k Aug 20, 2026
9c209af
harbor: serve datasets without an engine, and cap agent output budgets
adithya-s-k Aug 20, 2026
1483c5d
Merge remote-tracking branch 'upstream/main' into harbor-integration
adithya-s-k Aug 20, 2026
9dcde4b
harbor: a served deployment does not need an engine to be useful
adithya-s-k Aug 20, 2026
c8535e5
capture: rewrite the outgoing model from the session's engine, not th…
adithya-s-k Aug 20, 2026
3924da8
capture: formatting (usort + ruff), as CI runs it
adithya-s-k Aug 20, 2026
c03e50e
harbor: let the caller bound a rollout
adithya-s-k Aug 20, 2026
33b57cc
harbor_env: loop-owning sessions, so a stock TRL worker can train on …
adithya-s-k Aug 20, 2026
e5d15fb
harbor_env: four review findings on the session factory
adithya-s-k Aug 20, 2026
6c0ad30
core: close() on an MCP client must actually close it
adithya-s-k Aug 24, 2026
33e2df1
harbor: n_trainable_tokens must agree with the turns beside it
adithya-s-k Aug 24, 2026
c2dac3b
harbor ui: run against the endpoint the user validated
adithya-s-k Aug 24, 2026
770ea8d
harbor: compute the token total after the turns exist, and let Run re…
adithya-s-k Aug 24, 2026
acd3c78
harbor_env: measure_prompt_skew has to decode tool-call arguments, li…
adithya-s-k Aug 24, 2026
b8b90e9
harbor: remove hermes support
adithya-s-k Aug 24, 2026
7e4688e
harbor harness: one client per rollout, not one per factory
adithya-s-k Aug 24, 2026
50e21cb
harbor: release both halves on teardown, and do not leak the proc-env…
adithya-s-k Aug 24, 2026
2854581
harbor tests: drop the asyncio import the hermes deletion orphaned
adithya-s-k Aug 24, 2026
ef11f95
harbor: let a caller bound how many steps an agent takes
adithya-s-k Aug 24, 2026
0ef184a
harbor harness: say when a rollout's packed row is big enough to OOM …
adithya-s-k Aug 24, 2026
5be8cb1
harbor harness: refuse an empty indices list instead of silently sele…
adithya-s-k Aug 24, 2026
9bf5e7f
harbor: one E2B template per distinct environment, not per task
adithya-s-k Aug 25, 2026
ca4d2e5
harbor: stop credential-by-env harnesses serialising, with context-lo…
adithya-s-k Aug 25, 2026
0308ac0
Merge upstream/main into harbor-integration
adithya-s-k Aug 27, 2026
77e6920
harbor: run the repo's own usort+ruff pipeline over three stragglers
adithya-s-k Sep 2, 2026
962ffcb
harbor: attribute a re-rendered system prompt to its parent, and let …
adithya-s-k Sep 2, 2026
c8bc449
harbor: 10 validated harnesses, and say why the other five are not
adithya-s-k Sep 2, 2026
664a93c
Merge upstream/main into harbor-integration (brings the RFC 008 rever…
adithya-s-k Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,6 @@ docs/source/_env_assets/
# Sphinx-gallery generated output
docs/source/auto_getting_started/
docs/source/sg_execution_times.rst

# Gradio UI build artifacts
.gradio/
2 changes: 2 additions & 0 deletions docs/source/_toctree.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@
title: Terminus
- local: environments/coding_tools
title: Coding Tools
- local: environments/harbor
title: Harbor
- local: environments/chat
title: Chat
- local: environments/atari
Expand Down
557 changes: 557 additions & 0 deletions docs/source/environments/harbor.md

Large diffs are not rendered by default.

565 changes: 565 additions & 0 deletions envs/harbor_env/README.md

Large diffs are not rendered by default.

33 changes: 33 additions & 0 deletions envs/harbor_env/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
"""harbor_env: run Harbor tasks with token-level capture.

The implementation lives in `openenv.harbor` and `openenv.core.harness.capture`; this package is
deployment packaging only (manifest, Dockerfile, ASGI entry point). The client and result models are
re-exported here so `from harbor_env import HarborEnv` works, matching every other environment.

Examples:

```python
from harbor_env import HarborEnv

with HarborEnv(base_url="http://localhost:8000") as env:
split = env.splits()[0]["name"]
result = env.run_rollout(split=split, task_index=0, harness="opencode", sandbox="e2b")
print(result.reward, result.n_turns)
```
"""

from openenv.harbor.client import HarborEnv
from openenv.harbor.models import (
HarborConversation,
HarborRolloutResult,
HarborTaskRef,
HarborTurn,
)

__all__ = [
"HarborEnv",
"HarborConversation",
"HarborRolloutResult",
"HarborTaskRef",
"HarborTurn",
]
5 changes: 5 additions & 0 deletions envs/harbor_env/client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
"""Typed client for a deployed harbor_env."""

from openenv.harbor.client import HarborEnv

__all__ = ["HarborEnv"]
Loading
Loading