Skip to main content

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.

PyPI Tests Python 3.11+ PostgreSQL 12+ License: MIT


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:

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fraiseql_confiture-0.4.2.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fraiseql_confiture-0.4.2-cp314-cp314-win_amd64.whl (628.5 kB view details)

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.4.2-cp313-cp313-win_amd64.whl (628.5 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.4.2-cp313-cp313-manylinux_2_28_x86_64.whl (713.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.4.2-cp313-cp313-macosx_11_0_arm64.whl (675.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.4.2-cp312-cp312-win_amd64.whl (628.6 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.4.2-cp312-cp312-manylinux_2_28_x86_64.whl (713.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.4.2-cp312-cp312-macosx_11_0_arm64.whl (675.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.4.2-cp311-cp311-win_amd64.whl (628.3 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.4.2-cp311-cp311-manylinux_2_28_x86_64.whl (715.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.4.2-cp311-cp311-macosx_11_0_arm64.whl (675.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file fraiseql_confiture-0.4.2.tar.gz.

File metadata

  • Download URL: fraiseql_confiture-0.4.2.tar.gz
  • Upload date:
  • Size: 1.2 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

Hashes for fraiseql_confiture-0.4.2.tar.gz
Algorithm Hash digest
SHA256 85fdab04d1406f031469ee2153933f673f0692dfb489ec819bc22063d2daaf14
MD5 be561b86bde82bb99b958bec5b604da0
BLAKE2b-256 9e9a61c8400c36c33fe5a848c097ee9c47bc68f14f7bb380c411eeb7982baf6f

See more details on using hashes here.

File details

Details for the file fraiseql_confiture-0.4.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: fraiseql_confiture-0.4.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 628.5 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

Hashes for fraiseql_confiture-0.4.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0abbb6304df07a943a34a44edc79a11c0bca105d202c6e0f002e7469a07ebdd2
MD5 a0ee3545fd2af4f39ab5966923134490
BLAKE2b-256 8a9547375aa16e25920ef26944e28abe26e5d361764c72831f33b459e23aa8c2

See more details on using hashes here.

File details

Details for the file fraiseql_confiture-0.4.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: fraiseql_confiture-0.4.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 628.5 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

Hashes for fraiseql_confiture-0.4.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c64ad1517e8e265baee98105cf76c53c462b196e34dbe0fa06fe485b9f5bf8ff
MD5 174051332eb51a6995262a09e6cc2e18
BLAKE2b-256 7d61a452ffa04b7cdc1bdd08f53ce7d5224d79457db88840798563a3396d999a

See more details on using hashes here.

File details

Details for the file fraiseql_confiture-0.4.2-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: fraiseql_confiture-0.4.2-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 713.6 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

Hashes for fraiseql_confiture-0.4.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d8660dc06655a3fb6c1ae9e86d5f32f979b94719f5f5034500febc4c02211c4d
MD5 d256cc10829d38d6054bf881ef293a9b
BLAKE2b-256 624b8bc007bbc817477b18986265d0ffe74fedf82529aa205416a67dd76a0763

See more details on using hashes here.

File details

Details for the file fraiseql_confiture-0.4.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fraiseql_confiture-0.4.2-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 675.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

Hashes for fraiseql_confiture-0.4.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 56261957d572b7bf4d73c9a3da3b34f92d80e1a8bf4fbafaa1f6014c7228fb29
MD5 6e42b65bf71c36ba3f0141eea10627a5
BLAKE2b-256 261979a1305d4d18d950db939cb524e71fb68efbc53ecd929f75e3e04551b2fa

See more details on using hashes here.

File details

Details for the file fraiseql_confiture-0.4.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: fraiseql_confiture-0.4.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 628.6 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

Hashes for fraiseql_confiture-0.4.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 64b15351128f0aada813262941993c146cea5f80006cdde9d21c11c6785b40ca
MD5 6267e3cbf8b77401b5e7a00da0aa7729
BLAKE2b-256 93843d38c8981e92617412bbfa0e57a8605b67c3040559f322c4c8d36b91e4d9

See more details on using hashes here.

File details

Details for the file fraiseql_confiture-0.4.2-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: fraiseql_confiture-0.4.2-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 713.7 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

Hashes for fraiseql_confiture-0.4.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b1d6c9adb34dd91de3866c6acab69926f456d535446d09aa9ad35b76514cbec5
MD5 31c183432ffd98a3fbcd2ab8b60f53b6
BLAKE2b-256 e65136586fcd65022c542a072ed37f79d0df704e17735fbca2050f28f86ae31b

See more details on using hashes here.

File details

Details for the file fraiseql_confiture-0.4.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fraiseql_confiture-0.4.2-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 675.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

Hashes for fraiseql_confiture-0.4.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 46d1fef4b6a03ad59cc3e9efd74365fd53bc1d55e044e9a95aa1a481608d1f61
MD5 0cf1ae2bed0df930e701f1751b5c7897
BLAKE2b-256 7220931248c16ea5415b084fa79752133ab1242c592dc5a7b647b8e4c45aa8e0

See more details on using hashes here.

File details

Details for the file fraiseql_confiture-0.4.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: fraiseql_confiture-0.4.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 628.3 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

Hashes for fraiseql_confiture-0.4.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 97a65ee478a8fbbc3cf13dc0c814b3ca2d596253ffe2d1243388c6658c61c34c
MD5 84a0b514af8b77404549f73dc16b5aee
BLAKE2b-256 fadfaa1c8dd730baee2e0f4d624ceff505e2eb1d7fb40651cf37247d3d09145b

See more details on using hashes here.

File details

Details for the file fraiseql_confiture-0.4.2-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: fraiseql_confiture-0.4.2-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 715.1 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

Hashes for fraiseql_confiture-0.4.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 02c226f85625a0ad7b30e4e3b0b009c1eac5a2eb5ea56cd8b1a8757ae4af0301
MD5 0d96ecda21b7e1796b619c862f7e3a05
BLAKE2b-256 626a9d540f862e9e4cd2ad7b66c3a781e19b0df0356b92c768ca7d6eb625ace9

See more details on using hashes here.

File details

Details for the file fraiseql_confiture-0.4.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fraiseql_confiture-0.4.2-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 675.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

Hashes for fraiseql_confiture-0.4.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3c55d1f30e8ebd4c6e71577898343b432de554f7a3972cc5a3a3c762dd9c2565
MD5 caa1c1897c5d69d5e0e67e36f66bf4bf
BLAKE2b-256 4149d50b16214e74a383cc7c7dc2e0143d7177de97e61b1e8ae593354f24139d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page