Soak the cashews in warm water for 30 minutes. Strain out all water before using the cashews.
In a wide saucepan or Dutch oven heat a teaspoon of oil over medium heat. Add coriander seeds, cumin seeds, bay leaves, green cardamom pods, optional brown cardamom pod, cloves and bay leaves. Saute for a couple of minutes until the spices are very aromatic.
Add half the onions, saute for a few minutes until they begin to brown, then add half the tomatoes. Cook the tomatoes until they are very soft. Remove everything to a plate and let it cool to room temperature. Add 1 cup water and blend to a smooth paste. Set the paste aside.
In the same pan, heat a teaspoon of oil. Add mustard seeds and, when they sputter and crackle, add the remaining onions and a bit of salt. Saute the onions until translucent.
Add ginger garlic paste, stir it in for a minute, then add the remaining tomatoes and saute until soft and pulpy.
Stir in the potatoes. Add turmeric, Kashmiri chilli powder or cayenne and garam masala. Mix well.
Add the blended masala paste to the pot, then add the cashews and mix. Add up to another cup of water to thin the sauce if it's too thick.
Cover and cook the curry for 10 minutes or until the potatoes are tender. Stir in the herbs: the optional curry leaves and cilantro.
Add the coconut milk to the pot, mix and bring the curry to a boil. Lower heat and let the curry simmer for 10 minutes. Add salt to taste. Garnish with more cilantro, if you wish, before serving.