Twenty is a free, open source crm & sales project written in TypeScript and released under a custom open-source licence. It has 56,947 GitHub stars, 9,143 forks and 205 open issues, and was last pushed 5 hours ago. On this registry it ranks #1 of 11 tracked projects in CRM & Sales, with 5 head-to-head comparisons available. It gained 299 stars over the last 6 tracked days.

Twenty — Build a custom CRM without the proprietary lock-in

What is Twenty?

What it is

Twenty is an open-source CRM platform built for technical teams that need to design and deploy custom customer relationship management systems without vendor lock-in. It provides a framework for defining data models, views, workflows, and AI-powered agents entirely as code, enabling full version control and integration into existing development pipelines. The project lives in the JavaScript/TypeScript ecosystem and uses modern tooling including NestJS, React, PostgreSQL, and Redis.

It solves the problem of rigid, proprietary CRMs like Salesforce by letting teams build tailored systems that evolve with their business logic—without paying for unused features or being constrained by limited customization options. Instead of configuring through a GUI alone, developers define CRM structure and behavior programmatically, supporting complex, domain-specific requirements.

Key capabilities

  • Define custom CRM objects (e.g., deals, contacts, tasks) and fields via TypeScript SDK with typed schemas
  • Create and manage dynamic views (lists, kanban, calendar) for data presentation and filtering
  • Build and deploy AI agents that automate tasks using natural language or structured triggers
  • Version CRM configurations and apps using Git workflows and publish to workspaces via CLI
  • Extend functionality with custom logic functions, workflows, and integrations
  • Support multi-tenancy and role-based access control out of the box
  • Use GraphQL APIs for querying and mutating CRM data

Who uses it and how

  • Engineering teams at startups and scale-ups build internal sales or support CRMs aligned with their product stack
  • Agencies develop client-specific CRM applications using the Twenty CLI and deploy to hosted or self-hosted instances
  • Open-source contributors and developers contribute to the core platform or extend it with custom objects and logic

Getting started

Deploy via the hosted option at twenty.com, or scaffold a local app with npx create-twenty-app my-app. Self-host using Docker Compose or contribute locally using the documented setup guide.

When to use it — and when not to

Use Twenty when you need full control over CRM structure, version-controlled configurations, and tight integration with your tech stack. Avoid it if you require out-of-the-box industry templates, minimal technical involvement, or managed support SLAs—self-hosting requires managing PostgreSQL, Redis, and optionally SMTP for email. It trades convenience for flexibility, offering no native migration tools from legacy CRMs.

project readme (upstream, from github) — read inline

The #1 Open-Source CRM

Website · Documentation · Roadmap · Discord · Figma


Why Twenty

Twenty gives technical teams the building blocks for a custom CRM that meets complex business needs and quickly adapts as the business evolves. Twenty is the CRM you build, ship, and version like the rest of your stack.

Learn more about why we built Twenty


Installation

Cloud

The fastest way to get started. Sign up at twenty.com and spin up a workspace in under a minute, with no infrastructure to manage and always up to date.

Build an app

Scaffold a new app with the Twenty CLI:

npx create-twenty-app my-app

Define objects, fields, and views as code:

import { 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 },
  ],
});

Then ship it to your workspace:

npx twenty app:publish --private

See the app development guide for objects, views, agents, and logic functions.

Self-hosting

Run Twenty on your own infrastructure with Docker Compose, or contribute locally via the local setup guide.



Everything you need

Twenty gives you the building blocks of a modern CRM (objects, views, workflows, and agents) and lets you extend them as code. Here's a tour of what's in the box.

Want to go deeper? Read the User Guide for product walkthroughs, or the Documentation for developer reference.

Learn more about apps in doc

Learn more about version control in doc

Learn more about primitives in doc

Learn more about layouts in doc

Learn more about AI in doc

Learn more about CRM features in doc


Stack

readme truncated — read the full docs on github

Frequently asked questions

Is Twenty free to use?

Twenty is open source. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Twenty do?

Build a custom CRM without the proprietary lock-in

What is Twenty written in?

Twenty is primarily written in TypeScript. Its source is publicly available at https://github.com/twentyhq/twenty, and it has 56,947 GitHub stars.