Heat oil over medium-high heat, add cardamom and cinnamon, stir once, and add onion. Sauté, stirring constantly, until onion begins to turn brown.
Stir in garlic and ginger, sauté 30 seconds, and add coriander, cumin, cayenne, and turmeric. Stir for a moment, then begin adding yogurt, 1 T at a time, stirring each time until it’s gone.
Add tomato and cook until soft and thick. Add seitan, stock, and a bit of salt. Bring to a boil, cover, turn to low, and simmer for 15 minutes.
Stir in garam masala and cream, garnish with cilantro, and serve over rice.