Faits: A. A._ et B._ ont fondé X._ Sàrl, société inscrite au registre du commerce du canton de Vaud le 20 septembre 2007. Chacun est titulaire de cent parts sociales de 100 fr. Ils sont tous deux associés gérants, B._ étant également président; chaque associé dispose de la signature collective à deux. Par lettre du 25 septembre 2009, B._ a informé A._ qu'il mettait fin à son activité dans le cadre de X._ Sàrl pour le 31 décembre 2009; il invoquait des raisons de santé. Le 27 octobre 2009, B._ a avisé A._ qu'il quittait définitivement les locaux de la société deux jours plus tard et que «pour ce qui concern[ait] la cessation des activités de X._ Sàrl, [il] rest[ait] (...) dans l'attente de prendre connaissance de la comptabilité 2008, dans son intégralité». Selon A._, B._ a paralysé les activités de la société à partir de ce moment-là, notamment en refusant sa signature. A._ reproche également à B._ d'avoir violé son devoir de non-concurrence dès la fondation de X._ Sàrl. Par courrier du 26 août 2010, l'organe de révision de X._ Sàrl a mis fin à son mandat à partir de l'exercice 2009, faute de pouvoir contrôler les comptes. Le 7 septembre 2010, le registre du commerce a informé X._ Sàrl que le réviseur avait requis sa radiation et lui a imparti un délai de trente jours pour régulariser la situation. B. Le 19 octobre 2010, A._ a déposé une requête de mesures provisionnelles et préprovisionnelles auprès du Président du Tribunal civil d'arrondissement de Lausanne et de l'Ouest lausannois. La requête, dirigée contre X._ Sàrl, comportait les conclusions suivantes: «I. M. B._ n'est plus gérant de la société X._ Sàrl; son pouvoir de signature collective à deux est radié. II. M. A._ est associé-gérant de la société X._ Sàrl avec pouvoir de signature individuelle. III. Le prononcé est immédiatement exécutoire. Ordre est donné au Registre du commerce du Canton de Vaud d'inscrire et de publier ces modifications.» A l'appui de sa requête, A._ faisait valoir que B._ avait gravement violé ses devoirs de non-concurrence, de fidélité et de diligence envers la société en continuant parallèlement l'activité de son entreprise individuelle; il soutenait également que son coassocié était devenu incapable de gérer la société, qu'il avait complètement abandonnée depuis l'automne 2009. Le 19 octobre 2010, A._ a également ouvert, devant le Tribunal civil d'arrondissement de Lausanne et de l'Ouest lausannois, une action en responsabilité contre B._, tendant à ce que celui-ci soit condamné à payer à X._ Sàrl un montant de 31'131 fr.30 plus intérêts. A l'image de ce qu'il faisait valoir dans sa requête de mesures provisionnelles, A._ invoquait, dans sa demande, la grave violation par B._ de ses devoirs de non-concurrence, de fidélité et de diligence, consistant à avoir continué l'activité de son entreprise individuelle parallèlement à celle de la société, ainsi qu'à bloquer l'activité de la société par le refus d'avaliser toute décision. Par décision du 26 octobre 2010, le président saisi a rejeté la requête de mesures d'extrême urgence. Une audience de mesures provisionnelles a eu lieu le 15 novembre 2010. A cette occasion, A._ et B._ ont signé une convention de mesures provisionnelles, par laquelle les deux associés prévoyaient notamment la tenue d'une assemblée générale au plus tard d'ici au 15 décembre 2010, dans le but de dissoudre la société, ainsi que la suspension de l'audience, qui pourrait être reprise sur requête de la partie la plus diligente en cas d'échec de l'accord. A._ a renoncé à participer à l'assemblée générale, prévue le 14 janvier 2011. Il a ensuite requis la reprise de l'audience de mesures provisonnelles, qui s'est tenue le 14 février 2011; il a été constaté alors que X._ Sàrl avait perdu l'accréditation de la Finma, autorité fédérale de surveillance. Par ordonnance du 16 mars 2011 dont les considérants ont été communiqués le 26 septembre 2011, le Président du Tribunal civil de l'arrondissement de Lausanne a rejeté la requête de mesures provisionnelles; il a alloué à la société intimée des dépens, à payer par le requérant. A._ a interjeté appel. Par arrêt du 20 décembre 2011, le Juge délégué de la Cour d'appel civile du Tribunal cantonal du canton de Vaud a confirmé l'ordonnance attaquée, sauf sur les dépens qui ont été supprimés. C. A._ interjette un recours qu'il intitule «recours en matière civile, subsidiairement recours constitutionnel subsidiaire». Il demande l'annulation de l'arrêt cantonal et reprend les conclusions de sa requête de mesures provisionnelles; à titre subsidiaire, il conclut au renvoi de la cause à l'autorité inférieure pour nouvelle décision dans le sens des considérants. Le recourant requiert par ailleurs d'être mis au bénéfice de l'assistance judiciaire, comprenant la dispense des frais judiciaires et la désignation d'un mandataire d'office (art. 64 al. 1 et 2 LTF). X._ Sàrl n'a pas été invitée à déposer une réponse.