quickstart·
60s to first wave
1 / clone & run·
make run builds the Docker image (if needed), brings up the compose stack,
and attaches you to the agent.py REPL, auto-starting bidirectional voice
(g1_speak). The cockpit is up at the same time on
https://<robot>:8080. For a bare-metal venv instead (DEV only), use
make run-bare, which clones the Unitree SDK (the pip wheel is broken) and
exports CYCLONEDDS_URI + PYTHONPATH.
2 / pick a model·
NEON runs on a Bedrock model. Provide Bedrock credentials before make run;
the model id can be changed later from the dashboard (Configuration, model)
without editing files:
The default model is global.anthropic.claude-opus-4-8; the full variable list is on
docker.
3 / talk to it·
> check state
mode=ai, fsm=500, arm_ready=True, soc=86%
> wave hello
g1_arm_action('high wave') rc=0, released
You want arm_ready=True and fsm ∈ {500, 501, 801}. If arm_ready=False,
say set fsm 500 first, the arm won't move from Damp.
enable control (arm the G1)·
Before the robot can walk, switch it to walk/control mode in the Unitree app. This hands motor control to neon over DDS.
safe first commands·
Green zone
check state, battery, wave, shake hand, heart, clap ·
hug, stand up, sit down, damp, set stand height 0.75
Walking is by request only
walk forward 50cm is the consent; nothing else is. NEON looks at the
path first, walks only in FSM 501, and reports what the odometry
measured (moved 0.48 m) or that it did not move. See
safety.
prerequisites·
- Unitree G1+ reachable (
192.168.123.161MCU,192.168.123.164Jetson) - Interface
eth0reaches the motor bus - Docker on the Jetson (or Python 3.10+ for
make run-bare)