// the find
twentyhq/twenty
The open alternative to Salesforce, designed for AI.
Twenty is a self-hostable, open-source CRM built on NestJS, React, PostgreSQL, and GraphQL. It's aimed at technical teams who want a Salesforce-like system they can extend and version like regular code, rather than clicking through an admin UI. The newer SDK angle lets you define objects and deploy them like a mini-PaaS on top of the CRM.
- The monorepo is well-structured with Nx, clear package boundaries (twenty-server, twenty-front, twenty-sdk, twenty-ui, etc.), and the CI pipeline has granular per-package workflows plus merge queue enforcement — the engineering process is more mature than most OSS projects at this stage.
- The code-first app model (defineObject + npx twenty deploy) is a genuine differentiator over Salesforce and most open-source CRMs; treating CRM schema as versionable code that ships through a normal git workflow is a real improvement over click-to-configure.
- Cursor rules and skill files (.cursor/rules/, .cursor/skills/) are checked into the repo, which means AI-assisted contributions get consistent architectural guidance — an unusually thoughtful detail that actually reduces bad PRs.
- GraphQL API is first-class and auto-generated from your object definitions, so anything you model is immediately queryable and available to external tools without extra wiring.
- AGPL-3.0 license is a hard stop for many commercial adopters who want to embed or modify without open-sourcing their own product; this is often glossed over in the 'open alternative to Salesforce' pitch.
- Self-hosting is non-trivial: you need PostgreSQL, Redis, a running NestJS server, and a worker process. The Docker Compose path works but config surface area (env vars, migrations, worker concurrency, email transport) is large and documentation gaps surface quickly in edge cases.
- The 'designed for AI' framing in the description is vague and mostly refers to agent/chat features that are still early; the actual AI integration depends on you wiring in your own LLM keys, and the agent capabilities shown are not clearly differentiated from basic workflow automation.
- Node >=24.5.0 is required (pinned in engines), which is unusually aggressive — Node 24 only hit LTS status recently, and this will cause friction in environments with pinned Node versions or older CI images.