Preheat the oven to 350°F. Spread the hazelnuts on a baking sheet in a single layer. Roast them for 12 minutes, rotating the pan halfway through. Remove the hazelnuts from the oven and let them cool for five minutes.
Add the still-warm hazelnuts to your food processor's bowl. Process them on high until the nuts turn into loose, fairly liquid butter, about 10 minutes, stopping to scrape the sides and bottom of the food processor bowl a few times during this process.
Add the remaining ingredients (cocoa powder, stevia, oil, vanilla, and salt) to the food processor. Process them on low for a few seconds, then process on high until very smooth, about 3 more minutes, scraping the sides and bottom twice.
Serve with keto bread or as a dip for strawberries.
Video
Notes
It's best to use Dutch-processed cocoa powder (cocoa processed with alkali) because it is milder and not as acidic as natural cacao powder.
You need patience when processing the hazelnuts because it takes a while for them to turn into smooth, loose butter. I saw several recipes that said five minutes. But in my KitchenAid food processor, on high speed, it takes a full ten minutes. Getting smooth, loose hazelnut butter - as shown in the photo below - is the key to this recipe's success and to preventing a grainy texture.
I sweeten this spread with stevia glycerite. The glycerite formulation greatly minimizes the aftertaste typical of stevia products. A full tablespoon is needed here because of the large amount of unsweetened cocoa powder. If you wish, you can replace the stevia with one cup of powdered sweetener. If the spread seems too thick, add a tablespoon of oil.
You can keep this spread in an airtight container in the fridge for up to 2 weeks.