Add the coconut oil to the Instant Pot and set to SAUTE. Once hot, add the onion and cook until beginning to soften, about 5 minutes. Add the ginger, garlic, curry, garam masala, chili powder, and salt. Cook until fragrant, about 30 seconds. Turn the Instant Pot to OFF. Add a splash or water or chicken broth and stir, using a sturdy plastic or wooden spoon to scrape loose any browned bits that have stuck. Make sure you remove all of the stuck on bits so that you don't trigger a burn warning.
Add the tomato sauce and cauliflower florets and stir to combine. Lay the chicken breasts on top, then scatter the butter pieces over the top.
Close and seal Instant Pot. Cook on Manual (HIGH) pressure for 12 minutes. Once the time is up, let the pressure release naturally for 10 minutes, then vent to immediately release any remaining pressure.
Carefully open the lid and transfer the chicken to a cutting board. Cut into bite-sized pieces, then return to the sauce. Stir in the half and half or coconut milk. Let cool a few minutes, then stir in the Greek yogurt (do not stir it in immediately or it will curdle). Serve with rice and a sprinkle of fresh cilantro.
Store leftovers in an airtight container in the refrigerator for up to 5 days or freeze for up to 3 months. Let thaw overnight in the refrigerator. Reheat leftovers gently on the stovetop or in the microwave.