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.1.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.5.1-cp314-cp314-win_amd64.whl (683.7 kB view details)

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.5.1-cp313-cp313-win_amd64.whl (683.7 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.5.1-cp313-cp313-manylinux_2_28_x86_64.whl (775.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.1-cp313-cp313-macosx_11_0_arm64.whl (730.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.5.1-cp312-cp312-win_amd64.whl (683.8 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.5.1-cp312-cp312-manylinux_2_28_x86_64.whl (775.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.1-cp312-cp312-macosx_11_0_arm64.whl (730.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.5.1-cp311-cp311-win_amd64.whl (683.5 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.5.1-cp311-cp311-manylinux_2_28_x86_64.whl (777.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.1-cp311-cp311-macosx_11_0_arm64.whl (730.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1.tar.gz
Algorithm Hash digest
SHA256 f9837e8bfb61dcf6a8270e291ba54c0204acd3c4f25f145c6ee1904c1b53ec83
MD5 c56d15bacbc8c2a3849fd18fa38dbeb6
BLAKE2b-256 298b50c5f5afb7a303184a8f4ed4941d310dd493a2555ea24b630ff070c27a97

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 683.7 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4c0027b516782d3feb50f8dc514188af1a798ed3e95234bf03cb31c5d11c0b5f
MD5 468d0eab91cb34db64623f207a4957b5
BLAKE2b-256 68425cc81aa2562cc94da8a3f048eaab3a234ba5e041a833d5f6549319ef300f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 683.7 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2dec4991ed7c50de3c88b5393f7e9ef2a8274fe578d75a8653f4ad82865b63f0
MD5 96afdc22b3fd82b9e2b78114ef9e8288
BLAKE2b-256 ebef52f142021e2f1aa67c6d5c48d7c304bdc671ee4d33c192e237458e1c7711

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 775.6 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 10622cef76f51ecb4d0a4ee3de797bf6596d373c666b0e43151f7b5f54c5286b
MD5 7f17044ea7e314024b89aa0765464980
BLAKE2b-256 0ddeb0dd7a4dd9d2a2c005c43aa07a281db06b39e19b2b4f99322d24de8726b6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 730.3 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f2d668a2cfeab0cea340a162c05ece3e3916b6e0e4a3d391de3280117d6eb22d
MD5 55a35d1ac55670c38963cc4461baaf86
BLAKE2b-256 c9abfa1d7215f1f37bf001761bbbe46185446d7f783b33dc837dec6b1f043219

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 683.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cbdf2790e56ad61f3b5b74d2ce2a2a77bfd8623499e79bdff80666ac110105b4
MD5 f48aa343e20cb61b0754c4c7ee549796
BLAKE2b-256 af29aafdceff79a6c40a665d122379eda04e69c54b87ce80b90d0f8cc5641bac

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 775.6 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2a2011669ac284249adeb376c3e315525ddeeec46bca9cae64af98063afc8646
MD5 4f3fcb1a12bdaded8a89db9754421575
BLAKE2b-256 b65f240559d9ce1b12606608b64571f65e87fe2304e91ab65c9b0714ac5da3bb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 730.3 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 50c47b0a92a35a2c6b5b67c5899d79a1ce9d7467ac2d055bb6c75d215ef01475
MD5 34444920120636080399f2278aab6847
BLAKE2b-256 13f08b454710e55a79a48a107a28cc046d4b96b6e3ca316b1b8b15c7529c26e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 683.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 15b28a941f5799c397023a64af4520294084f1ff319926bac824f7a8f5b154c0
MD5 553af7b02a515bee9786bedac26810bb
BLAKE2b-256 c3255bc7aa54dc32276007a187135c853db83d4e3190358033c26e4b5b75038d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 777.1 kB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9801e88df563dbb747eeb85035d2b85ea46db4d275d1cbd125035267068cfb43
MD5 746c0f73a84d0acb74f05447a8fa3226
BLAKE2b-256 7909e8cd5d4d455fc9a11f0ab8dcb9d906039163bdaa193de1d331a467a73fef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.1-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 730.5 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f4f4f2549320affb38c14e672bb496c3c432c81fd095cd887d758a14b7ea2fe9
MD5 cf2d2fdcb266b9097adaee6986fb4245
BLAKE2b-256 fd06088aa4e588b62346be62094b7a73fb67fb0f39f0be9154f1f050aa7c29b7

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