Soak the beans: Rinse the beans. Place beans in a pot and fill with enough water to cover the beans by an inch. Bring to a boil, cover, turn off the heat, and allow beans to soak for one hour.
Drain and rinse beans.
Cook the beans: Place the beans back in the pot and fill with enough water to cover the beans by one inch. Bring to a boil. Skim surface. Add 1/4 of an onion to the water. Reduce heat and simmer until tender, about 2 hours. Add 1 teaspoon of salt to the beans.
Dice 1/4 of an onion.
Heat a large skillet over medium-low heat. Add 1 tablespoon avocado oil and heat. Add the diced onions, 1/2 teaspoon of salt, and 1/4 teaspoon of pepper. Cook until onions are soft.
Separate beans and cooking liquid, saving the liquid.
Turn the heat to high and add 1 tablespoon of oil to the pan. Add the drained beans to the onions. Cook about two minutes without stirring, the beans should start to break open.
Add 1 tablespoon of butter to the pan and stir. Cook another two minutes.
Add 1/2 cup of the cooking liquid and let the mixture simmer until most of the liquid has cooked away.
Stir in garlic salt and chile powders. Add another 1/2 cup of cooking liquid and pour the mixture into a blender. Add cheese and juice of 1/4 lime. Blend until smooth. Add more liquid if you’d like a thinner dip.
Taste and add salt if needed.
Top with crumbled cotija cheese.