Skip to content
A unified benchmark for co-design

Co-Design
Gym

Benchmarks fix the robot and train the brain. Co-Design Gym lets you optimize both: the body and the policy, together, across 20 domains.

Aviraj Newatia1,*, Yordan Tsvetkov1,*, Leonard Pleiss2, Andrew Spielberg3,4, Rika Antonova1

  • 1University of Cambridge
  • 2Technical University of Munich
  • 3Carnegie Mellon University
  • 4MorphoAI
  • *Equal contribution
Paper · arXiv Code · pending release approval Environments Baselines
$pip install codesign-gymcoming soon
soft walker, gaps
truck unloading line
racing, Spielberg
warehouse fleet
small-object grasp
cell handovers

real rollouts from our baseline runs (the soft walker is an environment render)

§1

The body shapes the brain.
The brain defines the body.

An embodiment decides what a policy can do; the best embodiment is the one whose policy does best. Optimize them apart and you leave performance on the table.

Co-Design Gym overview: Native domains built from scratch, Unlocked/Reframed co-design problems built on existing RL environments for games, energy, networking, racing, logistics and control, and Extended classic MuJoCo tasks.
NativeBuilt from scratch for co-design: catching, cleaning, unloading, grasping, shape-shifting hands, soft walkers.
Unlocked/ReframedCo-design problems hiding in plain sight. Trusted RL environments always froze the design. We unlock it.
ExtendedThe classic MuJoCo control tasks, now with bodies you can reshape.
  1. Fix the body, and policy learning searches one slice of the landscape.
  2. Change the body, and the best policy changes with it.
  3. Co-design searches the whole landscape: a doubly non-stationary problem.
§2

Try it yourself

Two tiny co-design problems, running live in your browser.

Score
0of 20 caught
    Body the design
    reach
    arm speed
    Policy how it moves

    A 2D toy of our Ball Catcher: a longer arm reaches further but swings slower, so the right aim depends on the body you built.

    §3

    20 families. 86 presets.

    Hover a card to watch it; tap for presets and code.

    Grid of all environment families, grouped as Native, Unlocked/Reframed and Extended.

    Battle replay

    A real evaluation battle, replayed by the Pokémon Showdown client (press Play; choose “sound off” for silence). Only the text battle log is hosted here; the client and its artwork load from play.pokemonshowdown.com.

    §4

    No single winner.
    Lots of headroom.

    Four representative co-design methods (CMA-ES, FastTD3, PPO+NGOpt, LOKI), a matched 4-hour budget and 5 seeds each. None of them solves co-design. There is a lot of room for innovation.

    No single winner

    12 of 16

    presets where the leading method changes during training.

    6433
    FastTD3CMA-ESPPO+NGOptLOKI

    Who finishes ahead, out of 16 presets. Every method wins somewhere; none wins everywhere.

    • 9 → 4 CMA-ES leads early on 9 presets, but finishes ahead on only 4.
    • 0 methods lead on every domain group.

    Lots of headroom

    42%

    is the most any method reaches of the maximum return on our native & warehouse tasks.

    Best method's final return as a share of the maximum, per preset. The dashed line is a solved task.

    16.6%of balls caught by the best method on Ball Catcher Pitch
    5/10tasks where the best method gets under 2% of the maximum return
    −250FastTD3 on NeroGrasp: every fingertip it designed failed structural validation
    Leading method over the 4-hour training budget on 16 presets: the leader changes on most presets and differs by domain.
    Who is ahead, hour by hour. The ranking depends on the task and on the budget.

    your method here?

    Beat the scoreboard.

    Every preset, every baseline, one make_vec call away, as soon as the code is released.

    Read the paper Code pending release approval Quickstart

    Dig into any preset

    –

    Lines: seed-mean eval return, step-held between evaluations; bands: ±1 std over seeds. An evaluation where every design was rejected is a gap.

    Watch the four side by side

    §5

    Any optimizer. Any environment.

    Any Gymnasium environment becomes a co-design environment by declaring an embodiment_space.

    import codesign_gym as cg
    
    # one entry point; returns the env and its base design
    env, theta0 = cg.make_vec("BallCatcher-Pitch", num_envs=8)
    
    # your outer loop proposes a design ...
    theta = optimizer.ask(env.embodiment_space, theta0)
    obs, rejected, info = env.reset(embodiment=theta)
    
    # ... and your inner loop acts in it
    for t in range(horizon):
        obs, reward, term, trunc, info = env.step(policy(obs, theta))
    • One call. make_vec returns a GPU-parallel env and its base embodiment.
    • Design in reset. Pass embodiment=None and it is plain Gymnasium.
    • Honest evaluation. is_eval_env=True locks the design for the whole episode.
    §6

    Cite

    If Co-Design Gym helps your work, please cite the paper. Read the paper on arXiv.

    @misc{newatia2026codesigngym,
      title  = {Co-Design Gym: A Unified Benchmark for Embodiment-Policy Co-Optimization},
      author = {Newatia, Aviraj and Tsvetkov, Yordan and Pleiss, Leonard and Spielberg, Andrew and Antonova, Rika},
      year   = {2026},
      eprint = {2610.02366},
      archivePrefix = {arXiv},
      url    = {https://arxiv.org/abs/2610.02366}
    }