Preheat your oven to 350°F (175°C).
Lightly grease a nonstick 6- or 8-cavity donut pan with coconut oil or cooking spray. Greasing prevents sticking and keeps the donuts tender.
In a large bowl, whisk the almond flour, coconut flour, protein powder, cocoa powder, sweetener, baking powder, baking soda, and salt until well combined. Break up any clumps, especially in the cocoa and protein powder.
In a separate bowl, whisk the eggs, almond milk, Greek yogurt, melted coconut oil, vanilla, and optional coffee until smooth. The mixture should be silky and pourable.
Pour the wet ingredients into the dry and stir with a spatula until just combined. Do not overmix or the donuts may turn dense. The batter should be thick but spoonable; if it’s too thick, add 1–2 teaspoons more almond milk.
Spoon the batter into a piping bag or a zip-top bag with a corner snipped.
Pipe the batter into the donut cavities, filling each about 3/4 full. Smooth the tops with a damp finger if needed.
Bake for 10–12 minutes, or until the tops spring back lightly and a toothpick comes out mostly clean with a few moist crumbs. Do not overbake; they’ll continue to set as they cool.
Cool the donuts in the pan for 5 minutes, then carefully transfer to a wire rack to cool completely before glazing. Warm donuts will melt the glaze.
For the glaze, whisk cocoa powder, powdered sweetener, vanilla, salt, and 1 tablespoon almond milk.
Add more milk, a little at a time, until you reach a thick yet pourable consistency.
Dip the tops of each cooled donut into the glaze, let excess drip off, and place back on the rack. Let the glaze set for 10–15 minutes. For extra shine, glaze twice.