Soak cashews in boiling water for at least 15 minutes. You'll need this for the gravy.
Add chickpeas to a mixing bowl. Mash with a potato masher or fork so the chickpeas break down into a "mushy" texture. Add the rest of the ingredients for the kofta balls to the mixing bowl: cumin, red chili powder, chickpea flour or all purpose flour, cornstarch or arrowroot starch, and salt. If necessary, add another tablespoon of chickpea flour or all-purose flour. Mash together until it is easy to form balls.
Form each kofta ball with about 1 tablespoon of the mixture. Place on a plate and refrigerate for about 30 minutes to let it set. Meanwhile, start on the gravy.
Air fry or fry the kofta balls: Once the kofta balls have been refrigerated, they should be slightly more firm than before. You can now either fry them in a couple inches of neutral oil for 5-6 minutes OR air fry them at 375 F for 12-14 minutes. Both produced good results!
For the gravy: Add avocado oil or another neutral oil to a medium saucepan on medium heat. When hot, add the onion. Cook until translucent, so about 4-5 minutes. Add ginger and garlic. Cook for 2 more minutes. Add chopped tomatoes and cook on medium-high until the tomato juices mostly evaporate, which should take about 5 minutes.
Add salt and all ground spices. Stir for 1 minute before adding milk. Simmer until well-combined. Now you can either add the cashews and ½ cup water to the saucepan and use an immersion blender to make the gravy smooth OR blend in a separate processor with the cashews and ½ cup water.
Pour the smooth gravy back in the saucepan and heat it on medium-low heat. Clean out the blender with another ½ cup of water and pour into the saucepan. Add kashmiri lal, kasoori methi, and salt to taste. Cook for a couple minutes before adding the kofta balls.
Garnish with cilantro and serve with flatbread of choice, like this instant yeast-free garlic naan or whole wheat naan!