Heat coconut oil in a large pot over medium-high heat. Season chicken with salt, brown in batches, 3 minutes per side. Set aside.
In the same pot, sauté onion 5 minutes until softened.
Add garlic and ginger, cook 1 minute.
Stir in curry powder, cardamom, and cinnamon, cook 1 minute until fragrant.
Add tomatoes, cook 5 minutes until broken down, scraping up any browned bits.
Pour in coconut milk, bring to a simmer.
Return chicken to the pot, cover, and simmer 20–25 minutes until chicken is tender and cooked through.
Season with salt, top with cilantro, and serve hot.