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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.8.2-cp313-cp313-win_amd64.whl (707.7 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.8.2-cp313-cp313-manylinux_2_28_x86_64.whl (799.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.2-cp313-cp313-macosx_11_0_arm64.whl (753.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.8.2-cp312-cp312-win_amd64.whl (707.7 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.8.2-cp312-cp312-manylinux_2_28_x86_64.whl (799.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.2-cp312-cp312-macosx_11_0_arm64.whl (753.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.8.2-cp311-cp311-win_amd64.whl (707.4 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.8.2-cp311-cp311-manylinux_2_28_x86_64.whl (801.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.2-cp311-cp311-macosx_11_0_arm64.whl (754.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2.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.2.tar.gz
Algorithm Hash digest
SHA256 597498ea965a734ce5da5d02507d4ed11c44b0a5f5c76d2de3be3d0f8e7da2a5
MD5 43bb426b83273e5e9b48e4e57b6d0cde
BLAKE2b-256 82780baef3092899f20997c9d01ac271dfabbae829c06633ccf9df93285a8633

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 707.7 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.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 35750bb989ba6c0992d7d4f29c722940d53c9b623c7d2edacb346ff118b741c2
MD5 33ab5e7b570a418861220d8f62b35d31
BLAKE2b-256 c7439795b20217c22ee1213e3d1f249e7629d07b188d7044e3540a540108ec43

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 707.7 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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bb845d9be89f3aab705535767cbaf94b77fcb366911c4ebf6bd88424017a2632
MD5 3c72f24d29e7e8df6b415f419f78ea0e
BLAKE2b-256 cadf5a18706433ea16fabbba79fd2738b004cc453e6b7a6d7950eb819ba8f7dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 799.8 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.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 34f66627b1237d946226b537adef7d4cc6690747937c8090b1de983a9e358e0c
MD5 2fefb2ec650b242cb464743521fed27a
BLAKE2b-256 f7d99589ad896041a6ec46a3612a0879e16ab5d4b4cf7016760dda5ee1bc31c5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 753.8 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.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c2bf78b20b62fd62188aba6728bc115343f523297b0d77bf5f03c2fe67630b8d
MD5 36c45604728720f8d8177789a1528146
BLAKE2b-256 af9d01c4c9f61a83dece6c05d8c7e667865643d0369b9a2f1f9ad6d4c8fc549a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 707.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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 372847368b4ea265a89ad0f8aad5674ca51cc7c386ebf8a8acc1b57586ce3155
MD5 e976ec09ba50fe12cf014376f904aef1
BLAKE2b-256 f506f8b37d553a5270381952e8eb8c45195c9e3a6d2f3e3720f6c9b996adbf3a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 799.9 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.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 05c074e7c817568f81859738f62615d3186222fd65cc229ae7923f3abb457eeb
MD5 9e70c3926198f4e464d1762987c8f2a9
BLAKE2b-256 72441d9cfbedafd605fe1e3f02a5b0cdc77032a2a8835ba390fe62368a426975

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 753.8 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.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 822f3f9267b0216dac332f5e5e709def661a16fd5e28e26d9374ad1a1c5a728b
MD5 961bbbf638cf30994a9afc8ca06ebf0a
BLAKE2b-256 121f1f0bb71fa80409a45e193e93f45f0bc2bb648c6357fd6b84348ecaefba60

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 707.4 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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 74643c47c19ee9b51b208da02eab3c5db1c47f9da98680721228783d6718566f
MD5 2f6a708caa180445adcad2d606115bfd
BLAKE2b-256 b9352ee8035b0a2c8a66965af2b944b0bf4c8afd9eda49eb65137e7d4dd45a6e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 801.3 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.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 986f0450330ebdc42caa988229a7237b5228a350b58ef4c922ae15a3b6b4fefa
MD5 d1984fdd4e3f9ec4dd6808531527a17b
BLAKE2b-256 c96921c16805ba99bd8fc4150902f857096917d0935eaee1d56bd91c84be4119

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.2-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 754.1 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.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 522964d0c051b72a1e60963b11452eb30ce2afc8b43ba26ee918c1368629f144
MD5 58a8643e66ed5ac8087a6c80e85a4275
BLAKE2b-256 ed4ba6745b3880ece0ebb13f9a9b76b4e3903f8a0410e7509e9eee5bd34c8552

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