I use a block like a rivet swage. The block is thicker than the bolt length you want and a hole is drilled at shaft diameter. Cut off a length of shaft diameter rod that allows 1 to 1 1/2 the diameter to stick up over the block height.
1) Put the swage on top of the anvil,
2)heat the end of the rod blank to red,
3)drop the cold end in the in the hole and peen the hot end over.
4) cut the bolt blank to length and thread (You may need a drift pin to punch it out of the block.)
You have a number of options on the heading end of the hole ,for instance, a coutersink, or a counterbore to make a nicer round head shape with less filing.
I make copper rivets the same way.
The guy who made James carriage bolts was way better than me.