- Maker
- LeRobot community
- Actuators
- 5 joints plus gripper, 6 actuators
- Each one is a dimension in the action vector
- Servos
- Dynamixel XL330 and XL430
- Supply voltage
- 5 V and 12 V rails depending on the servo
- Dynamixel bus, so the rails are not the ones the Feetech arms use
- Parts cost
- roughly 250 to 350 euro per arm in parts
- Platform support
- Compatible
- Same data pipeline, the driver is the part that differs
- Also written as
- Alexander Koch arm, Koch arm
- Dataset format
- LeRobot v2.0 or v2.1
- One recording feeds every model on the platform
The Koch v1.1 is a five joint arm with a gripper from the LeRobot community, built on Dynamixel XL330 and XL430 servos rather than the Feetech bus the SO-100 family uses. Parts run roughly 250 to 350 euro and it needs 5 V and 12 V rails depending on the servo. This platform lists it as compatible: the driver differs, the recording, training and deployment path does not.
What the Koch v1.1 is
The Koch v1.1 is a low cost five joint arm with a gripper that came out of the LeRobot community, and it is usually written as the Alexander Koch arm or simply the Koch arm. Kinematically it lands in the same place as an SO-100: six actuators, a printed structure, smart serial servos, a machine you build on a table rather than buy assembled. The parts bill is different, roughly 250 to 350 euro against 110 to 150, and the reason is the servos.
Where the SO-100 family uses Feetech STS3215 units on one chain at one voltage, the Koch uses Dynamixel XL330 and XL430 servos across 5 V and 12 V rails. That is not a footnote. It is the fact that determines the wiring, the tooling you need to set up the chain, the connectors on your bench and which of the hardware pages on this site you can follow line by line.
Specifications
| Item | Koch v1.1 |
|---|---|
| Maker | LeRobot community |
| Also written | Alexander Koch arm, Koch arm |
| Kinematics | 5 joints plus gripper, 6 actuators |
| Servos | Dynamixel XL330 and XL430 |
| Supply | 5 V and 12 V rails depending on the servo |
| Parts cost | roughly 250 to 350 euro per arm |
| Platform support | Compatible |
| Dataset format | LeRobot v2.1 |
| Training guides | Four, one per supported policy family |
Dynamixel instead of Feetech: the difference that matters
Feetech STS3215 and Dynamixel XL servos solve the same problem inside different ecosystems. Both are smart serial servos: you address a unit by id over a shared line and ask it for a position rather than feeding it a pulse width. What differs is the protocol carried on that line, the connector, the USB interface that speaks it, the register names behind torque and position, and the voltage the motor expects.
All of that difference stops at the serial port. Above it, a joint angle is a joint angle. The client records the same six values per control step, writes the same LeRobot v2.1 layout, uploads to the same place and fine-tunes the same five policies. Nothing in a dataset records which brand of servo produced the numbers, which is exactly why all four training guides exist for this arm as well as for the SO-100.
Below the serial port, almost nothing carries over from a Feetech build. Ids are written with Dynamixel tooling rather than the Feetech utility, the chain reaches the host through a Dynamixel USB interface rather than a Feetech bus adapter, and the limits you might want to inspect live in a different register map. If you built an SO-100 first, budget an evening for the parts of the process that are muscle memory on one bus and unfamiliar on the other.
People accept the higher price for build quality reasons that this platform is not in a position to referee. What can be said is what the numbers here measure and do not measure: they measure policies, and a policy cannot see the servo brand. A dataset recorded on a Koch and a dataset recorded on an SO-100 are the same kind of object to a trainer, so nothing about model choice, training cost or step count changes because of the bus.
A LeRobot v2.1 dataset holds joint positions, camera frames and the task string. There is no servo field and no arm model field anywhere in it, so a Koch recording and an SO-100 recording are structurally identical. /glossary/lerobot-dataset has the layout, /glossary/episode explains what one recording actually contains, and /glossary/teleoperation covers the driving half of the job.
Power: two rails, and a warning that runs both ways
A Feetech arm is one supply into one chain. A Koch is not. Which rail a given servo wants depends on the model sitting at that joint, and a Koch build mixes two families, so the wiring involves two voltages on one machine and you cannot infer either of them from the joint position.
Read the label on each servo rather than assuming, because 5 V and 12 V are both correct on this arm depending on which unit you are looking at. Then keep those supplies away from any Feetech hardware on the same bench. The 12 V supply that a Koch legitimately needs is the exact supply that destroys an SO-100, an SO-101 or a LeKiwi arm in seconds. A shared desk with two arms and unlabeled leads is the realistic way this goes wrong, and it goes wrong once.
What compatible support means in practice
The catalog marks the SO-100 and SO-101 as fully supported and the Koch v1.1 as compatible. That word is doing real work and it is worth spelling out rather than leaving to interpretation.
- Everything above the driver is identical: recording, review, LeRobot v2.1 datasets, upload, cloud training, checkpoint deployment and the MCP tools.
- All four training guides exist: /train/smolvla-on-koch-v1-1, /train/act-on-koch-v1-1, /train/groot-n1-7-on-koch-v1-1 and /train/pi0-5-on-koch-v1-1.
- New features are validated on an SO-100 first. The Koch path is the second one checked, not the first, so a fresh capability may reach you slightly later.
- Three of the six hardware fix pages are written for a Feetech chain and are scoped to the SO-100, SO-101 and LeKiwi: /fix/arm-twitches-then-sags, /fix/joint-stops-early and /fix/gripper-does-not-close. Read them for the reasoning, then translate the register names.
- The bus agnostic ones apply as written: /fix/arm-not-detected for a missing serial port, /fix/servo-not-responding for a silent unit, /fix/camera-not-detected for the cameras.
From the carton to the first movement
- 1Sort the servos by model, not by joint
Separate the XL330 units from the XL430 units before anything else and note which rail each group expects. This is the sort that prevents the expensive mistake later, when everything is assembled and the labels are hidden.
- 2Write the ids with the Dynamixel tooling
Each servo needs its id set while the connector is reachable. The Feetech utility from an SO-100 build will not do this, and neither will the ay-robots CLI. Do it first, verify it, then start assembling.
- 3Follow the SO-100 build for the rhythm, not the parts
/learn/so-100-getting-started is written for a Feetech arm, but the sequence of assemble, pair, list devices, calibrate is the same sequence here. What does not carry across is the servo tooling and the wiring, which is exactly the part above.
- 4Install the client and pair this machine
The installer from /download brings the CLI and the desktop client with the driver inside. Pair once with the code from the Robots page in the dashboard.
bashcurl -fsSL https://www.ay-robots.com/install.sh | sh ay-robots pair 4QD2-8HRM-1XV6 ay-robots status - 5Find the port and count six servos
The device list reports the arm, its serial port and every camera. Six units answering means the Dynamixel chain is sound, and that is the checkpoint to reach before you attach cameras or think about data.
bashay-robots devices - 6Calibrate, then send it home
Guide the joints to the neutral pose and press Enter to store the zero, then command the home pose. The calibration reference belongs to this physical arm and has to be captured again for every arm you build.
bashay-robots calibrate ay-robots home
What the platform trains and runs on a Koch v1.1
The same four policy families, with the same defaults, because the defaults come from the model rather than from the arm. Nothing in the table below changes because the bus is Dynamixel.
| Policy | Guide | GPU tier | Episodes to start | Inference per step |
|---|---|---|---|---|
| SmolVLA | /train/smolvla-on-koch-v1-1 | RTX 4090 or any 24 GB card | 30 | about 245 ms |
| ACT | /train/act-on-koch-v1-1 | RTX 4090 or any 24 GB card | 50 | about 20 ms |
| GR00T N1.7 | /train/groot-n1-7-on-koch-v1-1 | A100 80 GB or H100 80 GB | 50 | about 152 ms |
| Pi0.5 | /train/pi0-5-on-koch-v1-1 | A100 80 GB or H100 80 GB | 50 | about 485 ms |
# Record while you teleoperate. The command starts and stops the recording, it does not drive the arm.
ay-robots record --task "stack the small block on the large block" --episodes 50 --cameras wrist,top
ay-robots datasets list --local
ay-robots datasets upload block-stack --name block-stack-koch
# No training command exists. Start the run under Training in the dashboard,
# or call the start_training tool on the MCP server.
ay-robots run --model smolvla --checkpoint s3://runs/block-stack-koch/step-20000 --task "stack the small block on the large block"
ay-robots stopModel details sit at /policies/smolvla, /policies/act, /policies/groot-n1-7 and /policies/pi0-5. If the run dies as soon as it starts, the cause is usually memory or format rather than hardware, and /fix/out-of-memory-training and /fix/dataset-rejected-v3 cover the two that account for most of it.
Against the other three arms
- SO-100 and SO-101: one Feetech chain, one 7.4 V supply, roughly 110 to 170 euro in parts, full support. They are the cheaper and better trodden route, and the SO-100 is what /live actually runs.
- LeKiwi: a Feetech arm at 7.4 V on a 12 V three wheel base, roughly 400 to 500 euro. It is the only supported machine whose action vector is wider than six values.
- Koch v1.1: the only Dynamixel arm here, the only one where a 12 V rail is correct rather than fatal, and the most expensive fixed arm on the list at roughly 250 to 350 euro.
Frequently asked questions
Can I run a Koch v1.1 on a 7.4 V supply?▾
No, and the mistake runs in the opposite direction from the usual one. The Koch expects 5 V and 12 V rails depending on which servo sits at that joint, so check the label on each unit rather than applying the Feetech rule you may have learned on an SO-100.
Do I need different training settings for a Koch?▾
No. Batch size, learning rate, step count and gradient accumulation are properties of the model, not the arm. SmolVLA on a Koch runs the same defaults as SmolVLA on an SO-100, and the guide at /train/smolvla-on-koch-v1-1 lists them.
Can I train on Koch and SO-100 episodes mixed together?▾
The shapes line up, since both produce six values per control step, so a trainer will accept it. Whether it helps is another matter: link lengths and calibration zeros differ, so the same joint number means a different pose on each arm. Treat them as two datasets unless you have a specific reason not to.
Does the Dynamixel bus change inference latency?▾
The latency figures here, about 20 ms for ACT up to about 485 ms for Pi0.5, are the time the model takes to produce one action step on the rented GPU. Transport time on the servo bus is a separate cost that those numbers do not include. /glossary/inference-latency explains what is being measured.
Why is the Koch v1.1 more expensive than an SO-100?▾
The servos. A Koch build is roughly 250 to 350 euro against 110 to 150 for an SO-100, and the Dynamixel units are where the difference sits. The rest of the structure is comparable printed hardware.
Will compatible support stop working on me?▾
Compatible means the driver layer differs and the SO-100 is what gets tested first. Recording, datasets, all five trainers, checkpoints and the MCP tools are shared code paths, so the surface where the two arms can diverge is the driver and the Feetech specific fix pages, not the pipeline.
Still choosing? The arm comparisons put two of them side by side, and /policies covers the models you can train on any of them.
Drive a real arm before you build one
The arm on /live is a real SO-100, wired up and online. Anyone can drive it from the browser without a signup, which is the closest look at this class of hardware you can get without owning any.