Preheat the oven to 400˚. In a large bowl, whisk the eggs, heavy cream, gruyere, a big pinch of salt and a few grinds of pepper until foamy.
Melt the butter in a 10-inch cast-iron skillet over medium heat. Add the onion and the potatoes and cook, stirring, until the onion is translucent and the potatoes are fork-tender, about 12 minutes. Pour the egg mixture over the top. Pull the edges away from the sides of the pan with a rubber spatula so the eggs flow to the bottom of the pan. Cook until the frittata is half set, 2 to 3 minutes, then sprinkle in the ham.
Transfer the skillet to the oven and bake until the frittata is puffed and golden, 10 to 12 minutes. Sprinkle with the Parmigiano-Reggiano and chives and serve with sour cream.