For the chili: Heat the oil in a large Dutch oven over medium-high heat.
Add the ground beef and 1 1/2 teaspoons salt and cook, stirring and breaking up any clumps with a wooden spoon, until brown, about 10 minutes. Transfer to a bowl with a slotted spoon.
Reduce the heat slightly, add the onions to the pot, and cook, stirring occasionally, until softened, about 5 minutes. Add the chili powder and chipotle powder and cook for 30 seconds, stirring. Add the tomato paste; cook, stirring, about 30 seconds more.
Return the browned meat to the pot and add the tomatoes, coffee and 2 cups water. Bring to a simmer, then reduce the heat to low and cook at a low simmer, partially covered, for 1 hour. Skim off excess fat that rises to the surface during cooking.
After the hour, add the kidney beans and pinto beans. Continue cooking, partially covered, until the flavors have blended, another 30 minutes.
For the toppings bar: Serve the chili in mugs. Line up all of the toppings in small bowls and dishes for guests to add as they like.