Melt coconut oil and vegan butter on a hot skillet over medium heat.
Add in cumin seeds and toast them, about two minutes.
Add onions and a sprinkle of salt. Sauté until softened, about two minutes.
Mix in garlic, ginger and fresh chillies (if you're using them). Sauté for one or two minutes.
Mix in garam masala, ground cumin, coriander, turmeric and chilli powder. Let the spices cook for a minute or two to release their flavour.
Mix in tomatoes until they are well incorporated. If the mixture appears too thick, add water.
Mix in oven-roasted tofu. Lower heat, cover and let cook for 20 to 30 minutes. The curry should go from a brownish-red colour to a deep red. Don't rush this process.
While the curry cooks, make the cashew cream. Blend cashews and water on high until creamy.
Once the curry turns to a deep red, use a hand blender to puree all the ingredients. If you don't have a hand blender, let cool, transfer to a stand blender and back.
Add cashew cream and coconut cream. Let cook for about 5 to 10 minutes.
Remove from heat and serve with a sprinkle of fresh cilnatro.