Model originally uploaded to Thingiverse at https://www.thingiverse.com/thing:6302042.
The two sides spin on a bearing while the opposing magnets move past one another with a slight bump. There are 19 magnets on the base and three in the lid.
Requires one 608 bearing and 22 neodymium magnets that are 6x2mm.
Assembly requires no glue - all parts press together although the magnets might require a hard, round tool to push them in and flatten them. You can easily remove the magnets if needed because there is a small gap above the magnets you can use to pry them out. However, the bearing will be very hard to remove.
I included a second top with a slightly smaller bearing cup that fits more tightly (Purrbox Top sm). I don't know why, but the larger one fits perfectly with one filament I used but was too loose with a different filament. The second one fit perfectly with the other filament I tried.
You could use the slicer to cut out just the middle portion and print it to see which one fits better using your printer and your filament.
I experimented with different numbers of magnets and found that this was a good number for a realistic purr.
The bottom was printed with 10 perimeters so that the central column which holds the bearing would end up solid. The top can be printed with 2 perimeters. The .3mf files include these settings already, but if you slice them yourself you'll need to set the perimeters for the bottom correctly or else the central column will break off.