work-pm
Airtable logo

Should I self-host Airtable?

YESworth it

Grist is the closest thing to a self-hosted Airtable that actually exists: formula columns, linked records, views, API — sqlite-backed, one container. Per-seat pricing dies the day you move.

The math (nothing hidden, including your time)

Airtable (Team, per seat)$20.00/mo
VPS share + storage−$0.50/mo
Your maintenance: 20 min/mo at $20/h−$6.67/mo
Net saving$12.83/mo
Setup: 26 min measured (one-time)$8.67
Break-even0.7 months
Markup Index (price ÷ real self-host cost)2.8×

Price: source, checked 2026-08-06. Inputs are stored in git; every number above is derived, never hand-written.

What you lose

  • Airtable's automations marketplace and native integrations
  • Interface designer and the mobile apps

What you're paying Airtable for

  • relational tables & views
  • formula columns & linked records
  • forms into tables
  • API & automations
Grist running from the boot-verified compose file
Grist, running from the compose file on this page — screenshot from our verified instance, not marketing material.

Ranked alternatives

A spreadsheet with a real database underneath: Python formulas, linked records and row-level access rules, in one container.

gristlabs/grist-core · ★ 11,438 · last commit 0d ago · Apache-2.0

Hardware

Runs comfortably on a real VPS (2 GB+).

The tested compose file (our evidence, CI-booted)

# Grist — the Airtable-shaped spreadsheet-database, sqlite-backed single container
services:
  grist:
    image: gristlabs/grist:latest
    container_name: grist
    restart: unless-stopped
    environment:
      GRIST_SESSION_SECRET: change-me
      APP_HOME_URL: http://localhost:8484
    ports:
      - "8484:8484"
    volumes:
      - grist-data:/persist
    healthcheck:
      test: ["CMD-SHELL", "python3 -c \"import urllib.request;urllib.request.urlopen('http://localhost:8484/status')\" || exit 1"]
      interval: 5s
      timeout: 10s
      retries: 30
      start_period: 20s
volumes:
  grist-data:

Want a guided install instead? caniselfhostit.com/airtable has AI-agent prompts that assume a bare machine — that's their half of the stool, and it's good.

Verification

Protocol v1 · verified by zernonia on 2026-08-10 · setup measured at 26 min · AI assistant: claude-code (allowed & stated)

What broke

  • Boot to healthy measured at 33s on the 2GB reference env
Full timed log
# Airtable — verdict log

- **Date:** 2026-08-10
- **Verdict:** YES — worth it
- **Protocol:** v1 (2GB reference env, Docker preinstalled, AI assistant: claude-code)

## Setup evidence

- Compose: `compose/airtable-grist.yml`
- Boot to healthy: **33s** measured this session
- Setup time recorded: 26 min (boot + configuration to first working workflow)

## What broke / notes

- Boot to healthy measured at 33s on the 2GB reference env

## The call

Grist is the closest thing to a self-hosted Airtable that actually exists: formula columns, linked records, views, API — sqlite-backed, one container. Per-seat pricing dies the day you move.

Verdict history

  • 2026-08-10: unscored → YES — Initial verdict: Grist is the closest thing to a self-hosted Airtable that actually exists: formula columns, linked records, vi.