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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.5.0-cp313-cp313-win_amd64.whl (683.6 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl (775.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.5.0-cp312-cp312-win_amd64.whl (683.7 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl (775.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.5.0-cp311-cp311-win_amd64.whl (683.4 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.5.0-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.0-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.0.tar.gz.

File metadata

  • Download URL: fraiseql_confiture-0.5.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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.0.tar.gz
Algorithm Hash digest
SHA256 79af85fbc569c1575a013e19eeaffe2ff8d90ff683ca90fb2395c29ccd3e13b3
MD5 5537d9817b085acf0a54a11ce1daff65
BLAKE2b-256 a2f7e5b439408b2752bce04aa701d914b506c14fc8408dbdedf89b6ce4726349

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 683.6 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 19ffbf39e77dc41db2f2604c1575e41873ab314d9771ee388b24b021e7845a18
MD5 d612bf2f8aafbf4dbdf734cdb0b0149d
BLAKE2b-256 830a92e73c03a5e569f9e99ae22fd624d095ffd35c09e23c6901f443a144293d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 683.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e36a08d6f05158cdcf07ea7f509313c42b776458eae0f344063402495601c9aa
MD5 5ff598825c4ab44335101962a73821dc
BLAKE2b-256 8368bfd7d80ab9b8417ba1db75fed00fb3eef33ee1529e620fc7f41da22e7985

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 775.5 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eca334e9a720d9602a7bb715fe3dba129680789e28afbf27c2f6bbc611e346a2
MD5 8f1da664163f1f426647229bc99f6122
BLAKE2b-256 e24c5c7acd06322954d0b15d28c0d19949e571a3e1a63c46e01477206937a994

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.0-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.2 {"installer":{"name":"uv","version":"0.10.2","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.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff5cb2c089325a3dba9da68da11975ae7e8b23b694fbaff2cb2b92584f4fad4a
MD5 51f19d8482910d3ee65ee59d14a51c7f
BLAKE2b-256 2c80d8984c61fb0b9a64eff42a1934464eef11364e686bf82583cca27bbb2f5c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 683.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 89b07169e1ec5ed4714fd1af4d0718f2b79c8e1869ad7d982b33e92db8c15e19
MD5 2e4fd9ceec13dfe7ceb449db993d217a
BLAKE2b-256 a0b1572f263620b8002dcefb9fbfbe8b9de80eebe2353a79da085ec272d97834

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 775.6 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b81be410e6bef56a22b1d0063cca45200be490e453d4cecff4b0087b50e540ef
MD5 b57196b1b1dd5a599ffd12dd92350c87
BLAKE2b-256 598c5930ab76fc2de3ba32db4afc3fdfdba362fd846245f169dff40fa1bf883e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.0-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.2 {"installer":{"name":"uv","version":"0.10.2","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.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1c2d5ba271f1bda1edab8c0c0639922c2dc40836065947463a283c89f1081b68
MD5 92cdf10e060831e40caa2b65d259c084
BLAKE2b-256 e553e68989f950df15138b5d0a82bdc5b6a931e2526c23c5cb8265f3d40b6f14

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 683.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2c8c398a8773f231209d141ba0d9e43b90da015588d25c6b7346af102e5fa030
MD5 c43e1aa327aad76d227e2d73381dd72b
BLAKE2b-256 be6c9beda272f528936804a7279fee7a2669e86d54d8882cf8703b22ac45b7b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.0-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.2 {"installer":{"name":"uv","version":"0.10.2","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.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5bd3476b704811940e019f1eb0012e7ee3134fb68ca36a9f0c980a8f46d51819
MD5 418f78eb0f8192bc900a576b7f55b4a8
BLAKE2b-256 b99d5c2fc963ab4045ca4362700541da46ba1eab9fc93d18a52c174b1968d73a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.0-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.2 {"installer":{"name":"uv","version":"0.10.2","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.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a902ae50ff93881537eb7a1e02694588f9aafc89610490e23f999b5b6ed43a09
MD5 c126d77ed33292d7cb9ffffeace7cf6b
BLAKE2b-256 b9e59d3294bf7d41f17c5a323f0042e5bc05e811061c8419c7a759be311c5019

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