Maintained from Twenty twenty/v2.30.0.
Itering modification, 2026-09-15: the workspace creation limit defaults to 999 per shared database and can be set with the environment-only MAX_WORKSPACES_WITHOUT_ENTERPRISE_KEY variable. Use a positive integer and restart all server and worker processes after changing it. Invalid values fail configuration validation. Enterprise license verification and other feature gates remain unchanged. This limit is not a tested capacity guarantee.
The original LICENSE remains in effect, including its commercial-file exceptions. The source for each published image is the commit recorded in its org.opencontainers.image.revision label, available from this public repository. Deployments must offer their remote users access to the corresponding source. Customer data and deployment secrets are not part of this repository.
- Registry:
ghcr.io/itering/twenty. main: latest passing build on this repository'smainbranch.sha-<full commit>: source-pinned multi-platform image.v*-itering.*tags: versioned releases.- Server and worker use the same image; worker command:
yarn worker:prod. - CI builds native
linux/amd64andlinux/arm64images from the full source using the upstream Dockerfile, runs the existing authentication tests and checks the compiled environment configuration and workspace boundaries on each platform, and publishes the combined manifest only after both checks pass. - Pull requests build and check images without publishing. Upstream cloud deployment, preview, translation-sync, and notification workflows are not run here.
Build locally:
docker build --target twenty --build-arg APP_VERSION=2.30.0 -f packages/twenty-docker/twenty/Dockerfile -t itering-twenty:local .For upgrades, review upstream changes and licenses, update the baseline, and run database upgrade validation before deployment. Database migration and cron registration remain deployment responsibilities; CI does not access any running CRM database.
Website ·
Documentation ·
Roadmap ·
Discord ·
Figma
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
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.
Scaffold a new app with the Twenty CLI:
npx create-twenty-app my-appDefine 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 --privateSee the app development guide for objects, views, agents, and logic functions.
Run Twenty on your own infrastructure with Docker Compose, or contribute locally via the local setup guide.
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.
|
|
|
|
|
|
TypeScript
Nx
NestJS, with BullMQ,
PostgreSQL,
Redis
React, with Jotai, Linaria and Lingui
Thanks to these amazing services that we use and recommend for code review (Greptile), catching bugs (Sentry) and translating (Crowdin).
Star the repo ·
Discord ·
Feature requests ·
Releases ·
X ·
LinkedIn ·
Crowdin ·
Contribute