
Senegal River Toucouleur fish curry — Nile perch or capitaine simmered in a peanut-and-tomato sauce with cassava and sweet potato, the Saint-Louis-and-river-valley signature.
Niri (also spelled 'nyiri') is the Toucouleur and Halpulaar people's signature freshwater-fish dish, made along the Senegal River from Saint-Louis to Bakel. It draws on the Toucouleur's pastoral, riverside life — the Nile perch ('capitaine' in French) caught in the river, peanuts grown in the Senegal Valley, and the cassava and sweet potato that grow in the alluvial soil. Unlike Wolof dishes that center on rice, niri is served with millet couscous ('thiéré') — the traditional Sahel grain. The dish is the family Friday meal in Toucouleur households.
Spoon niri onto the millet couscous: the peanut sauce is rich-orange, fragrant from cumin and tomato. Fish chunks are tender, having absorbed the peanut depth; cassava and sweet potato sit chunky in the sauce, contributing starch-sweetness. The peanut sauce coats every grain of couscous. Toucouleur Friday-meal warmth in a single bowl.
Peanut paste (vs whole peanuts) provides immediate emulsification with the tomato-water base — the fat in the paste binds with the sauce's water for a creamy body without separation. Cassava is high in starch (~30% by weight) that helps thicken the sauce as it cooks down. The pre-sear on the fish creates the Maillard exterior that holds the fish together during the final simmer — without it, the fish disintegrates.
Variations
Saint-Louis classic version uses Nile perch (capitaine); upstream Bakel-area version uses Senegal-River catfish; coastal Toucouleur restaurants in Dakar substitute snapper for capitaine; modern Casamance-Toucouleur fusion adds palm oil for color.
On the Palate
Where Niri sits in the Senegalese flavor cloud
Sear the fish to a light Maillard crust before it goes back in — that firm browned exterior is the only thing holding the chunks together through the final simmer, or they'll fall apart.
Ingredients
Serves 6How it's made
5 steps · 30 min active + 45 min waiting
- 122 min
Season 800g Nile perch (or substitute with sea bass or snapper) fillets, cut into 5cm chunks. Rub with 1 tsp salt, 1 tsp pepper, juice of 1 lime, 4 minced garlic cloves, 1 tsp ground cumin. Rest 20 min.
- 27 min
Sear fish briefly: heat 3 tbsp peanut oil in a heavy pot; sear fish 3 min per side just to firm and lightly brown. Remove.
Watch outSear just to firm and lightly color — don't cook it through, it finishes in the sauce.
- 310 min
In same pot, sauté 1 chopped onion + 4 garlic cloves + 1 thumb grated ginger + 1 scotch bonnet (chopped) for 6 min. Add 3 tbsp tomato paste + 2 chopped tomatoes + 1 tbsp ground bouillon + 1 tsp salt; cook 4 min until oil reddens.
Watch outCook the tomato base until the oil reddens and rises — that's the sofrito ready.
- 45 min
Whisk 100g smooth peanut butter (or freshly-ground roasted peanut paste) with 300ml water until smooth. Pour into the pot. Add 500ml more water; stir.
- 533 min
Add 400g chunked cassava + 2 sweet potatoes (chunked); simmer covered 25 min until tender. Return fish; gently simmer 8 min until fish flakes. Adjust salt; top with chopped parsley. Serve over millet couscous (thiéré) or short-grain rice.
Watch outCassava is done when a fork slides in easily; only then return the fish for its short final simmer.
Archive tool suggestions — not reviewed
These legacy suggestions have not been evidence-reviewed and are not presented as required tools.






