Mix the nondairy milk and lemon juice and set aside.
Place the garlic, ginger and chili pepper in a blender with about ¼ cup of water and process into a smooth paste. Add more water if necessary.
Heat the oil in a nonstick or cast-iron saucepan. Add the tempeh cubes and brown over medium-high heat, about 2 minutes each side. Remove and set aside.
In the same pan, add the cardamom, cinnamon, bay leaf and whole peppercorns and stir-fry about a minute or until the bay leaf darkens a couple of shades. Add the onions and saute for about 8-10 minutes over medium heat until they caramelize into a brown color. You can help them along by adding a teaspoon of sugar.
Add the ginger-garlic-guajillo mixture to the saucepan. The add the powdered coriander and cumin. Stir well and fry until the raw smell dissipates, about five minutes.
Add the tempeh or tofu cubes and stir them well to coat evenly with the spices.
Add the milk-lemon mixture and stir thoroughly into the tempeh.
Add ½ cup of water, more if you want a thinner gravy. Cover and cook about five minutes to let the flavors mingle and merge.
Stir in the garam masala and add salt to taste.
Serve hot with rice or rotis.