Add the onion, chiles, ginger and garlic to a food processor or blender and process until smooth. Add a little water if necessary.
Heat the oil or ghee in a large pot or wok over medium flame.
Add the onion puree, curry powder and cumin and sauté, stirring frequently, for 5 to 8 minutes, or until cooked down.
Stir in the tomatoes and simmer for 3 to 4 minutes.
Add the chicken, coconut milk, salt and pepper.
Reduce heat to low and simmer, covered, until the chicken is cooked through and tender, anywhere from 30 minutes to an hour.
Add more water as needed.
Stir in the cilantro, adjust seasoning with salt and pepper and serve with with rice or chapatti.