Author a Workbench Environment with a Coding Agent#
This workflow uses a coding agent to author and validate a workbench cleanup task.
Prerequisites#
Complete the Arena installation, then set up either the native uv environment or the Arena Docker container:
Prepare the Arena runtime from the repository root, using either a native uv environment or the
base Docker container (see Installation for the full setup):
uv sync --extra dev
source .venv/bin/activate
export OMNI_KIT_ACCEPT_EULA=YES ACCEPT_EULA=Y
./docker/run_docker.sh
Install and authenticate your favourite coding agent on the host, then start it from the repository root. In our example, we use Codex with GPT-6 Astra and high reasoning effort.
Install the Codex CLI on the host using the official
installation guide,
then authenticate on the host with codex login.
Codex CLI 0.160.0 or newer is recommended, check with codex --version.
Step 1: Viewing an Existing Agent-Authored Environment#
Run this step in the Arena runtime (uv environment or inside the Docker container).
Arena includes an agent-generated workbench scene and task:
isaaclab_arena_environments/workbench_cleanup/scene_tool_bin_scope.yamlisaaclab_arena_environments/workbench_cleanup/task_full_cleanup.yaml
The scene contains two tools in the open top drawer, an open socket set, an oscilloscope, and a white bin. Preview it in Kit:
python isaaclab_arena/evaluation/policy_runner.py \
--env_spec isaaclab_arena_environments/workbench_cleanup/task_full_cleanup.yaml \
--robot_control droid_differential_ik \
--policy_type zero_action \
--num_steps 1000 \
--viz kit
You should see the workbench scene with objects and the DROID robot holding its pose. The preview exits after 1,000 steps. This preview does not attempt the task.
Next, run the recipe with the Object Control Runner to see a force-based demonstration of all four subtasks:
python isaaclab_arena/agentic_tools/object_control_runner.py \
--env_spec isaaclab_arena_environments/workbench_cleanup/task_full_cleanup.yaml \
--commands isaaclab_arena_environments/workbench_cleanup/object_control/full_cleanup.jsonl \
--output $HOME/eval/workbench/full_cleanup_demo \
--seed 42 \
--placement_seed 42 \
--visualizer kit
On success, the runner prints the following summary:
TASK_SUCCESS {"success": [true], "report": "/home/<user>/eval/workbench/full_cleanup_demo/validation.json"}
The recipe applies bounded forces and joint efforts to close the drawer and toolcase, place the bin on the overhead shelf, and press the oscilloscope power button. The agentic authoring pipeline leverages this tool to validate the object physics and checks for task success without invoking a robot policy.
Complete all four workbench cleanup subtasks.
Step 2: Authoring a New Workbench Environment#
Start Codex from the repository root on the host:
codex --model gpt-6-astra -c 'model_reasoning_effort="high"' --yolo
Note
The command above will start Codex in yolo mode, which means that the agent
runs commands without asking for approval and outside Codex’s sandbox.
Do this at your own risk.
Enter a prompt like the one below:
Set up an environment for evaluation of a workbench cleanup task.
Use the simready_central workbench assets registered in
isaaclab_arena/assets/background_library.py and
isaaclab_arena/assets/object_library.py.
On the tabletop of the workbench, there is a clutter of five tools, such as
wrenches and screwdrivers, at the center. The top drawer of the workbench is
fully open.
Task: put the tools into the drawer one by one, then close the drawer.
Validate task success correctly with a force-based demo script.
The agent uses Arena’s author-environment skill to author and validate the requested environment.
After Codex finishes (expect 10~20 minutes), it should return a successful force-based demonstration video like the one below:
Successful five-tool drawer cleanup using bounded forces and joint efforts.