OPEN CHALLENGE · ANY ROBOT SKILL

Show us the coolest thing you built.

Submit any compelling robot simulation, policy, or result video. HIM will award $2,500 to its favorite and work with the winner to attempt it on our real Unitree G1.

Community update: We’ve extended the Open Build deadline to November 15 so builders have more time to update their submissions for the Sim2Real evaluation pipeline. Use the latest G1 builder guide to package your policy and run the validation and safety checks before resubmitting. Open the G1 builder guide →

Prize
$2,500
Deadline
November 15, 2026 · 11:59 PM ET
Real robot
Unitree G1 attempt
A humanoid robot holding a basketball beside a hoop.

DON’T KNOW WHAT TO BUILD?

Start stupid simple.

These prompts skip training and use a disclosed fixed base, but they still require a real controller: observation in, actuator action out, simulated contact, and a neutral-policy failure test. A keyframed video cannot pass as policy evidence.

Open HIM Compute
IDEA 01

Kick a penalty

A fixed-base G1 controller kicks a ball into an oversized soccer goal through simulated contact.

See the one-shot agent prompt
Build, test, upload, and publish a small real policy for this Unitree G1 MuJoCo task. Do not stop at a plan, and do not substitute a cinematic animation for control evidence. The task is: A stationary soccer ball sits by the G1’s right foot. The policy observes the ball and controller phase, commands a visible leg swing, makes physical foot-to-ball contact, and sends the ball through the center of an oversized goal.

This copied prompt approves up to 100 HIM Compute credits and publication of the exact reviewed artifacts created here. Never upload secrets, datasets, checkpoints, credentials, caches, environments, or unrelated files.

Use the real Unitree G1 model from google-deepmind/mujoco_menagerie, record its exact commit, and preserve its license. A fixed pelvis is allowed to keep this starter achievable, but it must be disclosed as "fixed-base" in the README and caption.

Controller requirements:
1. Put the controller in policy.py with reset() and act(observation) -> action.
2. Call act() at every control step. Its bounded actuator commands must be the only code driving G1 joints after reset; never write scripted poses directly from the renderer or environment.
3. Do not teleport the ball or change its velocity after the episode starts. The policy-controlled robot must make simulated physical contact that causes the result.
4. A scripted observation-to-action controller is valid, but call it "scripted," never learned or trained. Do not claim hardware readiness.
5. Add a causality test: this policy must meet the measured success condition, while a neutral policy on the same seed must fail. Log policy call count, action bounds, contact evidence, seed, and both outcomes.

Count success when the ball crosses the goal plane. Keep the goal large and the shot centered so success is deterministic. Use that exact measurement in the test and final card; do not invent metrics. If physical contact or the neutral-policy comparison does not pass, keep debugging or report the blocker. Do not publish the project as a policy without this evidence.

Create policy.py, scene.xml, run.py, tests, requirements.txt, README.md, THIRD_PARTY_NOTICES.md, NEXT_IDEAS.md, and run.sh. Pin dependencies. ./run.sh must run the policy-contract and causality tests, then generate result.mp4 from the successful evaluated episode. A replay may reuse those frames, but it may not alter the outcome. Inspect the video's duration, resolution, and representative frames.

If the HIM CLI is missing, install it with curl -fsSL https://arena.himrobotics.com/install.sh | sh. Check authentication with him whoami --json. If it fails, pause only for the user to open https://arena.himrobotics.com/account#developer-access, create a Packages and compute token, run him login in their own terminal, and paste it only into the hidden token prompt. Never ask for or print the token in chat.

If local execution is insufficient, launch the pre-approved bounded machine with: him compute --key ~/.ssh/id_ed25519.pub --profile gpu --environment standard --hours 1 --idle-minutes 30 --max-credits 100 --yes --json. Record the machine ID, and in finally-style cleanup stop it with him machine stop MACHINE_ID --yes --json even if the build fails.

Create submission.zip containing only reproducible source, small required assets, tests, dependency pins, README, NEXT_IDEAS.md, and notices. Inspect and print the ZIP inventory. Publish with: him upload ./submission.zip --video ./result.mp4 --kind both --robot unitree-g1 --simulator mujoco --challenge open-build-challenge --name "Center Strike — Unitree G1 Scripted MuJoCo Demo" --caption "Scripted fixed-base controller; simulated physical contact; not trained or hardware-ready. YOUR SHORT RESULT" --run-command "./run.sh" --yes --json. Replace the result placeholder before running it. If authentication is missing, pause only for him login; never claim an upload occurred until the CLI returns its URL.

End with the policy interface, causality-test output, artifact paths, published HIM Arena URL, compute lifecycle if used, and a section titled “Make it yours next” containing these actionable iterations:
- Add three selectable shot targets: left corner, center, and right corner.
- Put a simple moving goalkeeper obstacle in front of the goal.
- Turn the replay into a dramatic behind-the-ball camera angle.
- Create a three-kick challenge with increasing distance.
- Remove the fixed base, add balance control, and compare success rates.
Do not hide limitations or end with implementation logs.
IDEA 02

Knock down bowling pins

A fixed-base G1 controller physically taps a bowling ball into three giant pins.

See the one-shot agent prompt
Build, test, upload, and publish a small real policy for this Unitree G1 MuJoCo task. Do not stop at a plan, and do not substitute a cinematic animation for control evidence. The task is: A bowling ball sits beside the G1’s foot on a very short lane. The policy observes the ball and controller phase, commands a visible tapping motion, and physical contact sends the ball into three large lightweight pins.

This copied prompt approves up to 100 HIM Compute credits and publication of the exact reviewed artifacts created here. Never upload secrets, datasets, checkpoints, credentials, caches, environments, or unrelated files.

Use the real Unitree G1 model from google-deepmind/mujoco_menagerie, record its exact commit, and preserve its license. A fixed pelvis is allowed to keep this starter achievable, but it must be disclosed as "fixed-base" in the README and caption.

Controller requirements:
1. Put the controller in policy.py with reset() and act(observation) -> action.
2. Call act() at every control step. Its bounded actuator commands must be the only code driving G1 joints after reset; never write scripted poses directly from the renderer or environment.
3. Do not teleport the ball or change its velocity after the episode starts. The policy-controlled robot must make simulated physical contact that causes the result.
4. A scripted observation-to-action controller is valid, but call it "scripted," never learned or trained. Do not claim hardware readiness.
5. Add a causality test: this policy must meet the measured success condition, while a neutral policy on the same seed must fail. Log policy call count, action bounds, contact evidence, seed, and both outcomes.

Count success when at least two pins tip past 45 degrees. Aim at the center pin and tune only policy actions, ball mass, friction, or pin mass until it succeeds every run. Use that exact measurement in the test and final card; do not invent metrics. If physical contact or the neutral-policy comparison does not pass, keep debugging or report the blocker. Do not publish the project as a policy without this evidence.

Create policy.py, scene.xml, run.py, tests, requirements.txt, README.md, THIRD_PARTY_NOTICES.md, NEXT_IDEAS.md, and run.sh. Pin dependencies. ./run.sh must run the policy-contract and causality tests, then generate result.mp4 from the successful evaluated episode. A replay may reuse those frames, but it may not alter the outcome. Inspect the video's duration, resolution, and representative frames.

If the HIM CLI is missing, install it with curl -fsSL https://arena.himrobotics.com/install.sh | sh. Check authentication with him whoami --json. If it fails, pause only for the user to open https://arena.himrobotics.com/account#developer-access, create a Packages and compute token, run him login in their own terminal, and paste it only into the hidden token prompt. Never ask for or print the token in chat.

If local execution is insufficient, launch the pre-approved bounded machine with: him compute --key ~/.ssh/id_ed25519.pub --profile gpu --environment standard --hours 1 --idle-minutes 30 --max-credits 100 --yes --json. Record the machine ID, and in finally-style cleanup stop it with him machine stop MACHINE_ID --yes --json even if the build fails.

Create submission.zip containing only reproducible source, small required assets, tests, dependency pins, README, NEXT_IDEAS.md, and notices. Inspect and print the ZIP inventory. Publish with: him upload ./submission.zip --video ./result.mp4 --kind both --robot unitree-g1 --simulator mujoco --challenge open-build-challenge --name "Three-Pin Tap — Unitree G1 Scripted MuJoCo Demo" --caption "Scripted fixed-base controller; simulated physical contact; not trained or hardware-ready. YOUR SHORT RESULT" --run-command "./run.sh" --yes --json. Replace the result placeholder before running it. If authentication is missing, pause only for him login; never claim an upload occurred until the CLI returns its URL.

End with the policy interface, causality-test output, artifact paths, published HIM Arena URL, compute lifecycle if used, and a section titled “Make it yours next” containing these actionable iterations:
- Expand from three pins to a full ten-pin rack.
- Add left-foot and right-foot bowling modes.
- Give the ball visible spin and make it curve into the pocket.
- Randomize the pin arrangement and show how many fall each run.
- Add a neon bowling-alley theme and a strike celebration pose.
Do not hide limitations or end with implementation logs.
IDEA 03

Block a slow goal

A stabilized G1 sweeps one leg across a slow shot and sends it away from goal.

See the one-shot agent prompt
Build, test, upload, and publish a small real policy for this Unitree G1 MuJoCo task. Do not stop at a plan, and do not substitute a cinematic animation for control evidence. The task is: A slow soccer ball begins the episode traveling toward a wide goal. The policy observes its position and velocity, commands one clear sideways blocking motion, and physical contact deflects it outside the goal.

This copied prompt approves up to 100 HIM Compute credits and publication of the exact reviewed artifacts created here. Never upload secrets, datasets, checkpoints, credentials, caches, environments, or unrelated files.

Use the real Unitree G1 model from google-deepmind/mujoco_menagerie, record its exact commit, and preserve its license. A fixed pelvis is allowed to keep this starter achievable, but it must be disclosed as "fixed-base" in the README and caption.

Controller requirements:
1. Put the controller in policy.py with reset() and act(observation) -> action.
2. Call act() at every control step. Its bounded actuator commands must be the only code driving G1 joints after reset; never write scripted poses directly from the renderer or environment.
3. Do not teleport the ball or change its velocity after the episode starts. The policy-controlled robot must make simulated physical contact that causes the result.
4. A scripted observation-to-action controller is valid, but call it "scripted," never learned or trained. Do not claim hardware readiness.
5. Add a causality test: this policy must meet the measured success condition, while a neutral policy on the same seed must fail. Log policy call count, action bounds, contact evidence, seed, and both outcomes.

Count success when the ball passes outside either goalpost. Use a slow ball, a large motion, and an obvious deflection that reads clearly on video. Use that exact measurement in the test and final card; do not invent metrics. If physical contact or the neutral-policy comparison does not pass, keep debugging or report the blocker. Do not publish the project as a policy without this evidence.

Create policy.py, scene.xml, run.py, tests, requirements.txt, README.md, THIRD_PARTY_NOTICES.md, NEXT_IDEAS.md, and run.sh. Pin dependencies. ./run.sh must run the policy-contract and causality tests, then generate result.mp4 from the successful evaluated episode. A replay may reuse those frames, but it may not alter the outcome. Inspect the video's duration, resolution, and representative frames.

If the HIM CLI is missing, install it with curl -fsSL https://arena.himrobotics.com/install.sh | sh. Check authentication with him whoami --json. If it fails, pause only for the user to open https://arena.himrobotics.com/account#developer-access, create a Packages and compute token, run him login in their own terminal, and paste it only into the hidden token prompt. Never ask for or print the token in chat.

If local execution is insufficient, launch the pre-approved bounded machine with: him compute --key ~/.ssh/id_ed25519.pub --profile gpu --environment standard --hours 1 --idle-minutes 30 --max-credits 100 --yes --json. Record the machine ID, and in finally-style cleanup stop it with him machine stop MACHINE_ID --yes --json even if the build fails.

Create submission.zip containing only reproducible source, small required assets, tests, dependency pins, README, NEXT_IDEAS.md, and notices. Inspect and print the ZIP inventory. Publish with: him upload ./submission.zip --video ./result.mp4 --kind both --robot unitree-g1 --simulator mujoco --challenge open-build-challenge --name "Goal-Line Sweep — Unitree G1 Scripted MuJoCo Demo" --caption "Scripted fixed-base controller; simulated physical contact; not trained or hardware-ready. YOUR SHORT RESULT" --run-command "./run.sh" --yes --json. Replace the result placeholder before running it. If authentication is missing, pause only for him login; never claim an upload occurred until the CLI returns its URL.

End with the policy interface, causality-test output, artifact paths, published HIM Arena URL, compute lifecycle if used, and a section titled “Make it yours next” containing these actionable iterations:
- Add left, center, and right shots with a matching block animation.
- Create a rapid three-shot save sequence.
- Replace the leg block with a dramatic two-arm goalkeeper pose.
- Measure reaction time from ball launch to visible block motion.
- Add a penalty-shootout scoreboard and five deterministic rounds.
Do not hide limitations or end with implementation logs.

HOW TO ENTER

Submit what you built.

It can be any robot simulation, policy, or video. It does not have to be table tennis.

Submit your build
  1. Upload your workAdd the project ZIP and an MP4 of it working.
  2. Submit by November 15Select this challenge on the Build page and publish.
  3. Our favorite wins $2,500We will work with the winner to try it on our real G1.

PUBLIC SUBMISSIONS

Builds submitted so far

0:000:00
Unitree G1 football
Work in progress
Unitree G1 football

Unitree G1 that plays football from its head camera alone: it finds the ball and kicks it to knock over a box. Trained from scratch in C++ (MuJoCo, libtorch, our own PPO) and passes the HIM builder kit’s 60 s standing safety test.

hamzabassir987's profile photohamzabassir987Unitree G1
0:000:00
G1 Free Kick
Work in progress
G1 Free Kick

G1 Free Kick. 1 neural network controls all 29 joints of a Unitree G1 for the whole play: it walks up to a futsal ball, lines up, kicks it into a 3 x 2 m goal with its right foot, and then stands still. There is no motion capture and no scripted kick.

Hiep Doan's profile photoHiep DoanUnitree G1
0:000:00
G1 Brunson
G1 Brunson

A Unitree G1 humanoid dribbling a regulation basketball between its legs, hand to hand, trained by reinforcement learning on the HIM Arena G1 joint profile. Passes all 12 episodes of the HIM builder kit's basketball screen with no findings, and ships an ARM64 runner container that completes the kit's 60-second container simulation. Sees the ball with its own head camera.

AmoghShrivastava's profile photoAmoghShrivastavaUnitree G1
0:000:00
G1 Brunson
Work in progress
G1 Brunson

A Unitree G1 humanoid dribbling a regulation basketball between its legs, hand to hand, with one clean bounce through the gap between the feet on every crossover. Trained by reinforcement learning on an accurate model of the robot and ball. 44 crossover dribbles per 20-second test with no falls, 42 when guided only by its own head camera. Includes the controller (ONNX and numpy), camera perception, simulation, test results and a safety report.

AmoghShrivastava's profile photoAmoghShrivastavaUnitree G1
0:000:00
Parkour v4 — Real Physics Stairs Jump — Unitree G1
Work in progress
Parkour v4 — Real Physics Stairs Jump — Unitree G1

FREE-BASE scripted; kinematic assist REMOVED. Real gravity/contacts. Stair climb + standing jump (or handstand if achieved). Not trained / not hardware-ready. Causality pass.

banksythequantLab's profile photobanksythequantLabUnitree G1
0:000:00
Parkour Clear v2 — Unitree G1 Scripted MuJoCo
Work in progress
Parkour Clear v2 — Unitree G1 Scripted MuJoCo

Scripted assisted-base parkour v2; 30–40cm step + narrow beam; HUD slow-mo; simulated contact; not trained or hardware-ready. Causality pass.

banksythequantLab's profile photobanksythequantLabUnitree G1
0:000:00
Parkour Clear — Unitree G1 Scripted MuJoCo
Work in progress
Parkour Clear — Unitree G1 Scripted MuJoCo

Scripted assisted-base parkour; simulated platform contact; not trained or hardware-ready. Clears start→20cm box→gap→mid→finish; causality pass.

banksythequantLab's profile photobanksythequantLabUnitree G1
0:000:00
IPSE K1 Ollie — Work in Progress
Work in progress
IPSE K1 Ollie — Work in Progress

Booster K1 attempts a skateboard jump/pop using a scripted controller plus a learned whole-body residual in ipse/phyz. The robot loses balance and falls; a stable aboard landing remains unachieved. Simulation only.

Cam Pedersen's profile photoCam PedersenBooster K1
0:000:00
Leave the Ground — K1 Tuck Jump
Leave the Ground — K1 Tuck Jump

Tiny robot. Big air. Booster K1 performs a simulated tuck jump and recovery in phyz. Full real-time run, followed by labeled slow-motion and freeze-frame replay. Editorial sound design; simulation only, not hardware-validated.

Cam Pedersen's profile photoCam PedersenBooster K1
0:000:00
G1 Brunson
G1 Brunson

G1 Brunson: a Unitree G1 humanoid dribbling a regulation basketball between its legs, hand to hand, with one clean bounce through the gap between the feet on every crossover. Trained by reinforcement learning on an accurate model of the robot and ball. In 20-second tests it performs 44 crossover dribbles on average with no falls, and 42 when guided only by its own head camera. Package includes the controller, the camera perception, the simulation and full test results.

AmoghShrivastava's profile photoAmoghShrivastavaUnitree G1
0:000:00
G1 between-the-legs crossover dribble v7 (PPO, NBA ball)
Work in progress
G1 between-the-legs crossover dribble v7 (PPO, NBA ball)

Update of v6 (stage F weights, 231M+210M steps). Unitree G1 29-DoF, official URDF + hardware PD gains, NBA-spec ball, PPO in MJX. 12 seeded episodes: 44.1 crossings/37.8 chained per 20 s, 5.0 respawns, 0% falls, 100% success; neutral 0%. Head-camera (D435 depth-first) perception in the loop: 41.5 crossings, 0% falls, after fixing the onboard cue bookkeeping (bounce detection, contact sampling). Supersedes v6.

AmoghShrivastava's profile photoAmoghShrivastavaUnitree G1
0:000:00
G1 between-the-legs crossover dribble v6 (PPO, NBA ball)
Work in progress
G1 between-the-legs crossover dribble v6 (PPO, NBA ball)

Update of v5 (same project, stage F weights: 231M+189M steps). Unitree G1 29-DoF, official URDF + hardware PD gains, NBA-spec ball, PPO in MJX. 12 seeded episodes: 41.8 crossings/34.2 chained per 20 s, 5.8 respawns, 0% falls, 100% success; neutral 0%. Includes head-camera (D435 depth-first) perception module; camera-in-the-loop gap disclosed in README. Supersedes v5.

AmoghShrivastava's profile photoAmoghShrivastavaUnitree G1
0:000:00
G1 between-the-legs crossover dribble v5 (PPO, NBA ball)
Work in progress
G1 between-the-legs crossover dribble v5 (PPO, NBA ball)

Update of v4 (same project, stage F weights: 231M+21M steps). Unitree G1 29-DoF, official URDF + hardware PD gains, NBA-spec ball, PPO in MJX. 12 seeded episodes: 31.9 crossings/23.8 chained per 20 s, 6.4 respawns, 17% falls, 83% success; neutral 0%. Adds head-camera (D435 depth-first) ball perception module. Supersedes v4.

AmoghShrivastava's profile photoAmoghShrivastavaUnitree G1
0:000:00
G1 between-the-legs crossover dribble v4 (PPO, NBA ball)
Work in progress
G1 between-the-legs crossover dribble v4 (PPO, NBA ball)

Unitree G1 29-DoF (official URDF, hardware PD gains, arm self-collision, palm-fitted hand) trained with PPO in MJX to dribble a regulation ball between its legs, alternating hands. 12 seeded episodes: 31 crossings/23 chained per 20 s, 8% falls, 92% success; neutral policy 0%. Supersedes v1-v3 (corrected README). Needs an external ball tracker on hardware.

AmoghShrivastava's profile photoAmoghShrivastavaUnitree G1
0:000:00
G1 between-the-legs crossover dribble (PPO, NBA-spec ball) v3
Work in progress
G1 between-the-legs crossover dribble (PPO, NBA-spec ball) v3

Unitree G1 29-DoF (official rev_1_0 URDF, Unitree hardware PD gains, arm self-collision, palm-fitted hand box) trained with PPO in MJX to dribble a regulation basketball between its legs, alternating hands, in a staggered stance. Ball calibrated to the official drop test. 12 seeded episodes: 31 crossings / 23 chained per 20 s, 8% falls, 92% success; neutral policy 0% (causality). Supersedes v1/v2 (v2 shipped a truncated README). MJX->MuJoCo-C contact gap disclosed in README.

AmoghShrivastava's profile photoAmoghShrivastavaUnitree G1
0:000:00
G1 between-the-legs crossover dribble (PPO, NBA-spec ball) v2
Work in progress
G1 between-the-legs crossover dribble (PPO, NBA-spec ball) v2

Unitree G1 29-DoF (official rev_1_0 URDF, Unitree hardware PD gains, arm self-collision, palm-fitted hand box) trained with PPO in MJX to dribble a regulation basketball between its legs, alternating hands, in a staggered stance. Ball calibrated to the official drop test. 12 seeded episodes: 31 crossings / 23 chained per 20 s, 8% falls, 92% success; neutral policy 0% (causality). Supersedes the v1 WIP entry. MJX->MuJoCo-C contact gap disclosed in README.

AmoghShrivastava's profile photoAmoghShrivastavaUnitree G1
0:000:00
G1 between-the-legs crossover dribble (PPO, NBA-spec ball) - WIP
Work in progress
G1 between-the-legs crossover dribble (PPO, NBA-spec ball) - WIP

Unitree G1 29-DoF (official rev_1_0 URDF, Unitree hardware PD gains) trained with PPO in MJX to dribble a regulation basketball between its legs in a staggered stance. Ball calibrated to the official drop test. 37 crossings/20 s in MJX eval, neutral policy fails (causality). WIP: falls in ~50% of 20 s episodes; MJX->MuJoCo-C contact transfer gap disclosed in README.

AmoghShrivastava's profile photoAmoghShrivastavaUnitree G1
0:000:00
SUPERSEDED — corrected final upload follows
Work in progress
SUPERSEDED — corrected final upload follows

SUPERSEDED — the video and package in this card are replaced by the final verified-cup entry. Please use the final verified-cup submission on this profile.

Bruno Oliveira's profile photoBruno OliveiraMicroduck
0:000:00
G1 Learned Kick — PPO with real contact
G1 Learned Kick — PPO with real contact

A trained PPO policy (no keyframes, no scripted launch) kicks a randomly spawned ball into the goal with real foot-ball contact: 32/32 goals in held-out eval. Reproduce with ./run_policy.sh

e's profile photoeUnitree G1
0:000:00
Midnight Lane — Unitree G1 Bowling (scripted MuJoCo demo)
Midnight Lane — Unitree G1 Bowling (scripted MuJoCo demo)

A Unitree G1 taps a strike on a neon micro-lane. Scripted MuJoCo demo — kinematically posed robot, deterministic launch, real physics for ball and pins, measured 3/3 knockdown. Not a trained controller.

e's profile photoeUnitree G1
0:000:00
booster_crawl_model_9500
booster_crawl_model_9500

Trained the booster to crawl using RL and an initial pose for influencing. Based off a g1_crawl policy I found on twitter.

Kyle Jeffrey's profile photoKyle JeffreyBooster T1

The real-G1 attempt depends on safety and compatibility. Cash prizes are subject to the Challenge Rules.