Skip to main content

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

Project description

Confiture ๐Ÿ“

PostgreSQL migrations with multi-agent coordination and 4 flexible strategies

Build fresh databases in <1 second. Zero-downtime migrations. Multi-agent conflict detection. 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.5.2.tar.gz (1.3 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.5.2-cp314-cp314-win_amd64.whl (683.7 kB view details)

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.5.2-cp313-cp313-win_amd64.whl (683.7 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.5.2-cp313-cp313-manylinux_2_28_x86_64.whl (775.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.2-cp313-cp313-macosx_11_0_arm64.whl (730.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.5.2-cp312-cp312-win_amd64.whl (683.8 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.5.2-cp312-cp312-manylinux_2_28_x86_64.whl (775.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.2-cp312-cp312-macosx_11_0_arm64.whl (730.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.5.2-cp311-cp311-win_amd64.whl (683.5 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.5.2-cp311-cp311-manylinux_2_28_x86_64.whl (777.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.2-cp311-cp311-macosx_11_0_arm64.whl (730.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2.tar.gz
Algorithm Hash digest
SHA256 752933954eb2b5378101b11db3b9c2afed76aae3aa11a4ca928738f7d4f9d4e1
MD5 30664cd660232326222483e1cf038739
BLAKE2b-256 d7d4c0cfb6f2da688b538c2246dfe1647876dddcbe86ad51a7db2acca5827106

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 683.7 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c8b93283e44e04e76e41a10d5890307a35447baaf35427066bd944941deed890
MD5 ab2113bfd09b30e4d155ad0d88495441
BLAKE2b-256 293170e0c44d0b01fd4ed13d0bb9e90f46c235c8badcd5ffddea3c8cfa9d7024

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 683.7 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8e171d4dc5ba044948698cf16474958531328b67856b9ea5f8bea03832331d8c
MD5 85a66b82c1da60a0d0c657a141115d7e
BLAKE2b-256 b9744e134c1c10e08c35a2f6838ee44745d00126ce2fbd83113d97337d007809

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 775.6 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f27eaf7d8fac32ce6120943bbd164f11f4ae8b63a6039bcf606528cf9a84192
MD5 bcbd9c75f8da14627702b5e879a92320
BLAKE2b-256 4279124d79c9dc1b06b8be29c93ee249e85953ec427364cd891e410d67f0eaf0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 730.3 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4b957f301e05875cd2d569961829173381cb0ad4ee237bea0bbbe02abdbceaac
MD5 69cdc001c94e7fb698c882b5bab57735
BLAKE2b-256 2f8aa443da9b16fd8974aa3c1239dbfca369b68a58c802ef9f9c24f4c53134cc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 683.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 497de7b23086bb0ea1a2af1ee2c6594b69116b0ce1ba3e20d86499ffb550ee62
MD5 c7fc2ba6c6c0bc60ebed170476ae8efa
BLAKE2b-256 fda95bfa35e8e3dda9c5315aaaeed01d0d0780b5e6a2b6b5749ef89d615b4e99

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 775.7 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9fc07606db65ea21a6a664d501de25f7aeb84c857ff364788358a99346387113
MD5 0c8b2da12b65ec75cd228e4682ef3fa3
BLAKE2b-256 5d9df87eefd98f683fb00c8db25cc4c9afb62292abe4ded196a8e6ed7c7a30ca

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 730.3 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9fdf637551e7d8090c543807aa78e6b6e7382b57d56e841e50ae0101b3c186af
MD5 b4bb8971acf227f15b540dd0f9df1e63
BLAKE2b-256 9834211bdeca39cbecc562d00f4f8c076d81d0a3d819a06bbe7c57d61fc79523

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 683.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 93bd1ab94afb105be3d41a4a1d9002126fd9648d8c0611c01b67e5eb206645b8
MD5 72e56a8d0980fd404165b2293a053aa3
BLAKE2b-256 3c4f340095d65fea51c7ebfe52167cf52d5866abe67b353e84cecf7ff53e65d0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 777.1 kB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 214bcac869955c521ded5e19f1c7e6d527db12e901cd4708157d5a6f79cedb7e
MD5 e8c948f4d2cec522df8962c6eb541fd5
BLAKE2b-256 66b9348f9933696e89d11dbaa432127a1a5dd88be553cbfdeab01b811cc33b00

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.2-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 730.5 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","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.5.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc39092c2d6047a516ce13b586096802ca2e273086e692e46e6a2ed1293255cf
MD5 1aab83ff3913a9104bac0e760f4db995
BLAKE2b-256 58ab43d5f0c510e269bedd2aff1ddd1346fcfc72e9acb4526656e9e5dd48df91

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