Started by turning the basic shapes, then transferred to the mill for the lobed features:

Three flats, 120 degrees apart:

They are different side-to-side, spigot and socket:

With the hardened washers fitted:

And the assembly with bearings and output shafts:

And fitted to the ball retainer/pulley:


Assembled within the pulley:

Works fine, smooth as silk. So that’s the rear done, there’s another pair at the front, but we’ve salvaged a good pair of plastic ones for now.
Thanks for all the advice and comments.