Twenty : le CRM open source qui veut remplacer Salesforce
Ce que Twenty fait bien, ce qui reste payant en cloud comme en auto-hébergé, et comment l'installer sur son serveur avec Docker Compose.

Un CRM, c'est le logiciel où une entreprise range ses contacts, ses sociétés clientes et ses opportunités commerciales. Pendant vingt ans, le choix s'est résumé à Salesforce pour les grands comptes, HubSpot pour les autres, et un tableur pour ceux qui refusaient de payer. Dans les trois cas, vos données clients vivent chez quelqu'un d'autre, ou dans un fichier que personne ne met à jour.
Twenty est un CRM open source qui propose une quatrième voie. On peut l'utiliser en cloud, ou l'installer sur son propre serveur gratuitement. Le projet se présente comme « l'alternative ouverte à Salesforce, conçue pour l'IA ». Lancé fin 2022 par une startup franco-américaine, il dépasse les 58 000 étoiles sur GitHub, compte plus de 460 contributeurs et sort une nouvelle version presque chaque semaine. La v2.46.0 est sortie le 12 octobre 2026.
Ce que fait Twenty
Côté utilisateur, on retrouve les briques d'un CRM classique : personnes, entreprises, opportunités, tâches et notes. L'interface rappelle Notion plus que Salesforce. Tout se filtre, se trie, s'affiche en tableau, en kanban ou en calendrier. Un menu de commandes s'ouvre avec ⌘K, le mode sombre existe, et l'application est traduite dans plus de 30 langues, dont le français.
La vraie différence est ailleurs : le modèle de données est entièrement personnalisable, sans limite. Vous vendez des formations ? Créez un objet « Session » relié à « Entreprise » et à « Formateur », avec ses champs et ses vues. Pas de licence supplémentaire, pas de consultant certifié.
| Fonction | Ce qu'on trouve |
|---|---|
| Modèle de données | Objets, champs et relations personnalisés, illimités |
| Vues | Tableau, kanban, calendrier, tableaux de bord |
| Synchronisation | E-mails et agendas Gmail et Microsoft |
| Automatisation | Workflows avec déclencheurs, actions, code et requêtes HTTP |
| IA | Chat intégré, agents, serveur MCP |
| Intégration | API REST et GraphQL, webhooks |
| Données | Import et export CSV |
| Sécurité | Rôles, double authentification |
Le serveur MCP mérite une mention. Chaque espace cloud en expose un : on y connecte Claude, ChatGPT ou Cursor via OAuth, et l'assistant lit ou modifie le CRM en langage naturel. « Crée une opportunité pour Acme à 12 000 € et rappelle-moi jeudi » devient une vraie action. Si le protocole ne vous parle pas, le fonctionnement du Model Context Protocol explique comment un agent appelle ce genre d'outil.
Un CRM qu'on développe comme une app
C'est le parti pris le plus fort du projet. Twenty veut être « le CRM que vous construisez, livrez et versionnez comme le reste de votre stack ». Au lieu de cliquer dans des écrans de configuration, on peut décrire ses objets en TypeScript :
npx create-twenty-app my-appimport { defineObject, FieldType } from 'twenty-sdk/define'
export default defineObject({
nameSingular: 'deal',
namePlural: 'deals',
labelSingular: 'Deal',
labelPlural: 'Deals',
fields: [
{ name: 'name', label: 'Name', type: FieldType.TEXT },
{ name: 'amount', label: 'Amount', type: FieldType.CURRENCY },
{ name: 'closeDate', label: 'Close Date', type: FieldType.DATE_TIME },
],
})npx twenty app:publish --privateUne app peut aussi embarquer des fonctions exécutées côté serveur, des composants React, des vues et des agents IA. Le tout vit dans un dépôt Git, passe en revue de code et se déploie comme n'importe quel projet. Pour un CTO qui a déjà vu un Salesforce configuré à la main pendant cinq ans par trois prestataires successifs, l'argument porte.
Je trouve ce choix juste. Le problème des CRM n'est pas de stocker des contacts, c'est d'épouser un métier qui change. Le faire en code versionné plutôt qu'en configuration opaque change la maintenance du tout au tout.
La stack technique
Twenty est un monorepo TypeScript. Rien d'exotique, et c'est une bonne nouvelle pour qui veut contribuer ou débugger.
| Couche | Technologie |
|---|---|
| Backend | NestJS 11, GraphQL Yoga |
| Accès aux données | TypeORM (version patchée) |
| Base de données | PostgreSQL 16 |
| Files de tâches | Redis et BullMQ, dans un conteneur worker séparé |
| Frontend | React 19, Jotai, Apollo Client, Linaria |
| IA | AI SDK, avec Anthropic, OpenAI, Google, Mistral, xAI et Azure |
Le choix de TypeORM est intéressant : chaque objet personnalisé que vous créez devient une vraie table PostgreSQL, pas une ligne dans une grande table générique. Si vous voulez comprendre la couche qui fait ce travail, TypeORM avec PostgreSQL en détaille les entités et les migrations.
Gratuit, mais pas tout
La page d'accueil parle de « self-host the open source core for free ». C'est exact, et le mot « core » compte. Voici les offres relevées en octobre 2026 :
| Offre | Hébergement | Prix | Ce qui s'ajoute |
|---|---|---|---|
| Free | Auto-hébergé | Gratuit | Toutes les fonctions Pro, support communautaire sur Discord |
| Pro | Cloud | 9 $ par utilisateur et par mois, facturé à l'année | Hébergement, mises à jour, support standard |
| Organization | Cloud | 19 $ par utilisateur et par mois | SSO, permissions par ligne, domaine personnalisé, journaux d'audit, support prioritaire |
| Organization | Auto-hébergé | Sur devis | Les mêmes fonctions premium, support de l'équipe Twenty |
| Enterprise | Cloud | À partir de 50 000 $ par an | Instance isolée, SCIM, liste blanche d'IP, SLA |
Les fonctions premium ne sont pas dans la version gratuite auto-hébergée : SSO (SAML ou OIDC), permissions au niveau de la ligne, données d'usage de l'IA et journaux d'audit. Pour les débloquer sur son serveur, il faut une clé Organization, et un abonnement cloud ne fonctionne pas pour ça.
Le SSO est le point qui fâche. Une PME qui centralise déjà ses comptes avec Authentik en SSO auto-hébergé ne pourra pas y brancher Twenty sans payer. C'est un modèle courant dans l'open source commercial, mais il faut le savoir avant de choisir.
Deux autres limites concernent le cloud. L'API publique est plafonnée à 50 appels par minute en Pro et 100 en Organization, ce qui se sent vite pendant une migration ou une synchronisation. Et les workflows consomment des crédits : 5 par mois en facturation mensuelle, 50 par an en annuelle. Les actions internes en consomment peu, mais les nœuds de code, les requêtes externes et les appels à l'IA en consomment davantage. Au-delà, on rachète des crédits.
Un essai de 30 jours sans carte bancaire permet de tester le cloud.
La licence : AGPLv3, avec deux exceptions
Le dépôt est sous AGPLv3, avec deux nuances qu'il faut lire.
| Partie du code | Licence | Conséquence |
|---|---|---|
| Cœur du CRM | AGPLv3 | Libre, mais toute version modifiée mise à disposition en réseau doit publier ses sources |
Fichiers marqués @license Enterprise | Commerciale | Usage en production réservé aux abonnés, modification autorisée en développement |
SDK, CLI, create-twenty-app, composants UI | MIT | Réutilisables partout, y compris en propriétaire |
Une exception ajoutée à l'AGPL règle la question qui inquiète les intégrateurs. Une application qui passe uniquement par les API, les webhooks et le SDK de Twenty n'est pas soumise à l'AGPL. Vous pouvez donc vendre une app propriétaire construite sur Twenty, tant que vous ne modifiez pas le code de Twenty lui-même. Si vous le modifiez, l'AGPL s'applique, sauf licence Organization qui lève cette obligation.
Installer Twenty sur son serveur
Il faut une machine avec Docker, Docker Compose et au moins 2 Go de RAM. L'installation la plus rapide passe par un script officiel. Lisez-le avant de l'exécuter, comme tout script téléchargé :
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)Je préfère la méthode manuelle, qui montre ce qui tourne :
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.ymlAvant de démarrer, trois variables du .env sont obligatoires :
# Clé de chiffrement des secrets (jetons OAuth, 2FA). La perdre = perdre ces secrets.
openssl rand -base64 32
# Mot de passe PostgreSQL, sans @ / # % qui casseraient l'URL de connexion
openssl rand -hex 32ENCRYPTION_KEY=<résultat de la première commande>
PG_DATABASE_PASSWORD=<résultat de la seconde>
SERVER_URL=https://crm.mondomaine.frdocker compose up -dLe fichier lance quatre conteneurs : le serveur sur le port 3000, un worker pour les tâches de fond, PostgreSQL 16 et Redis. C'est une configuration classique, que le guide Docker Compose détaille pour les volumes, les healthchecks et les mises à jour. Placez un reverse proxy en HTTPS devant le port 3000, et sauvegardez la base dès le premier jour : un CRM qui perd ses données ne se rattrape pas.
Pour épingler une version plutôt que suivre latest, la variable TAG du fichier Compose accepte une version précise, comme v2.46.0.
Pour qui, et face à quoi
Twenty ne convient pas à tout le monde. Voici comment je le situe face aux options habituelles :
| Besoin | Mon choix |
|---|---|
| Indépendant, quelques dizaines de contacts | Un tableur ou l'offre gratuite de HubSpot suffisent |
| PME sans développeur, besoin d'un CRM prêt à l'emploi | HubSpot ou Pipedrive, plus riches en intégrations toutes faites |
| Équipe technique, métier spécifique, données sensibles | Twenty, auto-hébergé ou en cloud |
| Grand compte avec écosystème Salesforce existant | Twenty seulement si la migration est un projet assumé |
Ce qui manque encore face à Salesforce et HubSpot, c'est l'écosystème. Pas de place de marché de centaines d'intégrations, pas de module marketing complet (les campagnes e-mail sont annoncées « bientôt »), pas de reporting avancé à la hauteur des leaders. Le framework d'apps vise à combler ce manque, mais il faut quelqu'un pour écrire ces apps.
Le site affiche les logos de la République française, de Bayer et de PwC, et revendique plus de 10 000 autres utilisateurs. Un client témoigne d'une baisse de plus de 90 % de ses coûts de CRM après le passage en auto-hébergé. Ce sont des chiffres fournis par l'éditeur, mais ils montrent que le projet a dépassé le stade du side project.
Twenty ne gagnera pas contre Salesforce sur le nombre de fonctions, et ce n'est pas son pari. Son pari, c'est qu'un CRM se construit comme une application : du TypeScript, une base PostgreSQL, du code versionné, et des données qui restent chez vous si vous le décidez. Pour une équipe qui a un développeur et un métier qui ne rentre dans aucune case, c'est aujourd'hui l'option la plus sérieuse. Pour les autres, la version cloud à 9 $ vaut un essai de 30 jours, ne serait-ce que pour voir à quoi ressemble un CRM qu'on n'a pas envie de fuir.