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.4.tar.gz (1.3 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.4-cp314-cp314-win_amd64.whl (683.8 kB view details)

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.4.4-cp313-cp313-win_amd64.whl (683.8 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.4.4-cp313-cp313-manylinux_2_28_x86_64.whl (775.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.4.4-cp313-cp313-macosx_11_0_arm64.whl (730.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.4.4-cp312-cp312-win_amd64.whl (683.9 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.4.4-cp312-cp312-manylinux_2_28_x86_64.whl (775.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.4.4-cp312-cp312-macosx_11_0_arm64.whl (730.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.4.4-cp311-cp311-win_amd64.whl (683.6 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.4.4-cp311-cp311-manylinux_2_28_x86_64.whl (777.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.4.4-cp311-cp311-macosx_11_0_arm64.whl (730.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Hashes for fraiseql_confiture-0.4.4.tar.gz
Algorithm Hash digest
SHA256 3b1bfd56737102c45aacfd5eea3a772871b9042c8be222b8571b245e5d26ff1c
MD5 9b8e7553c0cd00681a1c3054f6306cf8
BLAKE2b-256 040c300890cd41651c3e8cedb23cbdaa346464cb1d435930af7de14252ddd50d

See more details on using hashes here.

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

Hashes for fraiseql_confiture-0.4.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 89857d5a8f8e48dfa614be39451eeea8057d40a329a0eb64bd371a649570654a
MD5 8048427f523d7255c6fb017d97f139fc
BLAKE2b-256 574f48b2b4c43b0d81f729151f2b9d6ada0d26b3fac84d6413624a1ea439ee5d

See more details on using hashes here.

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

Hashes for fraiseql_confiture-0.4.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3f72b11dadc504626561df02dda484e6ab65536ad2cf14c9e4bbb1570fed3400
MD5 ffe1bfb7ce3f05854d517bc96cec3c62
BLAKE2b-256 7f02187f45024defbe95ba53ce330a56bfc04bd3eb4e07cfe095beec4193df18

See more details on using hashes here.

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

Hashes for fraiseql_confiture-0.4.4-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 62834c0452cace89509fdef9d5cffdd106bce87c014bd6d3b02fea6d329fe4e7
MD5 7fa0381005802d5c178134b3d1020a93
BLAKE2b-256 2fb6ecbeddb2153ae3fc6d4697a26aa2fcaaa39caa629e14cc4b94b6445c0bc8

See more details on using hashes here.

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

Hashes for fraiseql_confiture-0.4.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4345dbcf1cdd12b13c39bb8c820ee30d8c15637c1a36ecb473114f1c1d3a28d
MD5 b2ac10a22b987d2e52e21f3c7c8ec76b
BLAKE2b-256 5363bcac0148d08de781b6dab4e2f0342487b3733e8ccbfdbcd167cd1d529602

See more details on using hashes here.

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

Hashes for fraiseql_confiture-0.4.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b4af2c2a590225c6c576c4469aef35e3dbdcb62008ef2e544a867fb70bcbc023
MD5 7695b066aa5c712c4c7f67e52c582748
BLAKE2b-256 daaaecdd24ed0059efb325e1a1576369f0804d5c16d2dd93dd4a844fe96cec96

See more details on using hashes here.

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

Hashes for fraiseql_confiture-0.4.4-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eda1c65e9cdd266adc9dd34505b2851d039cd6c379d60054dc19118aa45bd652
MD5 693042f8b32a131b88f9419fb2a32b37
BLAKE2b-256 52871f51a8a123dd782446eb6085ee086e140426898c0fabd45b62b70c1e241b

See more details on using hashes here.

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

Hashes for fraiseql_confiture-0.4.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f52c4feca690d7d739f7bab072aa4b117ce308e79840c8e051b38f155d518aaf
MD5 ef4710ad77d4d673516175559c3eba35
BLAKE2b-256 8c7cc623514096d890e6cdccc2497a510e719380fcf4b20d6ed00203ddd70b0d

See more details on using hashes here.

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

Hashes for fraiseql_confiture-0.4.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b36b7fc973c192f0ec9f78e9e6b99c492b8be70ba2ce29bffc5a7a923275db7b
MD5 85f92e23fc66ff274bf46d7e402893ab
BLAKE2b-256 be9bbda2704121f8454ced80d9b8d49ad8552c0e38e7a9786246d051ffabc3bc

See more details on using hashes here.

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

Hashes for fraiseql_confiture-0.4.4-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 85a7d7c236f16dbee562caa49bfdcdbdea49ec432b1ed7ca070d87ef5c551de0
MD5 26ecbe86284e233b42d011e4a6f8cf8c
BLAKE2b-256 b590420e22f79c021306a3a256750053e4a2e09ac63727a198672ef929403809

See more details on using hashes here.

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

Hashes for fraiseql_confiture-0.4.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4c54da623136ff25f43326243caedd1e4875b5afa49fee927c9562a044d4e02a
MD5 22c19d5e151a8fc4d5fd01a13e5bca01
BLAKE2b-256 98c87c68a9b4f46043c27872ce2c2ee5c9dc3195d8996784fdea22b883e7389c

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