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.6.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.6-cp314-cp314-win_amd64.whl (704.4 kB view details)

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.5.6-cp313-cp313-win_amd64.whl (704.4 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.5.6-cp313-cp313-manylinux_2_28_x86_64.whl (796.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.6-cp313-cp313-macosx_11_0_arm64.whl (750.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.5.6-cp312-cp312-win_amd64.whl (704.5 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.5.6-cp312-cp312-manylinux_2_28_x86_64.whl (796.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.6-cp312-cp312-macosx_11_0_arm64.whl (750.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.5.6-cp311-cp311-win_amd64.whl (704.2 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.5.6-cp311-cp311-manylinux_2_28_x86_64.whl (797.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.6-cp311-cp311-macosx_11_0_arm64.whl (751.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6.tar.gz
Algorithm Hash digest
SHA256 49a75a93f9d02c4937dfb4244f56dbee9f874772228bd6edff3303d08611cad0
MD5 7a861372fe130a6068455d64709cb119
BLAKE2b-256 a5f8e49bb9274062c6d550c6b38147c4c264b3955874f885da2f620f85895e74

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 704.4 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 cc5a0c73d16a3fcc1641500c5f840608cd6b65d85e1e0aad0fa77e98df6ca000
MD5 2dc494da44f91a1cea0836504cb55f8c
BLAKE2b-256 790cb16533a1236e7d3a3eb5656923b771b84062d44987b889e829d6a8cd4cb8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 704.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a0d32a4caa099653f3cdfa36d1e71975d8bde98b6db8b2716e5be7b9af8d08b0
MD5 1875e3fc23de6cd12e0733a6d1ce4543
BLAKE2b-256 c9fd18e748f8987e72074be71a7f60fe99870f481cd2a63583c4bff1865d67d3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 796.3 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 785e7fbccabb8b6b043b320351338d24cf4e2121c1fd41c36670bf704e10f383
MD5 34873fc37f8e3d9bf3ce97a7f9931268
BLAKE2b-256 4cf287a8331c1120b93b5bb31d2506d47f5fe20537c74147abbd6575eb2cf5b6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 750.9 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ada9092d6acacadad8acde1997f9e717094d42df984fe4cc207a62e064815140
MD5 9d568d831b85597b79b0572e08394b2a
BLAKE2b-256 c1de8ca0bff6edfd5b5551ae7e28cfc0fc2a6060525f71f496d95cea177779de

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 704.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b8fdef3621beeb94a3d597a31073afb35e97cf95d36c8d9619519b8d5ba01769
MD5 9e2d811af010f371fba77b9ccc451f0b
BLAKE2b-256 4a8d62e45bdce759b92d97dc2e15f3f5d3f4e39b12d77cef9564ac5177a04e37

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 796.4 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d3731d89a8469d44a6e70bf19ad8a592e754c7abe39569e72b37f592ac376c04
MD5 8b7e4c2ace4e41e3f0c70f0ec8c1ec4d
BLAKE2b-256 8f62f4f08da03b6ddf3e39f1d359c24ac9096e522a05f052893dfc67b9402785

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 750.9 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 01157697821612a6349c9aa33d481b25006022434cbdad18c7dd3a514bce7a60
MD5 f003fb9dd7a5f548d8e789e3fcffe512
BLAKE2b-256 3734e4c79c0af4fd1e7a81e531e4e0cfc38612998080e316c7223dabb69da348

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 704.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d80441888eb905eee776c4ab5456c52ed4116920f85dad1ca724542f8a518a9a
MD5 9e14b0ce2e75ed83070432ef497f04e1
BLAKE2b-256 edc01556a483c37fe7183fd0831730a4294b7095d23478ea984250b07e9136a1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 797.8 kB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cee45f0cf99cde9e0e3021ed7622f5c5e29c43597bb0be7443f023976678850e
MD5 2f5b1576da8ea19948d776a08cf3c650
BLAKE2b-256 d7080a135ce058ca924424539391459b0ccc08f72393660e2595f230fce8ffdd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.6-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 751.2 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7405edeaac9ee46a91a6a610030b265d06826fd13c2de59eedb644d6c8a784cc
MD5 a4f7ae0bd6f38f231d44e9ceae0f7d23
BLAKE2b-256 df06efc9520542ba721ca011851441a16c68b4ac5397b473df5b39a238772e05

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