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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.8.4-cp313-cp313-win_amd64.whl (724.5 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.8.4-cp313-cp313-manylinux_2_28_x86_64.whl (816.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.4-cp313-cp313-macosx_11_0_arm64.whl (770.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.8.4-cp312-cp312-win_amd64.whl (724.4 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.8.4-cp312-cp312-manylinux_2_28_x86_64.whl (816.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.4-cp312-cp312-macosx_11_0_arm64.whl (770.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.8.4-cp311-cp311-win_amd64.whl (724.2 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.8.4-cp311-cp311-manylinux_2_28_x86_64.whl (818.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.4-cp311-cp311-macosx_11_0_arm64.whl (770.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4.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.4.tar.gz
Algorithm Hash digest
SHA256 1f98273d673b8dab7e5db5905f74f2dfafcdb2ee35217bdf9b95b0fd4158fe23
MD5 9330e7b3960f42616e6036353cf0266a
BLAKE2b-256 1f8d27c63626aec851cef3ec5f640f7c708b96564c884e973b707aed3874f821

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 724.5 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.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 52500dc515ebabf287c76e936cc40fc4233578a3c8b91b57b5d5f5b353c2dbac
MD5 065f4073c180131709e05c3516bba80f
BLAKE2b-256 1b00c8ac9ae6548dcb07e573bbbad064b05e9ea878ad7a1edbffba8783f37d62

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 724.5 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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1f067f17dac0000804f8c94fa66f25989d5e1157867f40a775ef858f432318c2
MD5 3f64426a60d0d9532b9c2a983a933f56
BLAKE2b-256 27068e71691e906a4559226f4806ac5414ac205508f29e6e549267133f37bd79

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 816.4 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.4-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4526f13ee19a9a2f80507a4c7b5c77dc08ac8c67d60fbd7c35db4e16ce10519b
MD5 a99eb317cb024cedf268b4d8d4288d5a
BLAKE2b-256 84bd90abaa02871de6aa07480ef31ceef75bee2db1ae688fdb09eca58fa802a9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 770.5 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.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc0aa1e3b19fca919f76807764c759d3c971984f82c2f169c9891f0e8467f492
MD5 befdb0b588e4cc9de477b77c3dc77c9c
BLAKE2b-256 e21778bb56814b32eaa4acb9c40a247e72714671fa223cc62ea17cb722aebe1d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 724.4 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.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c6d76864ab78716031ad317e7b9e39b3b28ac6da041924b714e735a3e6a19c0e
MD5 d03fdc31506c4887dac030f7b529c59b
BLAKE2b-256 5770f045645b853b7da54290e9a3fbd374611436a97960240c339da607f7355b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 816.5 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.4-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea8074014534e061f589b225a131dfe635f8acde32bbfe68843fcfe85414d502
MD5 614b7417fe8d7a231309e6eff0f69fea
BLAKE2b-256 6216e01573adb4573199ced64573a86022c43465c2e2faf11959540f95a1849d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 770.4 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.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c881b03c280c8dbe5f62e57c0f512b1199afe9327c6863ebf44213a18a3dd92
MD5 ce64b06e8f8ba2236d042618604984a5
BLAKE2b-256 a001e3ecc50f8e16772b6c8f523595afc9f8e6ea6c2a8b6e2910aa61616f39b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 724.2 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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 338b47ff9d39c89ac4ca2d1efd761b3a0c2ba3a423fc659586e8e97448b83264
MD5 4f170dafb6b1bb8c97ba743df1c524ef
BLAKE2b-256 e23b269b716264ab726b7e7f7a81b4bd4dab51907aed217e3f2e88d189d37f8d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 818.0 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.4-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7919ee548511ce4eaeb96d2cff7433f0bbf8a242031be79a5a0332491ecc0333
MD5 d69dc51c6c32d807f7d35327d1a5a188
BLAKE2b-256 d70d3ee09ce09bc13e17ed3df37ff5b6555e32ab0c2e1b8f2771198c55b6e842

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.4-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 770.8 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.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4bd7d8b4fdd5627ddffdc55919e9f7863c74e179ca7183c3ce323dee8ca3460
MD5 86f61f41327d231ae88feb129db627df
BLAKE2b-256 6d8add9b14ec1eafbd705740a4aaeca30e8cf2badb47d9305fa060c7e0d17cb5

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