Traditional mortise and tenons, like most wood joinery are cut with saw and chisels (possibly with a suitable plane as well) and have sharp linear features which are not easily replicated on a CNC with a round endmill.
One technique would be to cut the mortise with the part flat on the wasteboard, and the tenon held at a 90 degree angle in a vertical fixture, rounding it to match the radius of the pocket used to cut the mortise. See the chapter on Fingerjoints for a fixture and the mechanics of doing thus.
An alternative which could be cut in a single setup would be to cut the tenon in two halves each laid flat on the wasteboard and rounding them using a cove radius endmill as used for the Radiused Fingerjoints of the previous chapter. The mortise would need to be similarly rounded to fit, or one could relieve the shoulder using a V carving.
A more expedient option is to use the full thickness of the stock for the tenon thickness and to cut the mortise with dogbones or tees, possibly using a cove radius endmill or a V carving to round off the mortise to allow the parts to fit snugly. It is this option which will be explored here.
When the stock has a tenon cut while flat the tenons will have a rounded base which will need to be adjusted for when cutting the mortises:
When cutting the mortises it will be necessary to cut T-bones or dogbones to allow for the square corners, and the longitudinal edges will need to be relieved, say with a V cut.
With code in place to make the mortises and tenons, it is a simple matter to use them in a suitable design:
Available at: https://www.blockscad3d.com/community/projects/1151153
Arguably, the proportions should be adjusted, since the current dimensions seem more bench-like and is a bit low for use.