Skip to main content

PostgreSQL schema evolution with built-in multi-agent coordination ๐Ÿ“

Project description

Confiture ๐Ÿ“

PostgreSQL migrations with multi-agent coordination, timestamp-based versioning, and 4 flexible strategies

Build fresh databases in <1 second. Zero-downtime migrations. Multi-agent conflict detection. No merge conflicts (timestamp-based versioning). 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

# Recommended: include pglast for large-schema support
# (uses PostgreSQL's own C parser โ€” no token limits, handles schemas with bulk seed data)
pip install "fraiseql-confiture[ast]"

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.8.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.8.5-cp314-cp314-win_amd64.whl (726.8 kB view details)

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.8.5-cp313-cp313-win_amd64.whl (726.8 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.8.5-cp313-cp313-manylinux_2_28_x86_64.whl (818.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.5-cp313-cp313-macosx_11_0_arm64.whl (772.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.8.5-cp312-cp312-win_amd64.whl (726.7 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.8.5-cp312-cp312-manylinux_2_28_x86_64.whl (818.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.5-cp312-cp312-macosx_11_0_arm64.whl (772.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.8.5-cp311-cp311-win_amd64.whl (726.5 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.8.5-cp311-cp311-manylinux_2_28_x86_64.whl (820.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.5-cp311-cp311-macosx_11_0_arm64.whl (773.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5.tar.gz
Algorithm Hash digest
SHA256 9f14cdec26d37803d155c7afa0e600c5f304cb011829e413e8ca7787be5b122f
MD5 690ee7a0204e9aa7bc2951a08c304eb9
BLAKE2b-256 f13c664132a1bfcddfa9ab004f993ee30494e2c4351a6b6dcb51ff3137d0aa68

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 726.8 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 3bb6941dbbbaba954ba6115753d57f7184d01bd05d7b89a6ea91ac1d774b2eee
MD5 a0dabfa69c50c202dbc398f4079a88d8
BLAKE2b-256 04217d86544ab3606cf67741b62a6c9334260aa3463d15a88f651b41a4b3fe91

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 726.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 73f70e1cf4631453e879c7ea397badd75745ccf37e16dcb1ba4b4c1c07cf8788
MD5 05a04aeb230d1068c2235f929317a992
BLAKE2b-256 33833f0071f2ee3c44cc597923134035e5a2047e6ee7baec7502f60867a7098e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 818.7 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0562da06b0dcff8c10fb85f3d664fc4daa2466e7c9f30f8033daf212222a0f35
MD5 80909186dd2195a0c0b4d815e7e37020
BLAKE2b-256 3d3077b1b16ee0e81b37c176a196f54bd3a862385fae126daa9939e37d3beb44

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 772.7 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2cf0253a9a639fb6c35bd26e5883652cc6351b5b33d7b94d4b3c138e11c4cd57
MD5 2c7caa73c9d598d9e883b5fb2c606b10
BLAKE2b-256 5619960a409fedcbb3cb69f238698ed8663617197a9fba8f1bdf3372072ae34c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 726.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 07c6cb130fac6a30a42f7b4be510075c15edb4a943d54723b07160b5ef18d18f
MD5 6cf6807352f4b25061227731fc4b8f1a
BLAKE2b-256 aae401528db887b939b7535e9af95c7450d9f30d96c73fc10574e484c7dd5ed0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 818.8 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2b03721e96c20f8f4366a01e983687fdf7d3a200d91b132404ab52118f94ea1f
MD5 dbd1683488034fd3ef47865f9524627c
BLAKE2b-256 eae7481551fa1c3c9384762f118c1668d47ed657951bfd16090594effc8e8938

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 772.7 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4c959194417ba55c10c302fe2f33aef09d40447bfbfc65231a8548a8b0e0957
MD5 736aef4efcf1ca55bf9432c8152374d2
BLAKE2b-256 e9c674415f17b6a1735f436f5f06e9ad6cd42216526a92411141353bef49ed15

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 726.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9adc653b22751b3008216eab4b671e62bbc3fca043bf1a3d65d29b222103d59d
MD5 2d81754d7560a44ba29e99f2c5d3d755
BLAKE2b-256 66e8ac522b4b4462e82d4a6b6cf2a621e7b0ec34ff38d0d2166c6ef4cc050320

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 820.2 kB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f0ffb1c1256bfa6dde8cc66065342457f4fe3eab5d2cfe8c9f9313a787dfcb29
MD5 b9e1a33bc701c86264ef79cfb22aeee7
BLAKE2b-256 628714ec3c8752064eb1f2ae1745e29868570b6a410ea69e94f9029e30bb0210

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.5-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 773.0 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03751584695be4296e0e31abd82de1e9f4f1ac767bf2b54c6f872ebcd4ec1687
MD5 e79e37978e75292298abc4f332e7cc08
BLAKE2b-256 dfd47c0b091047ae9ecf0e109d5f78beb9f754089dc506235821b6cdef67d7fc

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