Start by preparing the ingredients. Finely chop the onions, garlic, and ginger, so they break down into gravy quicker. Cover the bottom of a deep pan or pot it oil/butter/ghee, and heat to medium.
Add the chopped onions, garlic, and ginger to the pot, salt liberally to help them release their water. Fry until the onions begin to brown and become translucent. This may take several minutes. Make sure you stir occasionally, and add water to prevent burning and sticking as required. Just a few tablespoons at a time into a hot pan will help break down the onions.
Once the onions have softened and browned, add the cardamom pods, whole cloves, cinnamon stick, garam masala, ground cayenne pepper, and coriander powder to cook. Continue to fry, stirring occasionally until the spices are properly cooked. 3-5 minutes or until the smell has reduced. Add oil or water as needed to prevent burning or sticking. Add coconut milk, plain yogurt, and green chilies, then reduce the heat to a low simmer and cook until the gravy has thickened and darkened. 15-20 minutes. Don't let it burn.
Once the gravy has darkened near it's final colour, add the cubed whitefish of your choosing - see notes
Adjust the heat to a gentle simmer, and place the chunks of fish in the pan. Tossing to gently coat the fish with the gravy. Add some water if the gravy is too dry. Cover the pot and allow the fish to steam and simmer for 8-10 minutes, or until it is just cooked through.
Garnish with fresh cilantro, lime juice, and toasted coconut flakes. Serve with low carb cauliflower pulao rice, or your favourite low carb side dish. (see notes for Fish Korma nutritional information)