In this riff on a classic, croque madame gets a protein boost by swapping out the bread for chicken breast. I'd make this one for brunch, lunch, or dinner.
Prepare a large bowl of ice water. In a large skillet, bring a couple of inches of water to a boil. Salt the water and add the asparagus. Cook until crisp-tender, 2 to 3 minutes. Add to the ice water and let cool. Drain and pat dry.
Season the chicken with salt, pepper, and herbes de Provence. Heat a large skillet over medium-high. Add 1 tbsp. oil, one turn of the pan. Add 2 pieces of chicken. Cook, turning occasionally, until browned and cooked through, 6 to 7 minutes. Transfer to a baking sheet. Repeat with the remaining 1 tbsp. oil and chicken.
In a saucepan, melt 3 tbsp. butter over medium heat. Whisk in the flour. Cook, whisking often, until the flour is absorbed, about 1 minute. Whisk in the milk. Cook, whisking often, until the sauce thickens, about 3 minutes. Season the béchamel sauce with salt, nutmeg, and white pepper. Reduce heat to low.
Switch on the broiler.
Spread each piece of chicken with a layer of Dijon. Top with the ham, asparagus, béchamel sauce, and Gruyère.
Broil until browned and bubbly, 2 to 5 minutes.
Meanwhile, in a large nonstick skillet, melt the remaining pat or 2 of butter over medium. Crack in the eggs; season. Cook until the whites are just set, about 3 minutes.
Top each piece of chicken with an egg.