Slice the bagels in half horizontally. Place a large skillet over medium heat and melt 2 teaspoons of the butter. Place the bagel halves, cut sides down in the pan, and cook until the bottoms turn golden, 1 to 2 minutes. Remove and set aside.
Crack the eggs in a small bowl and lightly beat them with the salt and pepper. Melt the remaining 2 teaspoons butter in the pan. Pour in the eggs and as the bottom sets, use a spatula to lift up the edges of the eggs and let the uncooked eggs run underneath. When the bottom is almost cooked, but the top is still slightly wiggly, lay the cheese slices over the middle of the eggs. Let the eggs cook for another minute, then fold the sides of the eggs over the middle so that they take on a rectangular omelet shape. Slide the omelet out of the pan onto a cutting board. Cut the omelet in half so that you have a square for each sandwich.
Place the cooked eggs on the bottom of the bagels. Place the tomatoes on top of the eggs, then layer on the avocado, bacon, onion, and lettuce (if using), and give it all a generous squirt of Sriracha or other hot sauce. Cover with the tops of the bagels.
Serve the sandwich warm, and find someone you love to share the other one with.
Notes
The beauty of this is making a spread so everyone can customize their sandwich, from the type of bagel to the toppings.