Twenty is a flexible, open-source CRM that allows you to customize views using filters, sorting, groups, Kanban boards, and tables. You can define your own custom objects and fields, manage permissions through tailored roles, and automate workflows with specific triggers and actions. The platform also natively handles email, calendar events, files, and more.
The technical stack is built on TypeScript, Nx, and NestJS with BullMQ, utilizing PostgreSQL and Redis for storage and messaging. The front end is powered by React, Recoil, Emotion, and Lingui.
To maintain high standards, Twenty integrates several third-party services into its development lifecycle: Chromatic for UI testing, Greptile for code reviews, Sentry for error tracking, and Crowdin for localized translations.
If you are a developer looking to run Twenty on your local machine, follow the steps below.
For development on Linux, macOS, or Windows (WSL), you will need Git, Node v22, Yarn v4, and nvm.
Note: Use Yarn instead of npm. Node.js typically includes Yarn; if it is not active on your system, run corepack enable to set it up.
Clone the project using your terminal. SSH is the recommended method:
git clone [email protected]:twentyhq/twenty.git
If you have not configured SSH keys, use the HTTPS URL instead.
cd twenty
All subsequent commands should be executed from within this directory.
There are two primary ways to set up the database on Linux, macOS, or Windows (WSL):
Option 1 (Recommended): Install PostgreSQL directly on your operating system. Refer to the official PostgreSQL documentation for your specific OS. Once installed, initialize the databases:
psql postgres -c "CREATE DATABASE "default";" -c "CREATE DATABASE test;"
If you encounter permission issues, prefix the command with sudo -u postgres.
Option 2: If you prefer using Docker, run:
make postgres-on-docker
The database will be accessible at localhost:5432 with the username postgres and password postgres.
Twenty requires Redis to handle performance-critical tasks. You have two options:
Option 1: Install and run Redis locally on your host machine.
Option 2: Use Docker by running:
make redis-on-docker
To inspect your data, you can use a GUI like Redis Insight (which offers a free tier).
Duplicate the example .env files for both the front-end and server packages:
cp ./packages/twenty-front/.env.example ./packages/twenty-front/.env
cp ./packages/twenty-server/.env.example ./packages/twenty-server/.env
Execute the following command to install required packages, build the server, and seed the database:
yarn
Avoid using npm or pnpm for this process.
Ensure Redis is running before proceeding. On some systems, it starts automatically; otherwise, check your distribution's service manager.
First, reset the database to a clean state:
npx nx database:reset twenty-server
Then, start the server, worker, and front end in separate terminal sessions:
npx nx start twenty-server
npx nx worker twenty-server
npx nx start twenty-front
Alternatively, you can launch all components simultaneously with:
npx nx start
http://localhost:3001. Use the demo credentials: [email protected] / [email protected].http://localhost:3000. You can access the GraphQL playground at http://localhost:3000/graphql and REST endpoints at http://localhost:3000/rest.Refer to the troubleshooting documentation if you encounter errors during the startup process.
Using Docker containers is the standard approach for production hosting or self-hosting. Follow these steps to configure Twenty with Docker Compose.
You can pull and start the latest stable version with a single command:
bash <(curl -sL https://git.new/20)
To use a specific release or development branch:
VERSION=vx.y.z BRANCH=branch-name bash <(curl -sL https://git.new/20)
Replace vx.y.z with your desired version and branch-name with the appropriate branch.
Create your .env file from the repository example:
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example
Generate a secure secret token:
openssl rand -base64 32
Open the .env file and replace the APP_SECRET placeholder with your generated string:
APP_SECRET=your_random_string
Additionally, set a strong password for the database (avoiding special characters that might break connection strings):
PGPASSWORD_SUPERUSER=your_secure_password
Download the official configuration:
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml
docker compose up -d
The interface will be available at http://localhost:3000.
By default, the application is configured for local access on port 3000. For external access, you must define the SERVER_URL variable in your .env file.
http or https. Note that https is required for certain browser features like the clipboard API and secure cookie handling.Features such as the "copy to clipboard" buttons often fail in non-secure contexts. For production environments, it is highly recommended to run Twenty behind a reverse proxy (such as Nginx or Caddy) that handles SSL termination.
Direct Access (No Proxy):
SERVER_URL=http://your-domain-or-ip:3000
Via Reverse Proxy (Standard HTTPS):
SERVER_URL=https://your-domain-or-ip
Via Reverse Proxy (Custom Port):
SERVER_URL=https://your-domain-or-ip:custom-port
After updating the .env file, restart the containers:
docker compose down
docker compose up -d
X-Forwarded-For).SERVER_URL must exactly match the URL accessed by users to prevent redirection issues.The provided Docker Compose configuration uses volumes to ensure your database and uploaded files remain intact when containers are restarted or updated. If you are deploying to a stateless environment, you will need to configure Twenty to point to external persistent storage or a managed database service.
Paper2Video: Transforming LaTeX Papers into AI-Generated Presentation Videos
PromptEnhancer: Rewrite Any Prompt for Stunning AI Images
TradingAgents-MCP: A 15-Agent AI Framework for Real-Time Stock Analysis
Besnow Cloud VPN: 60% Off Coupon + 30-Day Free Trial
Lens Desktop Installation Guide: macOS, Windows, Linux
ntopng Network Traffic Monitor: Identify Bandwidth Consumption and Network Bottlenecks
Easy Agents: Automate Operations with Natural Language and MCP
Zen Browser: about:config Tweaks, 1Password Setup, and Customization Guide
Memos Self-Hosted Note App: Lightweight Markdown and API-First
Greppo Python Framework: Build Geospatial Web Apps Fast
AppFlowy: Open-Source Notion Alternative With Local Data Control
MM-Wiki: A Lightweight Enterprise Wiki & Team Collaboration Tool