Why the Bending Spoons acquisition changes everything
Bending Spoons has built its model on a repeated pattern: acquire a mature SaaS, reduce headcount, then revise pricing upward. Evernote is the most documented example — the annual subscription rose significantly after the 2023 acquisition by Bending Spoons, for unchanged features. Airtable's terms of service impose no cap on annual price revisions.
Airtable reported $480 million in ARR as of June 2026, with 500,000 customer organizations including 80% of the Fortune 100. These figures indicate a solid revenue base — and pricing leverage that grows with customer dependency.
For an agency or development team that has built its workflows on Airtable, the question is no longer "will prices change?" but "when, and by how much?"
What you gain by self-hosting
- Fixed cost — a VPS at
{{vps.start.price}}covers NocoDB for a ten-person team with no per-seat variable line. - Data under your control — no third party accesses your contact databases, sales pipelines or product catalogs.
- Identical REST API — NocoDB exposes an API compatible with the webhooks and integrations you built on Airtable.
- No record limits — Airtable caps at 50,000 rows on Business plans; self-hosted NocoDB and Grist have none.
- Controlled updates — you choose when to migrate to a new version, without vendor-imposed breaking changes.
- Full export at any time — your data lives in your own PostgreSQL or MySQL database, exportable without depending on a third-party API.
NocoDB vs Grist vs Airtable — comparison table
| Criterion | NocoDB | Grist |
|---|---|---|
| License | AGPL-3.0 | Apache 2.0 |
| Data model | Relational database (PostgreSQL / MySQL / SQLite) | Relational spreadsheet with calculated columns |
| Native Airtable import | Yes — via Personal Access Token and Shared Base ID | No — CSV/Excel import; two-step migration |
| Available views | Grid, gallery, form, kanban, calendar, map | Grid, card, calendar, record detail |
| Formulas | Limited (basic) | Advanced — Python syntax, chained calculated columns |
| Auto-generated REST API | Yes — OpenAPI 3.0 per table | Yes — REST API and Webhooks |
| Minimum RAM | 2 GB (recommended 2 vCPU / 4 GB) | 1 GB (recommended 1 vCPU / 2 GB) |
| Primary use case | Direct Airtable replacement, public forms, lightweight CRM | Complex spreadsheets, calculated columns, data analysis |
Choosing between NocoDB and Grist
The choice comes down to the nature of your Airtable bases.
Choose NocoDB if your Airtable bases are primarily linked data tables — contacts, tickets, inventories, pipelines — with kanban views and public forms. The native API import avoids manual conversion, and the interface is visually very close. NocoDB auto-generates an OpenAPI 3.0 REST API per table: if your scripts or Zapier, Make or n8n webhooks already consume the Airtable API, the transition amounts to changing the base URL and authentication token.
Choose Grist if you make heavy use of Airtable's formula and calculated column features. Grist uses Python syntax for its formulas, giving more power for calculation or analysis bases. A calculated column can reference multiple other columns from the same or a linked table, without depth limits — where Airtable blocks circular references. Import is done from an Airtable CSV export, which requires an intermediate step, but it is a one-hour exercise on a standard-sized base.
The two tools are complementary: some teams deploy NocoDB for operational data — CRM, project management, client forms — and Grist for reporting dashboards that aggregate data from multiple sources. Both can be self-hosted on the same VPS if resources allow.
VPS prerequisites before you start
Both tools install via Docker Compose. A Linux VPS with root access is sufficient — Ubuntu 22.04 LTS or Debian 12 are recommended.
For NocoDB: 2 vCPU and 4 GB RAM for a team of ten to twenty people. 20 GB SSD storage for attachments. Docker 24+ and Docker Compose v2. NocoDB can run with embedded SQLite for individual use, but PostgreSQL is recommended in production: it handles concurrency better and simplifies automated backups via pg_dump.
For Grist: 1 vCPU and 2 GB RAM for individual or small team use. Docker 24+. HTTPS configuration can go through an nginx or Caddy reverse proxy. Grist stores its documents in a persistent directory mounted as a Docker volume — a daily backup of this directory is sufficient to protect all data.
In both cases, plan for a domain name pointed at your VPS and a TLS certificate — Let's Encrypt integrates natively via Certbot. If you host both tools on the same VPS, a VPS with 4 vCPU and 8 GB RAM is a comfortable starting point for a team of fewer than fifteen people.
Migrating to NocoDB — procedure
Generate an Airtable Personal Access Token
In your Airtable account, go to Account → Developer hub → Personal access tokens. Create a token with the data.records:read, schema.bases:read and webhook:manage scopes. Copy it — it only displays once.
Also retrieve your Shared Base ID: open the relevant base, click Share → Get shareable link, then copy the shr… portion of the URL.
Deploy NocoDB with Docker Compose
Create a docker-compose.yml file:
services:
nocodb:
image: nocodb/nocodb:latest
ports:
- "8080:8080"
environment:
NC_DB: "pg://db:5432?u=nocodb&p=password&d=nocodb"
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_USER: nocodb
POSTGRES_PASSWORD: password
POSTGRES_DB: nocodb
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
pg_data:Start with docker compose up -d. NocoDB is accessible on port 8080.
Configure the reverse proxy and TLS
If using nginx, create a vhost that proxies port 8080 to your domain, then obtain a certificate with Certbot: certbot --nginx -d nocodb.yourdomain.com. The NC_PUBLIC_URL environment variable must point to the final HTTPS URL for sharing links and webhooks to work correctly.
Import the Airtable base
In the NocoDB interface, create a new project then click Import → Airtable. Enter your Personal Access Token and your Shared Base ID. NocoDB imports tables, fields (with type mapping), views and records via the Airtable API. For large bases (> 10,000 records), the import may take several minutes — a progress log is displayed.
Verify field types and views
Some Airtable field types have no direct equivalent: Formula fields are imported as text, Rollup fields lose their aggregation. Check each critical table in NocoDB after the import and rebuild any formulas or links that didn't migrate. Public forms and webhooks need to be reconfigured manually.
Migrating to Grist — procedure
Export your bases from Airtable
In Airtable, open each table and click Download CSV (three-dot menu at the top right of the grid view). Export one table at a time — Airtable does not provide a multi-table export in one operation. For complex bases with many linked tables, plan a dedicated session.
Deploy Grist with Docker
Grist deploys with an official Docker image:
services:
grist:
image: gristlabs/grist:latest
ports:
- "8484:8484"
volumes:
- grist_data:/persist
environment:
APP_HOME_URL: "https://grist.yourdomain.com"
GRIST_SINGLE_ORG: "my-organization"
volumes:
grist_data:Start with docker compose up -d. Add your nginx reverse proxy and Certbot for TLS.
Import CSVs into Grist
On the Grist home screen, click Add New → Import document to create a document from a CSV, or Add New → Import from file from an existing document to add tables. Grist also supports Excel, JSON and TSV files. The import dialog lets you choose the destination (new table or existing table) before applying the import.
Rebuild relationships and formulas
Grist models relationships between tables via Reference columns — to be created manually to reproduce Airtable's linked fields. Formulas use Python syntax: an Airtable formula IF({Status}="Active", "Yes", "No") becomes "Yes" if $Status == "Active" else "No" in Grist. The official documentation at support.getgrist.com/imports covers common migration cases.
Keep Airtable access during migration
Do not cancel your Airtable subscription before validating that all your automations and integrations work on NocoDB or Grist. Plan for a double-running period of at least two weeks. Export a complete copy of each base as CSV before starting, regardless of the migration method chosen — this is your safety net if partial import fails on a field type.
Deploy from ServOrbit in one click
ServOrbit offers pre-configured VPS templates for NocoDB and Grist. The template installs Docker, the ready-to-use docker-compose.yml, nginx reverse proxy and the Certbot chain — you enter your domain and database password, and the VPS is ready in minutes.
VPS plans start at {{vps.start.price}} with root access, dedicated IPv4 and SSD storage in our European datacenters. The VPS Administration option is available if you prefer to delegate system maintenance.