
56.4k stars · AGPL-3.0 + commercial licence over enterprise files marked /* @license Enterprise */ · sdk/v2.38.1 (2026-09-06) · Track this in Rising ↗
The place where a lead becomes a person you owe an answer to, not another line in a spreadsheet.
Radar check
What we found when we opened it. Every bar is one fact, with its date.
Last code pushed 27 Oct 2026, the same day before this check.
Latest release twenty/v2.51.0 on 25 Oct 2026.
Public since December 2022, a little over 3 years.
59,909 stars and 9,791 forks.
3,455 commits and 420 new issues in the last 90 days.
787 contributors. 3530 pull requests merged in 90 days.
A security policy says how to report a problem. 14 published security advisories.
How the bars are scored
- Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
- Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
- Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
- Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
- Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
- Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
- Security. A published security policy 80, none 40; published advisories are listed, not scored.
Checked by Repo Radar on 27 Oct 2026 from the repository on GitHub. Covered in Edition 9.
▶Repo detailsthe review · specs · pros & cons · install
What it does
Twenty stores people, companies and deals as records, and lets you link one record to another. Each record holds notes, tasks, attachments and a timeline of what happened. You can add your own fields and your own kinds of record without writing code. A view can be a table or a board of columns, and every view can be filtered and saved. There is a full programmable interface (an API — a way for other programs to read and write the same data), in both GraphQL and REST form. Running it needs PostgreSQL, a database server, and Redis, a fast temporary store, alongside the application. It does not send bulk marketing email, it does not do bookkeeping, and it is not a support desk — there is no shared inbox for incoming tickets.
Why it matters
Who it suits. Small teams who keep losing track of replies they promised. Five leads a month in a spreadsheet is five names nobody can place by Friday; a record with a next action attached is not. It also suits anyone who needs contact data to stay on hardware they control, whether for law or for customer trust. Skip it if a shared spreadsheet is genuinely working, or if the real need is sending email to a list rather than following up one person at a time.
Verdict. Worth about half a day to install and a week of discipline to make it stick. A tracker nobody opens is worse than none, so the real cost is the habit rather than the hardware. Read the licence note near the top of this edition before putting it in front of customers. EspoCRM is the lighter and older choice when a modern interface is not the point.
Summary (Key Points)from the README
Key features
- Objects, views and workflows: The building blocks of a modern CRM, which you can extend as code.
- Apps as code: Define objects, fields and views in code, then ship them to your workspace with the Twenty CLI.
- Agents and logic functions: The app development guide covers objects, views, agents and logic functions.
- Version control: The README links to a dedicated doc on version control for CRM configuration.
- AI: The README links to a doc on AI features in Twenty.
- Layouts and primitives: Separate docs cover layouts and the underlying primitives.
- Coding agent skills: Official Twenty app skills work with Claude Code, Codex, Cursor, Pi and other harnesses supported by the skills CLI.
- Stack: Built with TypeScript, Nx, NestJS (with BullMQ, PostgreSQL and Redis) and React (with Jotai, Linaria and Lingui).
Ways to install
| Platform or method | What it needs | Effort |
|---|---|---|
| Cloud (twenty.com) | A sign-up at twenty.com | Lowest: a workspace in under a minute, with no infrastructure to manage |
| Self-hosting with Docker Compose | Docker Compose and your own infrastructure | Higher: you run and maintain the infrastructure yourself |
| Local setup guide | Local development environment, as described in the guide | Not stated in the README; intended for contributors |
| Twenty CLI app build | The Twenty CLI and a workspace to ship to | Not stated in the README |
Important
- Agent skills branch: The agent-skills branch only exists after the first successful publish from main. Until then, use the local build instructions.
- Self-hosting responsibility: Running Twenty on your own infrastructure means you manage that infrastructure yourself. The README gives no hardware or sizing requirements.
- Contributing: Local development is covered by a separate setup guide, not the quick Docker Compose path.
- Cloud updates: The hosted Cloud option is described as always up to date, so you cannot pin a version there. The README does not say how upgrades work for self-hosted installs.
Written by an AI model from the project’s README; not part of the review, and it can be wrong.
- Custom fields and custom record types without writing any code
- A full programmable interface, so other tools can feed it automatically
- Released most weeks; v2.46.0 landed on 12 October 2026
- Needs PostgreSQL and Redis as well as the application — three moving parts, not one
- Files marked
/* @license Enterprise */need a paid subscription in production - Not something a non-programmer installs alone; the supported route is Docker, a way to run a program inside its own sealed box
A paid CRM subscription — Hubspot, Pipedrive, Attio
Chatwoot for the conversations, n8n to feed contacts in, Listmonk to push engagement back as tags
mkdir -p ~/twenty && cd ~/twenty curl -o docker-compose.yml \ https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml docker compose up -d




