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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.5.9-cp313-cp313-win_amd64.whl (713.9 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.5.9-cp313-cp313-manylinux_2_28_x86_64.whl (805.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.9-cp313-cp313-macosx_11_0_arm64.whl (760.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.5.9-cp312-cp312-win_amd64.whl (714.0 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.5.9-cp312-cp312-manylinux_2_28_x86_64.whl (805.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.9-cp312-cp312-macosx_11_0_arm64.whl (760.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.5.9-cp311-cp311-win_amd64.whl (713.8 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.5.9-cp311-cp311-manylinux_2_28_x86_64.whl (807.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.9-cp311-cp311-macosx_11_0_arm64.whl (760.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9.tar.gz
Algorithm Hash digest
SHA256 ed0c3b1d295f14e0e6a4cfbdc613a5282f5d09f6ee3c87221dc5e881263d8ed0
MD5 4d6fa20e8aaebe912a5a781b2c05f27d
BLAKE2b-256 7eb7438c85e5e61c97fab5b90991b610035a4ad04ef9daf26ad1edef86c46a42

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 713.9 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 effc815a9fc14d9f1b94c7931c5abb935f3b6444bc8f54c0a0bb2c266672843c
MD5 9c2b005bb2b256f9965794506a80e257
BLAKE2b-256 76a7a8ceea945c15affe23094a9d99a517ea67c0deaa85eaf486a15cd119f6c3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 713.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cd55c23d0eb491b7c0da109c175dc35fb83aa672db2d34ad2a94ff77294a1a29
MD5 647a32f9fb00d9c36e29771e700eed37
BLAKE2b-256 d56c24ac471fa763876836eaa4946f0acfb5cb0b2c4f4cea0f4c7ce2961b277f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 805.8 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eb6246ebd05cc91dd8505a7a2221f8c6aff920995bed0362a6033e73eda6a8ac
MD5 53f4e57e8272a723f69bd903c649ff86
BLAKE2b-256 7be0c98c2a43500fec377cd571a03835c4cb69c1666a1dd69915b3f133974a02

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 760.4 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4b28a36916bd67d634ee93a3790495cdb673308b6ec936f4662f68b7c8cccc43
MD5 affa452794e1fb71a8f3c61e1a4aff28
BLAKE2b-256 7031a312d44f648ec3f71166579c00c7f2b42d4bb197f45f644bf6603201ad36

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 714.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 70ba77435432a001f6cf06e34c0cff99266635481557220c4df696e111c1dfeb
MD5 16ec24486ba197b4ff81df063558c5ad
BLAKE2b-256 8d29782bb0cb2e61f08b8484d477a8861b76580d68e9376e44f9748b1d0fee24

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 805.9 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea3d7e1b97543b61b38f99d29244df591b94b225549db8fca01804712ce53127
MD5 93d384eeb04bf240d443bf8e0b1a04fc
BLAKE2b-256 f4bb85991ca64eac44646bfee1017062d30fd0256427768db6d72be6792e1713

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 760.4 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 174ea243e98f650e076250fb52748d915fa9cbd0b73742a1840a5e3120d49158
MD5 0843a6e30b1482cc09a97ff0ee6db0ae
BLAKE2b-256 99b45bfa8be81018417d08c3bc0f0fed27d86e92871232a02f4021e2cabddbd7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 713.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 310cb003d33d24a5f739bc53fb59930034662f3741378f033c921f5f62b7f9d3
MD5 0f7267f518860e9311e2423b6ecadd24
BLAKE2b-256 056087f62ffc35409e7ac212c02ad538bff4b18fd6baab09c84caae4c566b418

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 807.3 kB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 faf849a4eddd6e21ff6899ad0ee2656fd19dbb79b9f905a0d9ae114c6d1dfbf8
MD5 5bf742d5ebabdca775006cc994872134
BLAKE2b-256 f1673a46eb77b2b94af5edc0b79835c6f2c253969e621aa78ac324c4fdbecc19

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.9-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 760.6 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61520a2334161bbb67adb02dc130038a6826da9438418a896c870fa6ff1064ed
MD5 3bd2e1363768de007b1fc8416250a353
BLAKE2b-256 724c60c7de039dc203453ecb6cafce79ea84f9721cc03138a3378ec288b51a04

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