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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.8.8-cp313-cp313-win_amd64.whl (733.8 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.8.8-cp313-cp313-manylinux_2_28_x86_64.whl (825.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.8-cp313-cp313-macosx_11_0_arm64.whl (779.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.8.8-cp312-cp312-win_amd64.whl (733.7 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.8.8-cp312-cp312-manylinux_2_28_x86_64.whl (825.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.8-cp312-cp312-macosx_11_0_arm64.whl (779.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.8.8-cp311-cp311-win_amd64.whl (733.5 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.8.8-cp311-cp311-manylinux_2_28_x86_64.whl (827.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.8-cp311-cp311-macosx_11_0_arm64.whl (780.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8.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.8.tar.gz
Algorithm Hash digest
SHA256 9f9561a7c8207f3c735b463db752159ee326496117d4ec2ca4d6837ea8471978
MD5 48c0aa4930601a168d0f85b1666ea4c4
BLAKE2b-256 23d67ac64477a5ed5072997374ea9f3778485665c2a2c3fc565d7dbcb71a8cb1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 733.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.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5cb4a881e70306ac68e79af499155e64c58f629386bb58e4f3d9ee58c3fc9adb
MD5 d65a22e700c944d603f2569d39a0c768
BLAKE2b-256 bc1e5a3cf38a48f3cd83fe2142a4cd159fe7319639b009d8a0818010d3f80ea3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 733.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.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4eac880a3895515ae23bcbc5cd5c3a24ed003d1436608e6264fe67c4ebd9d415
MD5 098cc9a42b4aff4ccc51dc4d70de8d7c
BLAKE2b-256 8119915be590e1957070c54544dc76f8c902ceff3e47318a0ee8820a069c5951

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 825.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.8-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 34b94fda511989a47f47212762ab0a2f253b912459ffb1353aeadc88d16fff13
MD5 d671f862db6d0385eea695be14c04d24
BLAKE2b-256 b64814b0c79777f7f5037c96739d30554b3dad01552838507ff952193a0b0e26

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 779.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.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e360385e445e28825b0f85478ead2d34ca49322aca09fc7aa11babe2c4bd05d6
MD5 9b5fecfa1829d08c8b9b7a4070204f54
BLAKE2b-256 95ee7f9c376441c88c8a3dbf25b4ba925a49afed3f9039c84880d3bd800e8ab9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 733.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.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 532c96b166d5feb68e2d3cfa526d1da18fe2367b7238d0be7a083c6d26c6c7bb
MD5 857bec7daa1913312be9df156867b413
BLAKE2b-256 b52065e147f60195009ba52ad1890a1ece04f3512d05d1e5bc7e0db6151e3726

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 825.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.8-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 17e52a8778241069b84539a3780f4bc2d31b0127ab79e0b56692614531054872
MD5 ae947d319b97f40961bba5ad479c298d
BLAKE2b-256 85a3d739ed3542aa05574a67cedda7103c217da276024099a93b2532d4e1b4e1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 779.6 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.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5eba859e55c430b0b054f99851120594245991c94efa4c6a4f1cebbef754fdcd
MD5 ab320fb8168d6711fbccf1e5b91d83fd
BLAKE2b-256 bb7bed65ffd9b5db8828129d2f72ab8ad05672a34c1c72c3e3d58cd3265f6e74

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 733.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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ddc465e146b17f256ef809a0ee568e24e952485b5deb299e648bce954a95556a
MD5 97ba54e86dc920f1b117f1b6e9b1f837
BLAKE2b-256 ca739614f5785189664bb7157eb6c921fec15bdae419646671077c99b9fde2b8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 827.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.8-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1829dffce42bec3eb5f7a41688752db4d56069fd9c4b04c73c3585158f3f6364
MD5 10066b3a7a5f9565edcac3973c5ba856
BLAKE2b-256 4396350a3434a655c4650af5b8dc5aa646fff708fa71d57d790968de65612e68

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.8-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 780.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.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 16e26452b6f54a81ee19aa61153160a5021d3549508ae4326dc1afe74871da0d
MD5 e5cea4f496cc9ab84917a95e03abdad5
BLAKE2b-256 29cd376658cfdb4cacb267434f1dbe74707b920a2d5ab2712910318b6a5460be

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