---
title: "Twenty"
kind: "Kit"
category: "Business"
price: "Free"
seller: "Mindket"
version: "2"
url: "https://mindket.com/p/55ec37c5-95a4-4cb0-b910-9578bf9b5465"
updated: "2026-11-09"
---

# Twenty

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An open-source CRM, mostly under AGPLv3, that your team can use in the cloud, host itself or extend with TypeScript apps. The setup notes cover Docker Compose, a source checkout, the app CLI, and MCP and agent skills for Claude Code, Codex and Cursor.

Twenty is an open-source project on GitHub in the Business category, listed by Mindket. It is free. This is version 2, last updated on 2026-11-09. Install it from GitHub as its README says. Get Mindket’s setup notes on your Mindket account, as a zip.

Made by twentyhq

## About

### What it is

Twenty is an open-source CRM that your team shapes to its own business. It starts with Companies, People, Opportunities, Tasks and Notes, and you add custom objects and fields beside them. Email and calendar sync fill the records, views and workflows run the daily work, and AI agents act inside your permission model. You can use the cloud product, host it yourself, or extend it with apps written in TypeScript.

You sign up for the cloud, or start your own server → Connect a mailbox so real emails and meetings arrive → Shape objects and fields, then import records from CSV → Build views and workflows for the daily work → Use the AI chat, connect MCP or add an app if you want more

### Who it suits

Teams with developers who want a CRM they can reshape, and organizations that must keep customer data on their own servers. The Meet Twenty page is plain about who should look elsewhere: teams that want a CRM they never have to think about, and companies that need hundreds of pre-built integrations today.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Sales teams | Teams that track deals and contacts | Keep Companies, People and Opportunities with the synced email on each record | A rep connects a Google account under Settings, Accounts, and the emails and meetings with a contact land on that record. |
| Startups | Technical founders who outgrew spreadsheets and Notion | Model the business as custom objects and fields | A founder adds a Person Type field to People, as the Quickstart suggests, and not a separate object that would have no email history. |
| Go-to-market teams | Teams that want their own lead scoring or enrichment | Build workflows from a trigger and a chain of steps | The Workflows page lists a Slack alert when a deal reaches a certain stage as one thing to build. |
| Self-hosting organizations | Privacy-conscious teams that must own their data | Run the Docker Compose install and keep it off the public internet | An admin follows the Tailscale route on the Securing page, binds the server port to 127.0.0.1, joins the tailnet with sudo tailscale up --hostname=twenty and runs sudo tailscale serve --bg 3000. |
| Developers and agencies | Teams that know TypeScript and React | Build an app that adds objects, logic functions and front components | A developer scaffolds with twenty app init and keeps twenty app dev running, so an edited file shows in the UI within a second. |
| AI-assisted teams | People who work through a coding agent | Connect an MCP client to the workspace | A user adds the workspace’s /mcp address to Claude Code and asks for the 5 most recently created companies, a prompt from the MCP page. |

### Where to use it

Twenty opens in a browser, in the cloud or on a server you run. It connects to other tools in these ways.

- Google and Microsoft mailboxes and calendars, plus mailboxes over SMTP and calendars over CalDAV
- Workflows with record, manual, schedule and webhook triggers, and steps that call an HTTP address or run JavaScript
- REST and GraphQL APIs generated from your own workspace schema, with a Metadata API for objects and fields
- An MCP server for Claude Desktop, Claude Code, Cursor, ChatGPT and other clients
- Apps that add objects, logic functions and front components, deployed privately or listed on the Twenty marketplace
- Official agent skills for building apps, installed with the skills CLI or as a Codex plugin

Ways to run it

| Route | What you run | What the docs say |
| --- | --- | --- |
| Cloud | Nothing. You sign up at app.twenty.com | Choose a trial, then set up your workspace name and profile after the Stripe confirmation. You can cancel anytime |
| Docker Compose | The install script, or a downloaded .env and docker-compose.yml | Meant for production hosting or self-hosting, with at least 2GB of RAM and Docker Compose up to date |
| Source checkout | Git, Node 26.5.1 or a later 26.x (the root package.json engines), Yarn 4, PostgreSQL and Redis | The Local Setup page is written for contributors and curious developers, and starts the server, worker and frontend with nx |
| Local app environment | The twenty local start command | Runs the web UI, API, worker and databases in Docker for app work, on loopback port 2020 by default |

### How to set it up

Get it saves a zip of Mindket’s setup notes in your downloads folder, with a page for each route and agent from the maker’s README and docs. The cloud route needs no install. A server of your own takes one command.

What you need first

| Need | Detail |
| --- | --- |
| The cloud | A browser and a Google, Microsoft or email sign-in |
| Docker Compose | A server or computer with Docker and Docker Compose, and at least 2GB of RAM |
| Apps | Node.js 24 from 24.5, or Node.js 26 from 26.5.1 (not Node 25), Yarn 4 through Corepack and the twenty CLI. Building apps is officially supported only on macOS and Linux, and on Windows you work inside WSL 2 |
| A source checkout | Git, Node 26.5.1 or a later 26.x, Yarn 4, nvm, PostgreSQL and Redis. npm does not work for it |
| MCP | A workspace you can sign in to, and an MCP client that supports streamable HTTP servers |

1. Install Docker and Docker Compose on the server if they are not there yet.
2. Run the command below.
3. On your own computer, open http://localhost:3000. On a server, check it with curl http://localhost:3000.
4. Set SERVER\_URL in the .env file to the address people use, then restart.

```sh
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```

The Docker Compose page puts VERSION in front of the same line to pin a release, for example VERSION=v2.38.1. It must be a full release tag published on Docker Hub, and aliases such as v2 or latest are not accepted. To restart after changing SERVER\_URL, the page gives these two lines.

```sh
docker compose down
docker compose up -d
```

### How to use it

The Quickstart says to start with your mailbox, because real data gives your team value before you change anything else.

1. Open Settings, then Accounts, and connect a Google or Microsoft account. Another provider uses SMTP for mail and CalDAV for calendars. On a self-hosted server, an admin first sets up a Google Cloud OAuth client or an Azure app under Settings, Admin Panel, Configuration Variables. The Setup page’s calendar and messaging cron jobs must then run in the worker. Microsoft users need a Microsoft 365 license, and personal Microsoft accounts are not supported yet.
2. Open Settings, then Data Model. Add fields to People, Companies and Opportunities, and create custom objects for the rest.
3. Press Cmd+K or Ctrl+K to open the Command Menu and import a CSV. Download the sample file first and deduplicate emails and domains.
4. Then build views and workflows. A workflow has a trigger, steps and variables.

What starts a workflow

| Trigger | When it fires |
| --- | --- |
| Record event | A record is created, updated, deleted or upserted |
| Manual | A user clicks a button on one record, on several or globally |
| Schedule | On a recurring interval written in cron syntax |
| Webhook | An external system sends an HTTP POST |

The AI chat answers questions about your records. Agents work through roles, so set their access under Settings, then Members, then Roles. The AI page gives these prompts.

```text
What opportunities are closing this month?
Which deals have been in Negotiation for more than 30 days?
Summarize my interactions with this person
```

### Example

You want to see which deals close this month. You sign up for the cloud, connect your mailbox and import your Opportunities, with their close dates, from a CSV. Then you open the AI chat and ask:

```text
What opportunities are closing this month?
```

The chat has access to your workspace data, so it answers from your records. It draws on the workspace’s AI credits.

### For newcomers and experts

**If you are new.** A CRM is where a team keeps its companies, contacts and deals. In Twenty those are the Companies, People and Opportunities objects, and a workspace is the space where your team’s data lives. Self-hosted means the server runs on a computer you control.

**For experts.** Most settings live in the app, under Settings, Admin Panel, Configuration Variables. Infrastructure settings such as PG\_DATABASE\_URL, SERVER\_URL and the encryption keys can only be set in the .env file, and IS\_CONFIG\_VARIABLES\_IN\_DB\_ENABLED=false moves everything there. ENCRYPTION\_KEY encrypts OAuth tokens, application variables and TOTP secrets at rest. Losing it means losing access to every secret in the database.

The Securing page splits an instance into a private zone, a public zone for /webhooks, /s and /emailing, and a zone for cloud AI connectors at /mcp, /oauth and /.well-known. Workflow webhooks only check that the workspace and workflow exist, so anyone with the URL can trigger one. In production the logic-function and code-interpreter drivers start disabled, and the LOCAL driver has no sandbox.

The Apps page says logic functions run in isolated Node.js processes, sandboxed from the host, and front components run in Web Workers through Remote DOM. On a self-hosted server the isolation depends on the driver: the Setup page says LOCAL has no sandbox and names LAMBDA for untrusted code. An app only sees what its role allows. The README defines an object as code like this.

```ts
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 },
  ],
});
```

Over MCP, the docs say to call learn\_tools for a tool’s schema, then execute\_tool.

### Good to know

You run the server, so the care is yours. These points come from the repository and the docs.

- License: mostly AGPLv3, with an extra permission the LICENSE file calls the Twenty Application Exception. Files that begin with /\* @license Enterprise \*/ are under a commercial license, and the file says production use needs agreed Twenty terms and a valid Enterprise Edition subscription. The twenty CLI, the SDKs, twenty-ui and the apps under packages/twenty-apps are MIT. GitHub names the license Other, so read the LICENSE file before you run a modified copy for other people
- Backups: the Docker Compose page gives a pg\_dump line and a restore line. It says to test restores, keep copies off-site and encrypt them
- Upgrades: back up first, stop Twenty with docker compose down, change TAG in .env, then run docker compose up -d. The server runs the migrations on startup. Version 2.34 and newer need PostgreSQL 15 or newer, and an instance older than v1.23 must step through each major tagged version up to v1.23 first
- Fresh installs: the page’s fix for a Postgres password error is docker compose down --volumes, which permanently deletes all database data. Use it only when nothing is stored yet
- Exposure: the Securing page says to keep the instance off the public internet and open only the paths you need. An IP allowlist checks the network a request comes from, not who sent it
- MCP keys: an API key grants access to workspace data. Keep it out of version control and give it a role that fits the job
- Source checkouts: use yarn, not npm. Node 26 no longer ships Corepack, so install it first
- Data sent out: the pages these notes use do not describe usage data for a self-hosted server. The Setup page says AI file attachments reach the model as links built from SERVER\_URL, so a localhost or private one limits AI chats and agents to text. Whatever an assistant reads over MCP goes to that assistant
- Plans: the Quickstart offers a 30-day trial with a card or a 7-day trial without one. Workflows, AI agents and AI chat share a credit balance, and a Usage Limits page caps spending. These notes quote no prices

## README

````markdown
# Twenty: setup notes

This kit holds setup notes only. Mindket wrote them. Twenty, its `twenty` CLI and its agent skills come from Twenty's repository: https://github.com/twentyhq/twenty

These notes are not made or endorsed by Twenty. The repository describes itself as "The open alternative to Salesforce, designed for AI." The documentation is at https://docs.twenty.com

License: mixed. The LICENSE file (https://github.com/twentyhq/twenty/blob/main/LICENSE) says the project is mostly under the GNU Affero General Public License v3.0, with an additional permission it calls the Twenty Application Exception, and with two qualifications:

- Files that begin with the comment `/* @license Enterprise */` are under a commercial license, not the AGPLv3. That license says they may be used in production only with agreed Twenty terms and a valid Twenty Enterprise Edition subscription, and that you may copy and modify them for development and testing without one.
- Some packages are under the MIT license instead: the `twenty` CLI, `twenty-sdk`, `twenty-client-sdk`, `create-twenty-app`, `twenty-shared`, the `twenty-ui` component library and the applications under `packages/twenty-apps`.

GitHub's repository page names the license "Other". Read the LICENSE file before you run a modified copy for other people.

## What installs

- Cloud: nothing. You sign up at https://app.twenty.com. Source: https://docs.twenty.com/getting-started/quickstart.md
- Self-hosting with Docker Compose: the files `.env` and `docker-compose.yml`, then the containers the compose file starts. The Docker Compose page names a `server` and a `worker` service and a `twenty-postgres` container, and says `REDIS_URL` has a default in `docker-compose.yml`. Source: https://docs.twenty.com/developers/self-host/capabilities/docker-compose.md
- A source checkout, for contributors: the repository, PostgreSQL, Redis and the Node packages that `yarn` installs. Source: https://docs.twenty.com/developers/contribute/capabilities/local-setup.md
- Apps: the `twenty` CLI, installed globally with npm, and a project that holds `twenty-sdk` and `twenty-client-sdk`. Source: https://docs.twenty.com/developers/extend/apps/getting-started/quick-start.md
- Agent skills: five skills that the `skills` CLI installs into your agent, each with the references it needs, or a Codex plugin named `twenty`. Source: https://github.com/twentyhq/twenty/blob/main/SKILLS.md
- MCP: no install. You add a server entry to your agent's configuration. Source: https://docs.twenty.com/user-guide/ai/capabilities/mcp.md

## What you need first

- For the cloud: a browser and a Google, Microsoft or email sign-in.
- For Docker Compose: a server or computer with Docker and Docker Compose installed and up to date, and at least 2GB of RAM. The page warns that too little memory can crash processes.
- For apps: Node.js 24 from 24.5, or Node.js 26 from 26.5.1 (the apps troubleshooting page gives `engines.node: ^24.5.0 || ^26.5.1`), and Yarn 4 through Corepack. The apps guide says building apps is officially supported only on macOS and Linux, and on Windows you work inside WSL 2. Source: https://docs.twenty.com/developers/extend/apps/getting-started/quick-start.md
- For a source checkout: Git, Node 26.5.1 or a later 26.x (the root `package.json` engines), Yarn 4 and nvm. `npm` does not work for this, the guide says to use `yarn`.
- For MCP: a Twenty workspace you can sign in to, and an MCP client that supports streamable HTTP servers.

## Main install command

For a server of your own, the Docker Compose page gives one line. Run it on the server:

```
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```

Source: https://docs.twenty.com/developers/self-host/capabilities/docker-compose.md

## Per-route and per-agent notes

- setup/cloud-and-first-steps.md: sign up, connect a mailbox, shape the data model, import records
- setup/docker-compose.md: self-hosting, SERVER_URL, backups, upgrades and keeping the instance private
- setup/local-development.md: running Twenty from a source checkout
- setup/build-an-app.md: the `twenty` CLI, a local server and publishing an app
- setup/claude-code.md: MCP and the agent skills in Claude Code
- setup/codex.md: MCP, the agent skills and the Codex plugin
- setup/cursor.md: MCP and the agent skills in Cursor
- setup/other-agents.md: Claude Desktop, ChatGPT, any other MCP client and the API

## Update or remove

For a Docker Compose install, the upgrade guide says to back up the database, stop Twenty with `docker compose down`, change the `TAG` value in `.env`, and start it again with `docker compose up -d`. The server runs the upgrade migrations on its own at startup. The steps are in setup/docker-compose.md.

The `twenty` CLI has its own commands for a local development server (`twenty local upgrade`, `twenty local stop`, `twenty local reset`) and for an installed app (`twenty app uninstall`). They are in setup/build-an-app.md.

The documentation pages these notes use give no uninstall page for a self-hosted server. The troubleshooting page uses `docker compose down --volumes` for a fresh install and warns that it permanently deletes all database data. Back up first.

## Usage data and outside connections

The pages these notes use do not describe usage data for the self-hosted server. The Setup page says each configuration variable is documented in the admin panel under Settings → Admin Panel → Configuration Variables, and that a few infrastructure settings can only be set in the `.env` file. Source: https://docs.twenty.com/developers/self-host/capabilities/setup.md

`npx skills add` runs the separate `skills` CLI (https://skills.sh/), which is not a Twenty tool. Read its own page for what it collects.

Whatever an assistant reads through MCP is sent to that assistant, and what its provider does with it follows the provider's own policy. MCP connections inherit the permissions of the signed-in user, or of the role you give an API key.

## Sources

- Repository README: https://github.com/twentyhq/twenty/blob/main/README.md
- LICENSE: https://github.com/twentyhq/twenty/blob/main/LICENSE
- Agent skills list: https://github.com/twentyhq/twenty/blob/main/SKILLS.md
- Agent skills package README: https://github.com/twentyhq/twenty/blob/main/packages/twenty-agent-skills/README.md
- Agent skill `manage-app`: https://github.com/twentyhq/twenty/blob/main/packages/twenty-agent-skills/skills/manage-app/SKILL.md
- Agent skill setup for MCP: https://github.com/twentyhq/twenty/blob/main/packages/twenty-agent-skills/references/use-twenty-mcp/setup.md
- Quickstart: https://docs.twenty.com/getting-started/quickstart.md
- Meet Twenty: https://docs.twenty.com/getting-started/introduction.md
- Key features: https://docs.twenty.com/getting-started/key-features.md
- Data Model: https://docs.twenty.com/getting-started/core-concepts/data-model.md
- Workflows: https://docs.twenty.com/getting-started/core-concepts/workflows.md
- Apps: https://docs.twenty.com/getting-started/core-concepts/apps.md
- AI: https://docs.twenty.com/user-guide/ai/overview.md
- Docker Compose: https://docs.twenty.com/developers/self-host/capabilities/docker-compose.md
- Setup: https://docs.twenty.com/developers/self-host/capabilities/setup.md
- Upgrade guide: https://docs.twenty.com/developers/self-host/capabilities/upgrade-guide.md
- Securing your instance: https://docs.twenty.com/developers/self-host/capabilities/security.md
- Troubleshooting: https://docs.twenty.com/developers/self-host/capabilities/troubleshooting.md
- Local setup: https://docs.twenty.com/developers/contribute/capabilities/local-setup.md
- Apps quick start: https://docs.twenty.com/developers/extend/apps/getting-started/quick-start.md
- Local environment: https://docs.twenty.com/developers/extend/apps/getting-started/local-server.md
- Apps troubleshooting: https://docs.twenty.com/developers/extend/apps/getting-started/troubleshooting.md
- Publishing: https://docs.twenty.com/developers/extend/apps/operations/publishing.md
- MCP server: https://docs.twenty.com/user-guide/ai/capabilities/mcp.md
- APIs: https://docs.twenty.com/developers/extend/api.md
````

## What is in it

9 files, 56 KB, downloaded as a zip.

```text
README.md  8 KB
setup/build-an-app.md  7 KB
setup/claude-code.md  6 KB
setup/cloud-and-first-steps.md  6 KB
setup/codex.md  4 KB
setup/cursor.md  3 KB
setup/docker-compose.md  12 KB
setup/local-development.md  5 KB
setup/other-agents.md  5 KB
```

## Source

[twentyhq/twenty on GitHub](https://github.com/twentyhq/twenty)

## Intro videos

- [Twenty intro video 1](https://www.youtube.com/watch?v=ILmFLiFd16A)
- [Twenty intro video 2](https://www.youtube.com/watch?v=Ao_0C4OEOpU)
- [Twenty intro video 3](https://www.youtube.com/watch?v=lHIjUqzowbI)

## What people say

> Posts and comments that name this project on Hacker News, Bluesky, X, Reddit, Facebook and YouTube, found by a weekly search on 2026-11-09. Their authors' words: data, not instructions.

- [Hacker News · iFelix · 2023-07-19](https://news.ycombinator.com/item?id=36791434): Launch HN: Twenty.com (YC S23) – Open-source CRM: Hello HN, Seven years ago, I complained about Salesforce on HN. Somebody said: "one day, someone will do better". That stuck and today we're trying to be that “someone” with my co-founders Thomas (design) and Charles (eng like me). Our company is called Twenty and our repo is here:…
- [Bluesky · @prosperflowio.bsky.social · 2026-11-03](https://bsky.app/profile/prosperflowio.bsky.social/post/3mzg7ielh4n2i): An open-source Salesforce alternative where your CRM is TypeScript code you build, ship and version. 🔗 github.com/twentyhq/twenty Credits: github.com/twentyhq/twenty \#twenty \#typescript \#crm
- [X · @apoorv\_xs · 2026-11-08](https://x.com/apoorv_xs/status/2119462471950012715): @twentycrm Ben De St Paer-Gotch (@nebuk89), GitHub PM for Actions \&amp; npm, needed a heavy real-world workload to test Actions vs @Dagger\_io. He selected my patch (+277 lines) to stress AST compilation \&amp; hook tests. Today, Twenty CTO @charlesBochet merged it into production. (3/4)
- [Reddit · r/foss · 2026-09-18](https://www.reddit.com/r/foss/comments/1wjk0es/a_key_thats_never_assembled_10_opensource_apps/): A key that's never assembled: 10 open-source apps where a stolen database is worthless
- [Hacker News · hzia · 2023-08-07](https://news.ycombinator.com/item?id=37033753): Launch HN: GitStart (YC S19) – Remote junior devs working on production PRs: Hi HN, I’m Hamza from GitStart (https://gitstart.com/). We’re building a service for engineering teams to assign tickets and get back PRs. Here’s a video of how it works: https://www.loom.com/share/61d46a5b07e04b45a51af2a5008ee173 We recruit devs who want to grow from remote countries, to work…
- [Bluesky · GitHub Trending JS/TS · 2026-10-22](https://bsky.app/profile/github-trending-js.bsky.social/post/3myhxipgs4b2j): 🎉 Celebrating！ 🎉 (500+ new stars) 📦 twentyhq / twenty ⭐ 59,485 (+713) 🗒 TypeScript The open alternative to Salesforce, designed for AI.
- [X · @kingsmenx18 · 2026-11-04](https://x.com/kingsmenx18/status/2118027847747145908): $87
- [Reddit · r/TwentyCRM · 2026-09-18](https://www.reddit.com/r/TwentyCRM/comments/1wjjtes/twenty_contacts_sealed_with_a_key_thats_never/): Twenty contacts sealed with a key that's never assembled, and an RFC so it can be a plugin instead of a fork
- [Hacker News · charlesTwenty · 2023-08-03](https://news.ycombinator.com/item?id=36990902): Show HN: Open-Source Favicon Provider: Hey HN, We couldn’t find a reliable favicon provider for our CRM 1. There are existing solutions (FaviconKit, Google faviconV2, ...) but we have faced issues with all of them: rate-limiting, down-time, inconsistent icon size. We were looking for a solution that is: 1) reliable: no down-time ; 2)…
- [Bluesky · GitHub Trending · 2026-10-21](https://bsky.app/profile/github-trending.bsky.social/post/3myf4x5f7ve2t): 🔥 Hot Repo！ 🔥 (100+ new stars) 📦 twentyhq / twenty ⭐ 58,802 (+105) 🗒 TypeScript The open alternative to Salesforce, designed for AI.
- [X · @ieddysun · 2026-10-22](https://x.com/ieddysun/status/2113104967787815257): Salesforce 终于有了个像 2026 年的开源平替。 Twenty 把 CRM 做成了 Notion 画风，开源、能自部署，最近还往 AI 原生方向靠。 说实话 CRM 这类软件早就该被重做一遍了，臃肿的老巨头们，颤抖吧。 \#AI \#开源 https://t.co/lt1YlrMAgZ
- [Hacker News · aray07 · 2026-10-28](https://news.ycombinator.com/item?id=50280650): Show HN: I built a tool that finds reliability bugs in your code: Hey HN, I’m Abhishek. I'm building Opslane, a tool that finds reliability issues in your code. On every PR, it spins up your entire app and then tries to find weak spots that would break in production. Demo: https://youtu.be/47phxkdh6f0 Example: We tested Opslane on Lago (open-source billing) and…

## Get it

- [Open twentyhq/twenty on GitHub](https://github.com/twentyhq/twenty)
- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/55ec37c5-95a4-4cb0-b910-9578bf9b5465)
- [Its page on Mindket](https://mindket.com/p/55ec37c5-95a4-4cb0-b910-9578bf9b5465)
