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

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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.6.3-cp313-cp313-win_amd64.whl (721.9 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.6.3-cp313-cp313-manylinux_2_28_x86_64.whl (813.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.6.3-cp313-cp313-macosx_11_0_arm64.whl (768.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.6.3-cp312-cp312-win_amd64.whl (721.9 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.6.3-cp312-cp312-manylinux_2_28_x86_64.whl (813.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.6.3-cp312-cp312-macosx_11_0_arm64.whl (768.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.6.3-cp311-cp311-win_amd64.whl (721.7 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.6.3-cp311-cp311-manylinux_2_28_x86_64.whl (815.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.6.3-cp311-cp311-macosx_11_0_arm64.whl (768.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3.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.6.3.tar.gz
Algorithm Hash digest
SHA256 202271c81223a36fbbee058e85873faef5458f35c91fac780381a342e7a28c55
MD5 7f6a2b6a9f31cb88d3d8cc730f813f2b
BLAKE2b-256 98e52ac465b17da80f73cbd20c3b49e9214b60d7cc3067abca489733d08eca9e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 721.9 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.6.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2f5d902db547ea3426416c8327c604be61c0b2db04dd4ae180bff8da88655e00
MD5 328ca1d723a6847e3d023d20267eab0e
BLAKE2b-256 3404a9569c8f0e7b52d8235690cca310dff83acd5c91006e4c18fe22918d51e4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 721.9 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.6.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c69c5ca78f1432bac9a131f99f9d506bada3653dda54b61904d8d185227d7147
MD5 67204701d5d4356ea6c690184a11efac
BLAKE2b-256 95f19e90b2869855fd1f6168d741365c382576bd1674410ba36d7ec51d4a910f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 813.7 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.6.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ba0ced5b13ba61ba3acdaa0ed0675c316c38fd187e331d5ce24cb5af9ba1c5a
MD5 8cacc4bc7977db0bf2e079c8097ecbe7
BLAKE2b-256 bdaa02a475541593005812fe5e69b2959bb5784253caed842aebc152f71f7b3e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 768.3 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.6.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea134f510d89a86ebcb560955d1dc5b06b68803e6a31a22e8d0d3aa819329008
MD5 b3b5d56d766ec6191fe74a19326a7f4b
BLAKE2b-256 ac89bc7aefdc19bc997496766a6a14611d8ce3dcf21be4ebf816582efa0ad22f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 721.9 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.6.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7cec42d6a44b28d0bad38f11572e4b7a74908fd447408e815e0e9a35eefb5475
MD5 1003ec216f2efc2ed9cc829ae43ce162
BLAKE2b-256 e74c89bee7e06f0730e637ddc5e83aec7eb572bf086e07126465e925e35ba522

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 813.8 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.6.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 50f49ebc8b923958d68e9bd77d676f8ad5ec69984055775a48a23a84476ba720
MD5 3de9b2a9b652a82904aa0582f1352896
BLAKE2b-256 a4afaab280a8c31c1fbb992dab78b094e3edc24792e294d3f6fbba52119ba2ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 768.3 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.6.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e44db141da4840450d7125cdc4f5eb34e615f11561591eae0fcde2d99c8b9774
MD5 1e4b45b9f9e80bc39399c19b8df36d8e
BLAKE2b-256 e79b492bf11b7b6c49a706b7b8db7ae52b57c523d8364200b0bf45e8464fe7ae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 721.7 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.6.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 db56988c8b71008f301fcab4bf5d766246b1df79d3c791060dd895dc63d29681
MD5 5b3011e54a03939e4ce6262f5ab7e69b
BLAKE2b-256 3481a0345bccb3b98a15dee3c7ff7c763744dcc541c4c520a1debaf0e9e2b943

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 815.3 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.6.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9a0f7bd1ca3964ac37898ec6f1507e451c62234a571ebff9694016ccb1d9eeb3
MD5 a8d46747099d20e7b58770fbe848a80e
BLAKE2b-256 c428a7ff48a38ee0b897f62675148b0e86cb248637055bff4692ad8697ccb78d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.3-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 768.6 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.6.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5600d459b57924d41f79da6493125d4cf0ee8b8beae5f8af1a73343e2ba41274
MD5 9549ad73f1dde961ad9bcf6b88e06968
BLAKE2b-256 e25f7d1763a750c198cf4958943e01d775f83333d4f53409acf47f3b3296725c

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