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.5.4.tar.gz (1.4 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.5.4-cp314-cp314-win_amd64.whl (696.8 kB view details)

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.5.4-cp313-cp313-win_amd64.whl (696.8 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.5.4-cp313-cp313-manylinux_2_28_x86_64.whl (788.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.4-cp313-cp313-macosx_11_0_arm64.whl (743.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.5.4-cp312-cp312-win_amd64.whl (696.9 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.5.4-cp312-cp312-manylinux_2_28_x86_64.whl (788.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.4-cp312-cp312-macosx_11_0_arm64.whl (743.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.5.4-cp311-cp311-win_amd64.whl (696.7 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.5.4-cp311-cp311-manylinux_2_28_x86_64.whl (790.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.4-cp311-cp311-macosx_11_0_arm64.whl (743.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4.tar.gz
Algorithm Hash digest
SHA256 b5123f0ca5065ff6a2ecb4bc009296aba3ae4392b4fe433ee517da48d211181c
MD5 96fad4a3217f899334018a6c756b141c
BLAKE2b-256 82e0910b3234215c7576a112a35bcd55b3bdc1b70142e05e3515defc53a1907d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 696.8 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5042fcdb96c1e10983d5672b5f7e52757ab2436bc3fec59c83af02de98f184d4
MD5 e6871afb74de611fd4414168b433ffa0
BLAKE2b-256 6442f1a8509b15e5ab504b1c95f9ac4dafd373c1bc58a9ec51c14085cdf0f75e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 696.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b0648ae852f8424ab78f9962d4dd17fa60e295578e70f858cf8c33469310b4cf
MD5 d8e7a85baad8b2d45dbd938bfa2acd00
BLAKE2b-256 f3fac8ec682b7b2d6ad1fb1e00bbb21d2c2604c3766f177dcc5d77b5388e5735

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 788.8 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b38121efab6f4ee948f60c551593eeafcc40fff570b7934c351889b83168e2e8
MD5 ef31d29360a00074deac1504c0313cd7
BLAKE2b-256 356b364da17557a837b6a96d37638d3d13f72b94c3900f56502f7995a8d45b62

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 743.4 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc6faff0dcc54b4a3df3f80236fca023931d214fe3380a4a5d92c53047fb5f93
MD5 7ace85d892d101c6eb628ae47dabe9d1
BLAKE2b-256 5ce8334fe19103f93a9d63fe6438d464d7ef928f910de2ce2a47631a020a9038

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 696.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d7207406cf82c2899701e30ec641c1db83c5be7ef5839da7eafa97608c1acea3
MD5 5ca735d09c90d0c9fc74b2991d8d56b8
BLAKE2b-256 b6f6cd7061abf117cac263a1f1e0c0f345d9686167d8c711f02c27eff22c4e28

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 788.9 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b0015307d987aa714dd2a47f24d1e6e4568ce92250e41c810335b18f97eee006
MD5 7ad27acd0dde26ac6a3d52d532b2cdce
BLAKE2b-256 1c1f29f846953f1d9112dc84a825cd0df2ab71a91952d8bab7abbaa6da535289

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 743.4 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a6e6719c64f2c51acab76f361d303e53bcf792ca4dae545efbcdf0e5fafcd0ac
MD5 75787d89a3ef5605c85bfe796f5c0b75
BLAKE2b-256 2d44b96b650f1e38e7564ffe16e8bbc2fee76c468fd9bbdd7d8f805535593669

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 696.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3a8be80c892555b7da80b28f3f6753882da9f5a37d60a6a550c2c0bc2e69c5b9
MD5 2db9798977a1c207e72b81ac0865a36b
BLAKE2b-256 dad07859fd8c4c7766ba203d17001ef05e569078793abdc608bcdb19698f26cb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 790.3 kB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f5136d1ace81fa707aae9d808bc55fbddcd5954865b39f990e09dcd289e356ff
MD5 fb7ab4c17422eb9c88d9c63306fa2591
BLAKE2b-256 2762770d89e4e6f029faf5b7dff42a17cc827bc43477bf24d3bb07e823c1e11a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.4-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 743.6 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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.5.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6fb7885982c3e8cf1ad0f3b03a344558815eaef28c774872f08e069ebe5118a1
MD5 36bb52c15469f2494ef8613e66271075
BLAKE2b-256 990172a31cebb62f9935858940de78f9ce731864e861df5d0c0117703b111dbb

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