Lego-RL

Compatibility

What Lego-RL supports, at which level of validation

Support here means one of four things:

MarkMeaning
โœ… Testedexercised end-to-end on our reference cluster, and covered by run validation
๐Ÿงช Experimentalimplemented and selectable, not validated end-to-end
๐Ÿ”Œ Inheritedprovided by an upstream dependency, not exercised through Lego-RL
โŒ Not wiredpresent in the codebase, but no current config path reaches it

Agent scaffolds

Selected with SCAFFOLD; each value maps to a module in scripts/templates/scaffold/.

ScaffoldSCAFFOLDStatus
OpenHands SDKohsdkโœ… Tested โ€” the default
Claude Codeccโœ… Tested
OpenCodeocโœ… Tested
OpenHands (full app)oh๐Ÿงช Experimental โ€” drops rejected actions, which corrupts token-level capture
Terminus 2โ€”โŒ Not wired โ€” implemented in harbor and src/harbor_patch/agents/terminus_2/, but no scaffold module selects it

Other harnesses connect through a custom adapter; see Environment.

Sandbox backends

Selected with BACKEND.

BackendBACKENDStatus
Kubernetesk8sโœ… Tested โ€” the production path
Docker (local or remote daemon)dockerโœ… Tested with ohsdk / oh
Docker + cc / ocdockerโŒ Not wired โ€” only agent_loop_config_oh_docker.yaml exists; run validation warns
Daytona, E2B, Modal, Runloopโ€”๐Ÿ”Œ Inherited from Harbor, never exercised in a Lego-RL run

Training engines

Selected with MODEL_ENGINE.

EngineMODEL_ENGINEStatus
VeOmniveomniโœ… Tested โ€” required for MoE policies with routing replay
FSDPfsdpโœ… Tested โ€” dense policies; R3 requires SP_SIZE=1
Megatronโ€”โŒ Not wired โ€” src/verl_patch/config/lego_rl_fully_async_megatron.yaml exists, but no runner path sets VERL_CONFIG_NAME to it

Rollout placement

Selected with TRAINING_MODE.

ModeTRAINING_MODEStatus
Synchronous (colocated)syncโœ… Tested โ€” one pool, simplest to run
Fully asynchronousasyncโœ… Tested โ€” separate train and rollout pools, partial rollout

Algorithms

ADV_ESTIMATOR (default grpo) is passed to verl's algorithm.adv_estimator.

AlgorithmStatus
GRPOโœ… Tested โ€” the default
GSPOโœ… Tested
PPO๐Ÿ”Œ Inherited from verl; no Lego-RL reference run

Models

Run validation knows the tool-parser rules for these families; anything else gets a warning telling you to verify the pairing yourself.

ModelParser ruleStatus
Qwen3.5-35B-A3Bqwen3_coder (XML template)โœ… Tested
Qwen3.6-27Bqwen3_coderโœ… Tested
Qwen3-30B-A3Bqwen3_coder under cc, hermes under ohsdk / ohโœ… Tested
Other MoEverified against config.json for routing replay๐Ÿงช Experimental
Dense modelsR3 must be offโœ… Tested on the FSDP path

Reference deployment

Every performance number in these docs was measured on this cluster:

Nodes8ร— GPU per node, 200k-context runs on 3โ€“4 nodes
PoliciesQwen3.5-35B-A3B, Qwen3.6-27B
ServingvLLM, TP=4 per replica
SandboxesKubernetes, prebuilt task images from a local registry

They are observations for capacity planning, not performance guarantees.

On this page