Database migrations,
like magic.
Describe your schema in your own words. Cadabra writes the SQL. Supports PostgreSQL, MySQL, and SQLite.
$brew install cadabraUp 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
| Feature | Cadabra | dbmate | Flyway | Liquibase |
|---|---|---|---|---|
| Binary Size | 6.8 MB | 30 MB | ~40 MB | ~30 MB |
| Language | Rust | Go | Java | Java |
| Natural Language | ||||
| Multi-DB | ||||
| Separate Up/Down | ||||
| Dry-Run | ||||
| Docker Wait | ||||
| Open Source | Partial |
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
Get started in 3 steps
123
Install
$cargo install cadabraConfigure
$export DATABASE_URL="postgres://user:pass@localhost:5432/mydb"Migrate
$cadabra prompt "create users table with id integer primary key, name text, email text unique"