Toast the ancho and guajillo chiles in a dry cast iron skillet on medium heat for a few minutes on each side and then turn off the heat and fill the skillet with water. Let the chiles soak for 20 minutes or until soft.
Cut the lamb into 3-inch cubes and rub the meat with salt.
Drain the chiles from the soaking water, rinse, then place in a blender. Add to the blender the garlic, the coffee, the water, the cinnamon, the oregano, the cumin, and the agave nectar. Puree until smooth.
Coat the lamb with the chile puree, and let it marinate covered in the refrigerator for 4 hours.
Heat the oven to 250° F.
In a roasting pan, coat the bottom with some of the marinade. Place the onions and carrots on top of the marinade and then top this with the lamb.
Tightly cover the pan with foil, and then cook in the oven covered for 4 hours or until fork tender.
Shred meat with forks and serve in tortillas with cilantro, onions and salsa.