An open-source CRM for contacts, companies and deals, with a data model you shape yourself, operated on your servers or dedicated machines in Switzerland and the EU. Pilae runs it on your own servers, or in Zurich, Switzerland, and eleven other Pilae Cloud regions.
- Licence
- AGPL-3.0
- Runs on
- Your own hardware, or any of 10+ Pilae regions — six of them in Switzerland and the EU
- Upgrades
- Pinned, tested against your configuration, applied in your window
- Upstream
- twenty.com
Running Twenty in production: what it takes
Deploy server and worker
Twenty pinned to a version we have run, with the server and a separate worker on PostgreSQL and Redis, so imports and mailbox sync never slow the screen your sales team works in.
Register the OAuth apps in your tenant
Mailbox and calendar sync use an app registered in your Google Workspace or Microsoft 365 tenant. You can revoke it at any time without asking us.
Back up and restore on a schedule
The database and file storage go offsite daily, encrypted, to a location in your chosen country. Once a month we restore both into a scratch instance and open a record with its attachments. The result is recorded in the console.
Upgrade in your window
Twenty releases often and upgrades run database migrations. The Pilae Agent tests each version on a copy of your workspace, waits for your approval and applies it in your window, with the previous version ready to restore.
What Twenty is, and who runs it
Self-hosted Twenty CRM for sales teams
Twenty is a CRM built around a data model you edit in the interface: companies, people and opportunities out of the box, and any custom object your business needs, with its own fields, relations, views and API. It connects to your mailboxes and calendars, so the history of a deal builds itself instead of being typed in after each call.
We operate Twenty on dedicated machines in any of 10+ Pilae Cloud regions, six of them in Switzerland and the EU, or on your own hardware, reachable only on your private network. A CRM holds your customer list, your pipeline and years of correspondence. Keeping it in a jurisdiction you picked, on machines nobody else shares, gives you a short answer when a client’s procurement team asks where their data sits.
Twenty in production: workers, sync and backups
Twenty runs as a server and a worker on PostgreSQL and Redis. We keep them separate so imports, mailbox sync and workflows never compete with the people using the screen. Mailbox and calendar sync runs through an OAuth app registered in your own tenant. Upgrades go through the Pilae Agent: it tests each release on a copy of your workspace, waits for your approval, applies it in your window and records it.
The database and file storage go offsite daily, encrypted, to a location in your chosen country, and every month we restore both into a scratch instance. The result is recorded in the console. See backups for the detail.
Moving off Salesforce or HubSpot
Data comes across object by object, with the data model shaped first and totals reconciled before anyone switches. Automations are rebuilt in Twenty workflows or n8n. The move is a fixed-price migration, and for HubSpot specifically see the HubSpot alternative. Sign-in joins your other apps through SSO and identity.
Twenty licence and editions
The open edition has no per-seat fee. If you need the paid self-hosted plan, we operate it the same way. Our operation follows the published plans. Talk to us about the pipeline you want to bring home.
Twenty system requirements
Before anything is deployed, this is what has to exist. We size it with you in the first session, and we say so when your own hardware is already enough.
- CPU and memory
- 2 vCPU · 4 GBFor the server and one worker with a sales team of a few dozen. Mailbox sync and workflows add load on the worker, not the server.
- Database
- PostgreSQLTwenty keeps each workspace in its own PostgreSQL schema. We run it on its own volume with point-in-time recovery.
- Queue
- RedisBackground jobs such as mailbox sync, calendar sync, imports and workflows run through a queue on a separate worker container.
- File storage
- Local volume or S3-compatible bucketAttachments and avatars. Backed up with the database, because a restore without them leaves broken links on every record.
- Mail and calendar
- Google Workspace or Microsoft 365Optional. Syncing needs an OAuth app registered in your tenant, so the tokens are issued to you rather than to a vendor.
- Access
- Private network onlyTwenty answers on your private mesh, behind the Pilae gate on port 443.
Migrating from Salesforce to Twenty
Salesforce holds more than records. The objects and fields come across: accounts become companies, contacts become people, opportunities stay opportunities, and custom objects are recreated in Twenty's data model before the data is loaded. Owners, stages and relations are mapped on the way in. What does not convert is logic: Apex code, Flows, validation rules and page layouts are rebuilt as Twenty workflows, n8n automations or dropped, one by one, with whoever owns them. AppExchange packages each need a decision. Email history can be reloaded by syncing mailboxes rather than exporting activity records, which usually gives a cleaner timeline.
Inventory objects, fields and automations
Every object, field, Flow and report that was used in the last ninety days, with its owner. Fields nobody filled in stay behind.
Shape the data model first
Custom objects, fields and relations are created in a staging Twenty, so the import has somewhere to land and sales can review the layout before any data moves.
Load and reconcile
Records are exported, cleaned and imported object by object, with counts and pipeline totals compared against Salesforce reports before sign-off.
Switch the team, keep the archive
Mailboxes and calendars are connected, the team moves on a Monday, and the Salesforce export is kept read-only until the contract ends.
How Salesforce objects land in Twenty
| Account | Company | CSV import, domain used to de-duplicate |
| Contact | Person | CSV import, linked to company by account ID |
| Opportunity | Opportunity | CSV import, stages mapped to the pipeline |
| Task, Event | Task, calendar event | Open tasks imported, events from calendar sync |
| Custom object | Custom object | Created in the data model first, then imported |
| Flow, Apex trigger | Workflow or n8n | Rebuilt by hand, or retired |
What Pilae is responsible for
A pinned version
A version we have run, not whatever latest resolves to that day.
A runbook
What it depends on, how it fails, what to do about it. In your repository.
A restore drill
Backups restored on a schedule. A backup nobody has restored is a file.
A patch window
Security updates in a window you agreed, with a rollback ready.
Someone watching
Every endpoint probed on the minute. An alert reaches a person, not a dashboard nobody opens.
- Where it runs
- zur1, fra1, fal1, gra1, ams1, hel1, lon1, ash1, hil1, sin1, tok1, syd1, on-premZurich, Frankfurt, Falkenstein, Gravelines, Amsterdam, Helsinki, London, Ashburn, Hillsboro, Singapore, Tokyo, Sydney, Your own hardware
- Who holds the credentials
- You do. Ours are separate, named, logged and revocable with one command. We ask before anything changes outside an agreed window.
- If you leave
- The machine, the data, the compose files and the runbook are already yours. Nothing stops when our access does.
What running Twenty costs
On Starter, Twenty runs in Pilae Cloud for CHF 449EUR 479USD 559 a month, hosting and onboarding included. On Business, it is one of up to three apps for CHF 1,590EUR 1,690USD 1,990 a month, on your own servers or in Pilae Cloud. Enterprise is quoted. The plans set what each includes; these are the inputs that move the price around them.
- Instance size
- The CPU, memory and, where a model runs, the GPUs the app needs for your users and your data.
- High availability
- One machine with tested restores, or a replicated setup that keeps serving when a node fails.
- Storage and backups
- How much data it holds, how long backups are kept, and point-in-time recovery for its database.
- Plan and support
- Starter, Business or Enterprise: support hours, response times in the contract and how often we review the service with you.
- Region
- Your own hardware, where the infrastructure is already yours, or a Pilae Cloud region, where machines are priced per month. On Starter, Pilae chooses the site.
- Sign-on and integrations
- Single sign-on, directory sync, mail relays and the other systems the app has to reach.
Twenty: common questions
Is Twenty open source?
Can Twenty replace Salesforce?
Does it sync our email and calendars?
Can other systems read and write CRM data?
Where does the customer data live?
Also in business
Odoo Community
Open-source ERP for sales, invoicing, inventory, purchasing and manufacturing, operated on your own servers or dedicated machines in Switzerland and the EU.
Replaces SAP Business One, Microsoft Dynamics
Plane
Issues, cycles and roadmaps for engineering and product teams, on dedicated machines in Switzerland, the EU or your own datacentre.
Replaces Jira, Linear
Cal.com
Booking pages synced with your calendars, run on dedicated machines in any of 10+ Pilae Cloud regions, six of them in Switzerland and the EU, or your own datacentre, from the MIT-licensed community edition of Cal.com.
Replaces Calendly
Bring us your Twenty. We will tell you what it takes.
Thirty minutes on the deployment you already have, or the one you are about to start.