LibraryRepo of the day9 min read
Twenty and the data model you were renting
A ten-person sales team on Salesforce list pricing pays about $21,000 a year, and the thing they are actually renting is not the software. It is the shape of their own business. Twenty puts that shape in a repository you own, and it shipped four releases in two days.

You can now run your company's CRM on a server that costs about twenty dollars a month and keep the entire shape of it, every custom object, every pipeline stage, all seventeen of the fields somebody added over four years, in a repository you own and can actually read. A ten-person sales team doing that same job on Salesforce is looking at a list price of $175 per user per month on the Sales Cloud Enterprise edition, billed annually. That is $21,000 a year, and almost none of it is buying storage. It is buying the right to keep your own customer list inside somebody else's schema. Twenty is the open-source CRM that closed most of that gap, and it pushed four releases in the last two days.
What the repo actually is
Twenty describes itself in the first line of its README as the CRM you build, ship, and version like the rest of your stack. That sentence is doing more work than it looks like it is doing, so it is worth slowing down on.
In every CRM your business has ever paid for, the configuration is a state you clicked into existence inside the vendor's walls. The deal stages, the required fields, the custom object somebody built for renewals, the property that four reports secretly depend on. None of that is a file. There is no diff. There is no review step, no rollback, and no way to see what the model looked like in March. Ask any operations lead what happened the last time a well-meaning admin deleted a property on a Tuesday afternoon. That story always ends the same way, and it ends with somebody rebuilding from memory.
Twenty's answer is to make the data model code. You define an object and its fields in TypeScript, you commit it, and the structure of your CRM lives in git alongside everything else. Objects, views, workflows, and agents are all building blocks in the same system. The stack underneath is unremarkable in the good way: TypeScript, NestJS, PostgreSQL, Redis, React. Nothing exotic, which matters when you are the one who has to keep it running.
The project is at 54,900 stars with more than 300 contributors, and the pace right now is genuinely unusual. Looking at the releases page, v2.30.0 landed on August 11 and v2.30.2, v2.31.0 and v2.31.1 all landed on August 12. Four tagged releases inside forty-eight hours.
What shipped this week, and why it is the interesting part
The version that went out on Monday and Tuesday is not a bugfix train. It is Twenty putting agents inside the CRM as a first-class thing rather than a bolt-on.
There is a new chat mode that keeps a conversation in the foreground and opens records as side panels next to it, which is a small interface decision with a large consequence: it treats "ask about the pipeline" as the primary way you use the CRM rather than a feature hidden behind a sparkle icon. There are multi-turn agent conversations through the runAgent API, so an agent can hold a thread instead of answering one question and forgetting. Campaign email bodies got a real canvas editor with sections, columns, buttons and images. Views can render as a list now, alongside table, board and calendar. Records filter in real time, so a row vanishes from a view the moment it stops matching.
The one I would look at hardest if I were evaluating this for a business is agent execution scoping to specific workspace members. That is permissions for robots. It is the difference between "we turned on an AI agent" and "we turned on an AI agent that can only touch what a particular person can touch," and it is the exact question that decides whether a small team is allowed to let an agent near the customer database at all. Most products are shipping the agent first and the scoping later. This one shipped them in the same release, and that ordering tells you something about who is building it.
Worth noting on the way past: the Slack bot got a native agent surface, and the fonts are now self-hosted rather than pulled from Google, which is a very small line in a changelog and a very large line in a vendor security review.
Why this matters if you are not an engineer
For the revenue operations or marketing operations person, this is the clearest version of a pattern this site keeps circling. You already know your data model better than anyone at your company. You built it. What you have never had is the ability to treat it like something you own: to branch it, test a change against a copy, review it with somebody, and put it back if it was wrong. That capability has existed for developers for twenty years and has been withheld from the person who actually designs how the business records its work, for no better reason than that the CRM was somebody else's product.
For the owner-operator the argument is blunter and it is about the exit. The reason a CRM contract renews is almost never that the CRM is good. It is that leaving means rebuilding four years of configuration somewhere else, and nobody can estimate that number, so the renewal gets signed. Owning the schema does not make migration free. It does make it countable, which is the first honest thing anybody has said about CRM switching costs in a while.
And the comparison is not only Salesforce. HubSpot's Sales Hub runs $90 per seat per month on Professional billed annually, with a one-time onboarding fee of $1,500, and Enterprise seats at $150 with onboarding at $3,500. For a lot of the businesses reading this, that onboarding fee is the tell. You are paying somebody to build your data model, and at the end of it you still do not have a copy.
The honest take, which is where free stops being free
Setup. Self-hosting is Docker Compose, and there is a genuine one-line installer that pulls a script from the repo and checks your dependencies before it runs. That is better than most projects covered here. It is still not a double-click. The Docker Compose documentation wants Postgres, Redis, a minimum of 2GB of RAM and realistically 4GB, a SERVER_URL you set correctly, and a database password you change from the default. If you have stood up a container on a VPS before, this is an afternoon. If you have not, it is a weekend and a couple of dead ends, and the honest advice is to use the hosted version at twenty.com instead and revisit self-hosting later. The README is upfront that it gives _technical teams_ the building blocks. Read that phrase as written.
Hosting. A 4GB VPS runs somewhere around $20 to $24 a month, which is the real number against $21,000 a year of list-price Salesforce seats. But you are now the database administrator. Backups are yours. Upgrades are yours, and a project shipping four releases in two days is a project you will be upgrading often. Certificate renewal is yours. None of that is hard. All of it is Tuesday.
The AI is not self-hosted just because the CRM is. This is the part I would make somebody say out loud before they present this as a privacy win. The agents call a model, and the model belongs to a provider you are paying by the token. The meeting transcript features in this release default to Recall.ai with Gladia for mixed languages. Those are third parties, and your call audio goes to them. Self-hosting the CRM moves your records onto your server. It does not move the inference, and anyone telling your team otherwise has not read the settings page.
The license has an asterisk, and it is a real one. Twenty is AGPLv3, which permits commercial use, with two carve-outs. Some packages are MIT. And certain files carry a /* @license Enterprise */ comment, which puts them under a commercial license requiring a paid Twenty Enterprise subscription for production use. The license text does not enumerate which features those are. So the honest position is that "free for commercial use" holds for the bulk of the product and you would need to grep the codebase for that comment to know exactly where the line sits for the features your business actually depends on. There is also a section 7 application exception that means anything you build against Twenty's published APIs does not get pulled into the AGPL, which is the sensible thing and removes the usual objection.
What the paid products do that this does not. Salesforce and HubSpot are not really CRMs, they are ecosystems. Thousands of prebuilt integrations, an app marketplace, a global bench of certified consultants you can hire on Monday, compliance attestations your enterprise customers ask for by name, and marketing automation wired into the same record. Twenty has a fraction of that surface. Also, and this is the one nobody puts in the spreadsheet, your team already knows how to use the thing you have. Retraining eight people on a new interface has a cost even when the software is free.
Who maintains it, and what happens if they stop. Twenty.com is a public benefit corporation out of Y Combinator's S23 batch, and it raised a $5 million seed led by Runa Capital in November 2024, with a long list of angels from HubSpot, Front and Pipedrive. That is a real company with real backing and it is also a seed-stage company whose last announced round is getting on for two years old. If the funding does not continue, the AGPL means nobody can take the code away from you. What you would lose is the pace, and at four releases in two days the pace is most of what you are actually adopting.
Where that leaves you
The move here is not to migrate your CRM this quarter. For almost everyone reading this, that is a bad idea and the switching math will say so. The move is smaller and it is available today: stand this up on a cheap server, import a copy of your objects and fields, and look at your own data model as a file for the first time. Most people find something in there they did not know was still running.
Every vendor sells you a CRM as a place to put your customers. What they are actually selling is the schema, and for a decade the price of that schema was that you never got to hold it.
Sources
Every claim above traces back to one of these. Go read them yourself.
- 01twentyhq/twenty, the open-source CRM
GitHub / github.com / retrieved Aug 13, 2026
- 02Twenty releases, v2.30.0 through v2.31.1
GitHub / github.com / retrieved Aug 13, 2026
- 03Twenty LICENSE, AGPLv3 with the Enterprise carve-out
GitHub / github.com / retrieved Aug 13, 2026
- 04Sales Cloud pricing and editions
Salesforce / salesforce.com / retrieved Aug 13, 2026
- 05HubSpot CRM and Sales Hub pricing
HubSpot / hubspot.com / retrieved Aug 13, 2026
- 06Self-hosting Twenty with Docker Compose
Twenty / docs.twenty.com / retrieved Aug 13, 2026
Related reading
Nearest neighbours by meaning, drawn from the whole library rather than from matching tags. Some of these are from a different series on purpose.
Repo of the day
Macro and the forty-dollar stack
Ten people on Superhuman and Linear alone costs $5,880 a year, and all it buys is an inbox and a task board. Macro does email, chat, docs, tasks, calls and CRM out of one app for $40 a seat, and it moved to the AGPL in May, which means the escape hatch is written into the license.
Operator answers
Your Software Just Added AI. Do You Pay For It?
Three renewals this quarter, three new AI lines, priced anywhere from twenty nine dollars flat to a hundred and twenty five per seat. Which ones to pay for has almost nothing to do with how good the AI is.
Repo of the day
Open Design and the seat everybody waits on
A Figma Full seat costs $16 a month for every person allowed to make something instead of just look at it, and the queue behind the one person who has it is worse than the bill. Open Design is an Apache-2.0 desktop app that hands the making part to a coding agent you already pay for, and it shipped again yesterday.