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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.5.10-cp313-cp313-win_amd64.whl (715.5 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.5.10-cp313-cp313-manylinux_2_28_x86_64.whl (807.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.10-cp313-cp313-macosx_11_0_arm64.whl (761.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.5.10-cp312-cp312-win_amd64.whl (715.6 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.5.10-cp312-cp312-manylinux_2_28_x86_64.whl (807.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.10-cp312-cp312-macosx_11_0_arm64.whl (761.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.5.10-cp311-cp311-win_amd64.whl (715.3 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.5.10-cp311-cp311-manylinux_2_28_x86_64.whl (808.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.10-cp311-cp311-macosx_11_0_arm64.whl (762.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10.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.10.tar.gz
Algorithm Hash digest
SHA256 e354d47f94fc2e1e58f7ab04d47ab612c9b344936f3b04190b174f39636fc836
MD5 e4d096fc0762c81bb132bfa684534981
BLAKE2b-256 445e094d0912b1f25e8bee83102657e0e0cc2fe6791a01ac5a18a84c78069d48

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 715.5 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.10-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d6fb2664156b79e2f5ed432f732bbd87bdb7555124727a15dd4fc916d7da13ff
MD5 36453ab3bb2a6fe7102be6d12583b5fe
BLAKE2b-256 cb676198bab7e3c93823ac94d11c7d82dae3637c4daa8c26140d4a4795adf2d0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 715.5 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.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 32c8d7ff26d9baa00a821a9937e5d291f27abc257412847a966a8e662638bcf3
MD5 b0bd457c7ccd69c5b99d7fd0491e7d49
BLAKE2b-256 5ededc196b73ed86b289063b63a87f102513223789c89bb6c21fc9ae186589f8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 807.3 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.10-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a093fa670f0156073d3b5bff59cfa358e7df7042868e00ef6c4301ca1fc7784f
MD5 0840068cddcaa1ea262c7420bfdfb01b
BLAKE2b-256 1aca39fd0988d806cdafd097ce66067de30d14057e6c12fe83e8964934ef2496

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 761.9 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.10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cab067a8c088ba15ab95515cc519df0407bcb6daae713b4212a34d3c543384c3
MD5 2cb57799db1c5ede9ed620bb08718d9d
BLAKE2b-256 14cf0fb08ba2254b37b789958b93432c7653ebedc23d2f7067c09f9de21ce45d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 715.6 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.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2231719e0a3c4b8cae2a5ecb80217ad86215c4aedd0971aa55e337a6746a8b56
MD5 0e8b62e44fa38a5212f1f10f4c70b3b6
BLAKE2b-256 95b8df6a45e89568ec8d6771647340a8a851c08cb98e4b797589925ce4910a63

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 807.4 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.10-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5dd4b700ea0edce3a09b0795b136f4b69168238fcade3bdd1c2ea683ac388637
MD5 a935799e73c18edd91c68048ec443a7c
BLAKE2b-256 3d05ef289350456d48872fb7cd66dbc2586981d8dd1ea8d4079513e6d569f1bf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 761.9 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.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f834ca3b1cb590a8de581611178018f61edf64e139d70bb2ae7b8715392917ac
MD5 849984e0fe73fa5453871587eb6162fe
BLAKE2b-256 f1a00692f6a78f6be174522419c19a075ebe9ab6839572f6f7b2aecedbd885c1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 715.3 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.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9477a63c65062776deee85230ee1fb9e51a9063812fb9dfa5ab857611a5fb32b
MD5 7544d0737a36a58e8015654a1563c7d0
BLAKE2b-256 29f46ef86f1c67a0fd57860bc4b9cb2e0c5ecd4d5a5af101ff7ed783a87494b2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 808.9 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.10-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e18f8566ddd40bc04481c837384e3f4cb7ca27e835c88835136a77b1e88533eb
MD5 ae9e8ca76c29a9fddba0defd5a35c6e0
BLAKE2b-256 6ca39d172d0ace3db33a196698416d272c1ca01701fd95d1fac3d0fd2644e7df

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.10-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 762.2 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.10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 91fde812fecc5dd7cc8e48b7d518e0cb1a12af4e9bd6a4088a0877ffdf42606a
MD5 01f974022735eb19f3d74d64d5f9bb0b
BLAKE2b-256 3e396285ac52a4273c311972bfb507cb6df27ee1fd839e8d9671dbf42a898596

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