Orchard (GitHub Repo)
Microsoft released Orchard, a Kubernetes-native framework designed to standardize agentic research by decoupling environment services from training and inference logic.
Deep dive
- Features a Kubernetes-native sandbox service with REST API and Python SDK for lifecycle management.
- Supports multi-turn agent-sandbox interaction via command execution, file I/O, and git patches.
- Built-in support for popular harnesses like Codex, Claude, Pi, and Hermes.
- Enables trajectory distillation and on-policy RL rollouts on a shared substrate.
- Includes a dataset of 107K SWE trajectories and 3,070 GUI navigation rollouts.
- Designed for low-latency execution by bypassing the Kubernetes API server hot path.
- Roadmap includes stateful snapshots to enable pause, resume, and branching for advanced credit assignment research.
Decoder
- Harness: A testing framework or environment setup used to evaluate how well an AI agent performs specific tasks.
- Agentic Modeling: Research focused on creating autonomous systems capable of reasoning, planning, and executing tasks across multiple steps.
- Trajectory Distillation: A technique where a model learns from the sequences of actions (trajectories) taken by another, often higher-performing model.
- On-policy RL: Reinforcement learning where the agent learns from data generated by its own current version of the policy.
Original article
Orchard
Orchard is an open foundation for agentic modeling research. We build one shared substrate — Orchard Env — and then use it to explore agentic modeling recipes across domains: software engineering, browser navigation, computer use, and personal-assistant workflows.
The foundation exists to make the recipes possible. Because the environment layer is a stable service rather than a piece of a training stack, every recipe reuses the same substrate for trajectory distillation, on-policy RL rollouts, and evaluation — so datasets, training recipes, and evaluation protocols stay portable across harnesses, domains, and projects instead of being rebuilt for each new study.
| Layer | What it is |
|---|---|
| Recipes | The research. Open SFT + RL recipes explored on top of the foundation — Orchard-SWE, Orchard-GUI, and Orchard-Claw — plus follow-on work such as OpenWebRL and OpenForge RL. |
| Orchard Env | The foundation. A Kubernetes-native sandbox service + Python SDK that spins up thousands of isolated containers on demand and drives multi-turn agent ↔ sandbox interaction (exec, file I/O, git patches) over HTTP. |
| Trainer | RL training stack — a vendored slime fork with Orchard rollout code. |
- 📄 Paper: Orchard: An Open-Source Agentic Modeling Framework (Peng et al., arXiv:2605.15040)
- 🤗 Dataset:
microsoft/Orchard—swe(107K SWE trajectories) andgui(3,070 multimodal browser-navigation rollouts) subsets
News
-
[2026-07] 🎉 We are excited to release OpenForge RL, which extends Orchard to train agents inside their real deployment harnesses — ZeroClaw, OpenClaw, Codex — instead of the simplified reimplementations open training stacks usually require, removing the train–deploy mismatch. A lightweight proxy records the harness's own inference calls and reconstructs them into samples for any RL codebase, while Orchard Env launches each rollout as a remote container, so any harness pairs with any environment.
-
[2026-06] 🎉 We are excited to release OpenWebRL, which extends Orchard-GUI into a full online multi-turn RL study on live websites — covering supervised initialization, multimodal context management, trajectory-level success judging, and multi-turn policy optimization.
-
[2026-05] 📄 The Orchard paper is on arXiv, together with the
microsoft/Orchardtrajectory datasets and Orchard Env.
Recipes
Three studies from the Orchard paper — different domains, harnesses, and reward mechanisms, one environment service underneath.
| Recipe | Backbone | Training data | Key techniques | Headline result |
|---|---|---|---|---|
| Orchard-SWE | Qwen3.5-35B-A3B | 107K distilled trajectories | Credit-assignment SFT · Balanced Adaptive Rollout · on-policy distillation · rubric-based process reward · value-model reranking | 73.0% SWE-bench Verified |
| Orchard-GUI | Qwen3-VL-4B-Thinking | 0.4k SFT + 2.2k RL tasks | Distillation, then online RL on live websites | 68.4% avg — 74.1 / 67.0 / 64.0 |
| Orchard-Claw | Qwen3-30B-A3B-Thinking | 0.2k synthetic tasks | Opus-synthesized tasks · training across two harnesses | 59.6% pass@3, 73.9% under ZeroClaw |
The common thread is generalization, not just peak score. Orchard-SWE keeps 51.0 on SWE-bench Multilingual (vs 28.7 for OpenSWE-32B) and still works under a harness never seen in training — 45.0 on SWE-bench Verified and 20.1 on Terminal-Bench 2.0 with Kimi-CLI, where OpenSWE-32B collapses to 3.6 and 0.0.
Orchard Env — the foundation
A thin, Kubernetes-native environment service exposing generic primitives — sandbox lifecycle, command execution, file I/O, network policy, and a REST API — with no assumptions about the harness, trainer, inference backend, or task domain sitting above it.
- REST API for sandbox lifecycle (create / exec / files / patch / delete)
- Sync and async Python SDK with auto-cleanup, retries, and context-manager ergonomics
- In-pod agent for low-latency exec over Pod IP
- Any base image — the agent is injected by an init container bundling its own self-contained Python interpreter
- Any harness —
codex,claude,pi,opencode, andhermespreinstalled onPATHin every sandbox - Multi-replica orchestrator with Redis-backed state and distributed locks
- Network isolation via Calico NetworkPolicy (deny-egress by default), per-sandbox CPU / memory / timeout limits, TTL cleanup, and API-key auth
Quick start
pip install -e "orchard_env[dev]"
export SANDBOX_BASE_URL="http://your-orchestrator-host"
export SANDBOX_API_KEY="your-api-key"
from orchard_env import SandboxClient
with SandboxClient() as client:
with client.create_sandbox("python:3.11-slim") as sandbox:
result = sandbox.exec("echo 'Hello, Orchard!'")
print(result.stdout)
Roadmap
Stateful sandboxes — pause, resume, and branching
The environment is currently linear: a sandbox is created, driven for N turns, and destroyed. Snapshotting makes that measurable directly instead. We are adding:
- Pause / resume — checkpoint a sandbox's full state (filesystem, processes, environment) at any turn and restore it later.
- Branching — fork k independent continuations from the same snapshot at turn t.
- Prefix sharing — because a branched prefix is executed once instead of once per rollout, tree-structured search and per-turn advantage estimation get substantially cheaper.
Citation
@article{peng2026orchard,
title={Orchard: An Open-Source Agentic Modeling Framework},
author={Peng, Baolin and Yao, Wenlin and Wu, Qianhui and Cheng, Hao and
Yu, Xiao and Yang, Rui and Ge, Tao and Sordoni, Alessandro and
Yuan, Xingdi and Shen, Yelong and He, Pengcheng and Zhang, Tong and
Yu, Zhou and Gao, Jianfeng},
journal={arXiv preprint arXiv:2605.15040},
year={2026},
url={https://arxiv.org/abs/2605.15040}
}
License
MIT © Microsoft Corporation.
Fresh dev news, AI-digested daily. Never miss a trend at devoured.fyi