PostgreSQL schema evolution with built-in multi-agent coordination ๐
Project description
Confiture ๐
PostgreSQL migrations with multi-agent coordination and 4 flexible strategies
Build fresh databases in <1 second. Zero-downtime migrations. Multi-agent conflict detection. Production data sync with PII anonymization.
Why Confiture?
Problem: Traditional migration tools replay every migration on every build (slow, brittle, maintains technical debt).
Solution: DDL files are the single source of truth. Just execute your schema once. Fresh databases in <1 second.
Multi-Agent Safe: Automatic conflict detection prevents teams and agents from stepping on each other.
Quick Start
Installation
pip install fraiseql-confiture
Basic Usage
# Initialize project
confiture init
# Write schema DDL files
vim db/schema/10_tables/users.sql
# Build database (<1 second)
confiture build --env local
# Generate and apply migrations
confiture migrate generate --name "add_bio"
confiture migrate up
Team Workflow (Multi-Agent)
# Register intention before making changes
confiture coordinate register --agent-id alice --tables-affected users
# Check for conflicts (by other agent)
confiture coordinate check --agent-id bob --tables-affected users
# โ ๏ธ Conflict: alice is working on 'users'
# Complete when done
confiture coordinate complete --intent-id int_abc123
Core Features
๐ ๏ธ Four Migration Strategies
| Strategy | Use Case | Command |
|---|---|---|
| Build from DDL | Fresh DBs, testing | confiture build --env local |
| Incremental | Existing databases | confiture migrate up |
| Production Sync | Copy prod data (with anonymization) | confiture sync --from production --anonymize users.email |
| Zero-Downtime | Complex migrations via FDW | confiture migrate schema-to-schema |
๐ค Multi-Agent Coordination
- โ Automatic conflict detection
- โ Intent registration and tracking
- โ JSON output for CI/CD
- โ <10ms per operation
๐ฑ Seed Data Management
- โ Sequential execution (solves PostgreSQL parser limits on 650+ row files)
- โ Per-file savepoint isolation for error recovery
- โ Continue-on-error mode (skip failed files)
- โ Prep-seed validation (5-level orchestrator)
- โ 5-level validation (static โ full execution)
- โ Catch NULL FKs before production
- โ Pre-commit safe (Levels 1-3)
- โ Database validation with SAVEPOINT safety
๐ Git-Aware Validation
- โ Detect schema drift vs. main branch
- โ Enforce migrations for DDL changes
- โ Pre-commit hook support
๐ง Developer Experience
- โ Dry-run mode (analyze before applying)
- โ Migration hooks (pre/post)
- โ Schema linting
- โ PII anonymization
- โ Optional Rust extension
- โ Python 3.11, 3.12, 3.13
Documentation
Getting Started: docs/getting-started.md
Guides:
- Build from DDL
- Incremental Migrations
- Production Data Sync
- Zero-Downtime Migrations
- Sequential Seed Execution โญ NEW
- Multi-Agent Coordination
- Prep-Seed Validation
- Migration Decision Tree
- Dry-Run Mode
API Reference: docs/reference/
Examples: examples/
Project Status
โ v0.4.0 (February 4, 2026) - RELEASED
Phase 9 Addition (v0.4.0):
- โ Sequential seed execution (solves PostgreSQL parser limits on 650+ row files)
- โ Per-file savepoint isolation for error recovery
- โ Continue-on-error mode for partial seeding
- โ 29 new tests for seed workflow
- โ Comprehensive documentation with 8 examples
- โ Real database integration testing
What's Implemented:
- โ All 4 migration strategies
- โ Sequential seed execution with savepoints (NEW in v0.4.0)
- โ Multi-agent coordination (production-ready, 123+ tests)
- โ Prep-seed validation (5 levels, 98+ tests)
- โ Git-aware schema validation
- โ Schema diff detection
- โ CLI with rich output
- โ Comprehensive tests (4,100+)
- โ Complete documentation
โ ๏ธ Beta Software: All features implemented and tested, but not yet used in production. Use in staging/development first.
Contributing
git clone https://github.com/fraiseql/confiture.git
cd confiture
uv sync --all-extras
uv run pytest
See CONTRIBUTING.md and CLAUDE.md.
Author & License
Vibe-engineered by Lionel Hamayon ๐
MIT License - Copyright (c) 2025 Lionel Hamayon
Making jam from strawberries, one migration at a time. ๐โ๐ฏ
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fraiseql_confiture-0.4.4.tar.gz.
File metadata
- Download URL: fraiseql_confiture-0.4.4.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b1bfd56737102c45aacfd5eea3a772871b9042c8be222b8571b245e5d26ff1c
|
|
| MD5 |
9b8e7553c0cd00681a1c3054f6306cf8
|
|
| BLAKE2b-256 |
040c300890cd41651c3e8cedb23cbdaa346464cb1d435930af7de14252ddd50d
|
File details
Details for the file fraiseql_confiture-0.4.4-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: fraiseql_confiture-0.4.4-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 683.8 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89857d5a8f8e48dfa614be39451eeea8057d40a329a0eb64bd371a649570654a
|
|
| MD5 |
8048427f523d7255c6fb017d97f139fc
|
|
| BLAKE2b-256 |
574f48b2b4c43b0d81f729151f2b9d6ada0d26b3fac84d6413624a1ea439ee5d
|
File details
Details for the file fraiseql_confiture-0.4.4-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: fraiseql_confiture-0.4.4-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 683.8 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f72b11dadc504626561df02dda484e6ab65536ad2cf14c9e4bbb1570fed3400
|
|
| MD5 |
ffe1bfb7ce3f05854d517bc96cec3c62
|
|
| BLAKE2b-256 |
7f02187f45024defbe95ba53ce330a56bfc04bd3eb4e07cfe095beec4193df18
|
File details
Details for the file fraiseql_confiture-0.4.4-cp313-cp313-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: fraiseql_confiture-0.4.4-cp313-cp313-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 775.8 kB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62834c0452cace89509fdef9d5cffdd106bce87c014bd6d3b02fea6d329fe4e7
|
|
| MD5 |
7fa0381005802d5c178134b3d1020a93
|
|
| BLAKE2b-256 |
2fb6ecbeddb2153ae3fc6d4697a26aa2fcaaa39caa629e14cc4b94b6445c0bc8
|
File details
Details for the file fraiseql_confiture-0.4.4-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: fraiseql_confiture-0.4.4-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 730.5 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4345dbcf1cdd12b13c39bb8c820ee30d8c15637c1a36ecb473114f1c1d3a28d
|
|
| MD5 |
b2ac10a22b987d2e52e21f3c7c8ec76b
|
|
| BLAKE2b-256 |
5363bcac0148d08de781b6dab4e2f0342487b3733e8ccbfdbcd167cd1d529602
|
File details
Details for the file fraiseql_confiture-0.4.4-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: fraiseql_confiture-0.4.4-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 683.9 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4af2c2a590225c6c576c4469aef35e3dbdcb62008ef2e544a867fb70bcbc023
|
|
| MD5 |
7695b066aa5c712c4c7f67e52c582748
|
|
| BLAKE2b-256 |
daaaecdd24ed0059efb325e1a1576369f0804d5c16d2dd93dd4a844fe96cec96
|
File details
Details for the file fraiseql_confiture-0.4.4-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: fraiseql_confiture-0.4.4-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 775.8 kB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eda1c65e9cdd266adc9dd34505b2851d039cd6c379d60054dc19118aa45bd652
|
|
| MD5 |
693042f8b32a131b88f9419fb2a32b37
|
|
| BLAKE2b-256 |
52871f51a8a123dd782446eb6085ee086e140426898c0fabd45b62b70c1e241b
|
File details
Details for the file fraiseql_confiture-0.4.4-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: fraiseql_confiture-0.4.4-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 730.5 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f52c4feca690d7d739f7bab072aa4b117ce308e79840c8e051b38f155d518aaf
|
|
| MD5 |
ef4710ad77d4d673516175559c3eba35
|
|
| BLAKE2b-256 |
8c7cc623514096d890e6cdccc2497a510e719380fcf4b20d6ed00203ddd70b0d
|
File details
Details for the file fraiseql_confiture-0.4.4-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: fraiseql_confiture-0.4.4-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 683.6 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b36b7fc973c192f0ec9f78e9e6b99c492b8be70ba2ce29bffc5a7a923275db7b
|
|
| MD5 |
85f92e23fc66ff274bf46d7e402893ab
|
|
| BLAKE2b-256 |
be9bbda2704121f8454ced80d9b8d49ad8552c0e38e7a9786246d051ffabc3bc
|
File details
Details for the file fraiseql_confiture-0.4.4-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: fraiseql_confiture-0.4.4-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 777.3 kB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85a7d7c236f16dbee562caa49bfdcdbdea49ec432b1ed7ca070d87ef5c551de0
|
|
| MD5 |
26ecbe86284e233b42d011e4a6f8cf8c
|
|
| BLAKE2b-256 |
b590420e22f79c021306a3a256750053e4a2e09ac63727a198672ef929403809
|
File details
Details for the file fraiseql_confiture-0.4.4-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: fraiseql_confiture-0.4.4-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 730.7 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c54da623136ff25f43326243caedd1e4875b5afa49fee927c9562a044d4e02a
|
|
| MD5 |
22c19d5e151a8fc4d5fd01a13e5bca01
|
|
| BLAKE2b-256 |
98c87c68a9b4f46043c27872ce2c2ee5c9dc3195d8996784fdea22b883e7389c
|