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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.6.2-cp313-cp313-win_amd64.whl (721.0 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.6.2-cp313-cp313-manylinux_2_28_x86_64.whl (812.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.6.2-cp313-cp313-macosx_11_0_arm64.whl (767.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.6.2-cp312-cp312-win_amd64.whl (721.1 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.6.2-cp312-cp312-manylinux_2_28_x86_64.whl (813.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.6.2-cp312-cp312-macosx_11_0_arm64.whl (767.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.6.2-cp311-cp311-win_amd64.whl (720.8 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.6.2-cp311-cp311-manylinux_2_28_x86_64.whl (814.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.6.2-cp311-cp311-macosx_11_0_arm64.whl (767.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2.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.2.tar.gz
Algorithm Hash digest
SHA256 a8822f572f18194cbf3f50cba909031103af900b322f491d1ae1d98c15aeb6c2
MD5 88d5c17c7b88b9b2515417f8a7937bf3
BLAKE2b-256 860e5c8bb4a49ca733bb349a84d6551695b44be20f3433ab1244fc1751b50d7d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 721.0 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.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b3343bcd01f2aa2ca32aaa8083a5cd70242213325fe94b1d2905f71ad0b78516
MD5 f96f6ae081f9c6cfa53fb73024c86198
BLAKE2b-256 36d1314d114ea42ffec048a6276a580975454d1445283fae636bf6f50a019ec4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 721.0 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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 52ce301dc1b56efad5eb60a29286aa6bfc0c49075fb877ad5ecc72afb4673b0d
MD5 1a194d67cb738223adde2ff2e9d1767d
BLAKE2b-256 5f2b770ceeb2a0c0efdc69efcbb190176d4dbd5c09cda944af268a15590b10a5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 812.9 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.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e36df4530fd253378baf99721165e73dde4edab5dc297f675c0bb91320b50c48
MD5 0bd6bca0e0832f908a85602a98590ffb
BLAKE2b-256 13a1e9c3225d52b1bbf3aa2f1680b98bee592103f91dedba7c9673911ca8cfdf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 767.5 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.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a7b12ee8b6a0bf967ffb193ab676614dbad7627b92707201b48016a91914b0e9
MD5 321e4d23f6e75363bf8889898f20bf7a
BLAKE2b-256 59735ce43507e3167900dab71bd2629f220a992b054b94fd8b8f006e6db3df9e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 721.1 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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 91a246fcb6f36a5f5a43da2cca4ac169b0fdd1aba38343129b9c319dc32c1415
MD5 de42719b9c89f84f9c737d8b3b71c58c
BLAKE2b-256 1ec010131a157a3445dad97071405db7cf167b962e31a9789061ab5e1964ccaa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 813.0 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.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e6339d1fe2a69262198bb200075c9358f9b8c1ba9fd6ec628e4fddac244d8e5
MD5 fcbe88ced501c16af142e511e1321a09
BLAKE2b-256 84bb3fff9197e1d15d46aa76cae07783cfba7f3f4c9e67bb60e975e4f9bd9ce6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 767.5 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.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c21260262ea400d8b36ff86d1a86798a0ec4a36c57ebdff9ebbaab16504b3f3
MD5 5303c6048514f8097bbf63c6152acb89
BLAKE2b-256 ca5f4763cadb4056cc4db7732fcc07a8896b72c3700d1f890bd871c18bfb42a7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 720.8 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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7c4574fabbf65276bd29915ca45db41a5d0d610bf83d3303e70ae22894d871c9
MD5 2756df4436590af210c8cf3f242b0718
BLAKE2b-256 82bd4a7b5f60e7819c6f863f2cfadd164a6c84e074a3023afdabb969dbb32511

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 814.4 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.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 daf0596a66c7554f6f2c6990b314395f77587f87ca5fb13e7b37077ed69a04b3
MD5 084bd50119e39b6e0b080b1e453e1afe
BLAKE2b-256 d7d9249cc2f613b5bfd68d03747f1ba7cd36687275aba10e99b95305ab951c36

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.2-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 767.7 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.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7bf09a9038b6e896462fa4bba35900c6c6ed54035d0bd416b349dd20c52b3432
MD5 1f623c84f8e7426a21dec0a5d037c475
BLAKE2b-256 41f5863c735b45f84cf364d4d689b2b40628820adb06e7d0a861542fff350379

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