Database migrations,
like magic.

Describe your schema in your own words. Cadabra writes the SQL. Supports PostgreSQL, MySQL, and SQLite.

$brew install cadabra

Up and running in 60 seconds

terminal
$ cadabra prompt "create a users table with id integer primary key, name text not null, email text unique"
Generated migration: 20241023153045_create_users_table
   migrations/20241023153045_create_users_table/up.sql
   migrations/20241023153045_create_users_table/down.sql

$ cadabra apply
Applying migrations...
 20241023153045_create_users_table
All migrations applied successfully.

$ cadabra status
Migration Status:
─────────────────────────────────────────────────
 applied  20241023153045 - create_users_table
  pending  20241023154000 - add_posts_table

Everything you need. Nothing you don't.

Natural Language

Describe your schema in your own words. Cadabra writes the SQL.

Multi-Database

PostgreSQL, MySQL, MariaDB, and SQLite out of the box.

Fast & Tiny

6.8 MB binary. No JVM, no runtime. Instant startup.

Clean Structure

Separate up.sql and down.sql files in timestamped directories.

Docker-Ready

Built-in --wait flag with retry logic for container environments.

Dry-Run Mode

Preview exactly what SQL will run before committing changes.

How Cadabra compares

FeatureCadabradbmateFlywayLiquibase
Binary Size6.8 MB30 MB~40 MB~30 MB
LanguageRustGoJavaJava
Natural Language
Multi-DB
Separate Up/Down
Dry-Run
Docker Wait
Open SourcePartial

Manage migrations from your editor

The Cadabra VS Code extension gives you a sidebar for viewing migration status, applying and rolling back — all without leaving your editor.

  • Sidebar migration view with applied/pending status
  • One-click apply and rollback
  • Database connection management
  • Auto-refresh on file changes
Install Extension

Get started in 3 steps

1

Install

$cargo install cadabra
2

Configure

$export DATABASE_URL="postgres://user:pass@localhost:5432/mydb"
3

Migrate

$cadabra prompt "create users table with id integer primary key, name text, email text unique"