Pollen Robotics, Hugging Face's Bordeaux team, opened preorders on Microduck on 27 August 2026. It is a 25 cm biped that walks with a waddle, sits, crouches, picks things up with a beak, and gets back up from common falls. Policies run at 50 Hz on the robot. You train them in MuJoCo and export ONNX. The store price is $399 before tax and shipping.

I cannot buy one. The store's shipping line, checked on 31 August 2026, is launch countries only: US, Canada, EU, UK, Norway, Switzerland, Japan, and South Korea. "More countries available later." Singapore is not on that list. Waiting on a later wave, or on someone who will resell, is a long wait for a robot I mainly want to take apart.

Cream Microduck standing on a wooden desk in morning light, with a monitor, gamepad, and a yellow wheeled accessory nearby.
Cream Microduck from Pollen Robotics' 2026 press kit. Launch photography, not a unit I own.

So I read the runtime repo instead. pollen-robotics/microduck is the duck's brain. The LICENSE file there is Apache-2.0. The press kit says that open-source claim covers the software stack only. Mechanical and electronic design files are not public. Do not call this open-source hardware.

What the press kit and store agree on

Fifteen motors. About 25 cm tall, 14 cm wide. The store lists 780 g; the press kit says under 800 g. Rockchip RK3566 with an AI accelerator, 1 GB RAM, 32 GB storage. A front camera, an 8×8 time-of-flight matrix they call compact LiDAR, two IMUs (body and head), mics and a speaker, two NFC antennas, Wi-Fi and Bluetooth. Power is a removable NP-F550, 2600 mAh, about an hour. A gamepad is in the box. Seven trained moves ship with it.

Camera resolution, field of view, LiDAR range, and radio versions are still marked provisional on the press kit. I am not filling those in.

What the repo actually names

The board is a Radxa Zero 3W. Install docs flash Armbian 26.2.1 Minimal and provision over ssh. The 1 GB / 32 GB SKU matches the press kit. Wi-Fi and Bluetooth on that board are the onboard AIC8800, which is why pad pairing has a documented workaround. docs/project/npu-bringup.md calls the NPU 0.8 TOPS INT8.

Fifteen Dynamixel XL330 servos plus an IMU board share one UART. Protocol 2.0, 1 Mbps, /dev/ttyS2. The controller crate is rustypot's Xl330Controller. Joint IDs are right leg 10-14, left leg 20-24, neck/head/mouth 30-34. Mouth is joint 9. Every shipped alpha policy is 14 actions and skips it. The IMU is a custom imu_to_dxl v2 board at Dynamixel ID 200. The chip in duck-control/src/imu.rs is an ST LSM6DSV16X. It ships a game-rotation quaternion from on-chip SFLP. The 50 Hz loop reads that 12-byte block in the same sync_read as the servos.

The camera overlay used on hardware is Raspberry Pi Camera v2, Sony IMX219. The OV5647 overlay exists in Armbian and has never been used here, according to docs/project/media-bringup.md. The head mount is a quarter turn off; the pipeline no longer rotates pixels on the CPU.

Depth is a VL53L5CX or VL53L8CX, 8×8, on the HAT I²C bus, addresses 0x29 or 0x52. Firmware upload is about 90 KB and takes seconds. The daemon says most ducks have no sensor fitted. Audio is a TLV320AIC3104 on that same I²C plus I²S.

There is no fuel gauge. Battery percent is a linear map of mean servo supply voltage: 8.2 V full under load, 6.6 V empty. Those bounds live in duck-control/src/model.rs, copied from Pollen's check_battery in the older runtime. I did not measure a pack. The chemistry is named as NP-F550, 2S Li-ion.

Training lives next door in microduck_rl. Actuators are the BAM M6 model of the XL330, with backlash, voltage sag, and friction randomization. That is the sim-to-real work. A Feetech bus that merely "looks like" Dynamixel would throw that model away.

robotd  50 Hz control loop
        |
        |  Dynamixel protocol v2, 1 Mbps
        v
 /dev/ttyS2   (Radxa Zero 3W UART2)

 id 200              20-24               30-34                10-14
 imu_to_dxl v2       left leg            neck, head, mouth    right leg
 LSM6DSV16X          5 x XL330           5 x XL330            5 x XL330

 HAT I2C (i2c-3)     TLV320AIC3104 codec
                     VL53L5/8CX 8x8 ToF  (optional)
 CSI                 IMX219, mounted 90 deg
Reconstructed from docs/design/architecture.md, docs/design/robotd-design.md, and duck-control, 31 August 2026. This is a wiring diagram of named buses, not a photo of Pollen's HAT, and not a complete schematic.

How the 15 motors sit

The bus table is electronics. The body is a stack: head shell and camera, a beak, a neck, torso shells around a battery brick, then left and right hip, thigh, shank, ankle, and foot. That is fifteen actuators if you count the mouth, which matches the repo. The press kit also names a head IMU and a body IMU; only the body board on the Dynamixel bus is in the control loop I read.

Black and white kit-manual exploded drawing of Microduck: head, neck, torso, battery, and paired leg joints, with action thumbnails for walk, sit, crouch, and recover.
Kit-manual exploded view of the stack. Use it as a picture of how the parts hang together. Do not copy the printed callouts; several labels on this plate are garbled and are not a source. Named chips stay in the table below.

A shopping list, labeled

Confirmed means the repo or the press kit/store names the part. Inferred means I would buy that SKU to match the named protocol, and I have not opened a duck.

Part Qty Evidence
Radxa Zero 3W, RK3566, 1 GB / 32 GB 1 Install docs + press kit
Robotis Dynamixel XL330 (protocol 2.0) 15 Named in duck-control. M288 vs M077 is not named
imu_to_dxl v2 / LSM6DSV16X on the motor bus, ID 200 1 Named in imu.rs. Board gerber is not public
Raspberry Pi Camera v2 (IMX219) 1 media-bringup.md
VL53L5CX or VL53L8CX 0 or 1 tofd. Optional on most units
TLV320AIC3104 + speaker + mic 1 Codec named. Mic capsule is not
Sony NP-F550, 2600 mAh 1+ Press kit + battery_percent
Custom HAT: UART2 level shift, NP-F sled, I2C, I2S 1 Implied by the buses. No gerber
Head IMU, NFC, shells, links ? Press kit only. Head IMU is not in this control path. CAD is closed

Fifteen XL330s are the expensive line on that list. I have not priced a full cart.

No gerber for the HAT

Software clone: clone the repo, flash a Zero 3W, train on a GPU or Hugging Face Jobs. That path is documented. Hardware clone stops at the HAT. UART2 needs a Dynamixel-level transceiver. The NP-F pack has to become 5 V for the board and the servo rail the XL330s actually drink. ToF and the codec share I²C. None of that is in a zip file.

A guessed BOM that puts MPU-6050 and OV5647 in the head is reading the wrong generation. The control loop dropped the old I²C IMU. The camera overlay that has been used is IMX219.

Editorial

I want this robot

Not the boxed one. The one on the table, built from the repo.

The software is open. The HAT is not. That is the only real blocker.

Fifteen XL330s, a Radxa Zero 3W, a camera, a ToF, a battery sled. A kid can run the sim. An adult can design the HAT.

I have not built one. I have not seen Pollen's board. The list above is from reading the repo against the press kit. If a later commit names a different camera or IMU, that commit wins.