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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.5.5-cp313-cp313-win_amd64.whl (698.8 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.5.5-cp313-cp313-manylinux_2_28_x86_64.whl (790.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.5-cp313-cp313-macosx_11_0_arm64.whl (745.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.5.5-cp312-cp312-win_amd64.whl (698.9 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.5.5-cp312-cp312-manylinux_2_28_x86_64.whl (790.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.5-cp312-cp312-macosx_11_0_arm64.whl (745.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.5.5-cp311-cp311-win_amd64.whl (698.6 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.5.5-cp311-cp311-manylinux_2_28_x86_64.whl (792.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.5-cp311-cp311-macosx_11_0_arm64.whl (745.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5.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.5.tar.gz
Algorithm Hash digest
SHA256 bbcaba5444ce13a40f975675a40a6b17b13f2afd53d911d684ebd44da9451e0c
MD5 b74e136af127edcad1112d4e324cdb0a
BLAKE2b-256 9991d7bb207a5cc1f21c68fc4fc3d1bfe3b518e9f4cb2ed4ffe9f25949929265

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 698.8 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.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1dc6abb30460d9f1f0aa3c945785d410dbb8ec7598b85c697f5dc4df1f833432
MD5 55662ceb7b54ec8e064b15c8bff46ef3
BLAKE2b-256 004602f2530b14c567db6c5b5cf8739ffd387bbcbe932dc8696f3acf178a1cf8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 698.8 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.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4d9e13570930fd691e83d5c511a7ec876c5201f6b796eda62415d809b34e3060
MD5 acc815370590bc6e5e847acb8a4c20f6
BLAKE2b-256 77f3bce17f9bbb7f354931fdeb0484b666007fc84b244ec1d41b88005215e2b9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 790.8 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.5-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 842a04c08e1eeedf85a810854f702e1efd2ebc989667efa1ae155ba023ef1eb7
MD5 f50d9e4492434928be40eb6ca4c013c9
BLAKE2b-256 3474dd52b3d903848861491932f7e22b13ef316c85f5aab1cc54fa3e00240c03

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 745.4 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.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 577bdcddf9362a387e904cd0dd407edbea2434f21a282d429a0e6ca5e5a4da37
MD5 d8a847f10983393a800b0c767c6c9dbe
BLAKE2b-256 616ff0e41a7da5d24ded400bcdedef711990dd2ceb5cc3fd95c07357828c4887

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 698.9 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.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5ff5929f3d07fea95a93a4898690c97e26016b28eed4065069a1a659d39d7083
MD5 0d3a930549b3e6ddfaad89e87b94978b
BLAKE2b-256 5ca19e5a3bac9ab0782a4924049b369e08c94d2ea0f31f0146b4d316b86f67d3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 790.9 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.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8cafe9d288a791269c39a90d93c71145eb7240db7aa9b9fc381402faf353c49e
MD5 5c331282a79b00494c965a5471e106a3
BLAKE2b-256 e5ff69b19eff161808364a828f331df37d2a04cdaddcfb996d2874059218bcb7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 745.4 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.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e2325e6468f6c73c87ac638f494fe8a5490bbb2234d1ac9ddc605529466f1bb7
MD5 3bde33864dc779aafc7598ee203359ab
BLAKE2b-256 4d9770d124de05e9695db791fc4bfc39adecf3fc1a9da741b348e6e48bb40d99

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 698.6 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.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8c34372c9b736d861b3e9c70ea784221535574f4cb18766b22208c3d30f294c4
MD5 4f9e33b7c1b4ddce85614f3f1b117982
BLAKE2b-256 fd7b9bd201be9838588775653a2cd9fd776b86fdd706d88a98620a382ae8c5fc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 792.3 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.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 23a3fe8bbf64c3276f3a67fe45981c1f6e386560bf1b5de9d5fc14b1a45d9246
MD5 012a264bd5cfc56da08d7de67be23668
BLAKE2b-256 f21e392281e7d8a1801f9c31cddff06d0ca31f907705efc71e2e2e20be9ad42f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.5-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 745.6 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.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b30ff783bf14486bf798fdde5fa0e47f889790954899606d074b3540f3e56255
MD5 0d0bdb74d3544e036b9575ce442e2293
BLAKE2b-256 59f5ebad5e49e2e646ff92548efbcc0dafe547d407d8f17443b8abb22557a042

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