In a deep skillet, over a medium-low heat, gently caramelise the onions in the oil, stirring occasionally. This should take around 25 minutes.
Add the garlic to the pan, mash it a little to break it up, and cook for another minute or so.
Mix in the coconut aminos - the liquid will quickly sizzle and evaporate, don't worry, this is supposed to happen!
Stir in the stock.
Make a paste with the tapioca flour and 3 tbsp water, and then add to the pan, stirring well to ensure no lumps form. The broth will start to thicken.
Add the mushrooms, paprika, and sugar. Stir. Raise the heat, and bring to the boil.
Once the soup is boiling, turn the heat down to medium-low, and cook, uncovered, for 20 minutes or so, until it's reduced by around a third.
Serve with a chunk of good, fresh bread, and a grinding of black pepper.
If you don't need to worry about gluten and soy, then by all means use soy sauce instead of liquid aminos, and plain (all-purpose) flour instead of tapioca flour.
If using plain flour, omit the 3 tbsp water, and just stir the flour into the onions and garlic before adding the stock. Add the stock little by little, stirring all the time to ensure there are no flour lumps. Then follow the rest of the recipe as written.
If you don't have tapioca, you could use cornflour (cornstarch), rice flour, potato flour, or arrowroot instead, in the same quantity.