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.7.0.tar.gz (1.5 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.7.0-cp314-cp314-win_amd64.whl (727.8 kB view details)

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.7.0-cp313-cp313-win_amd64.whl (727.8 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.7.0-cp313-cp313-manylinux_2_28_x86_64.whl (819.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.7.0-cp313-cp313-macosx_11_0_arm64.whl (774.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.7.0-cp312-cp312-win_amd64.whl (727.8 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.7.0-cp312-cp312-manylinux_2_28_x86_64.whl (819.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.7.0-cp312-cp312-macosx_11_0_arm64.whl (774.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.7.0-cp311-cp311-win_amd64.whl (727.6 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.7.0-cp311-cp311-manylinux_2_28_x86_64.whl (821.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.7.0-cp311-cp311-macosx_11_0_arm64.whl (774.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0.tar.gz
  • Upload date:
  • Size: 1.5 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.7.0.tar.gz
Algorithm Hash digest
SHA256 285fc1a21599df626aac906554e13362ecfc132af3b2d4e075d63bdcf5dbb221
MD5 de6b807e4f24ba0713d97321214c33af
BLAKE2b-256 f04b004d6717812a993bf60d628c6f8f2ef3f0411eb0fbbdc2e9ecc73cc85c94

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 727.8 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.7.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 56f4b7b6760b4c3c1aeb124dee0c5ac6a4511d791b5dfc848f0ea0938149d97c
MD5 36a3e47c855d3e908fd7ad19929b6825
BLAKE2b-256 f90ff0fb41408a5987c85a20d822126c5fb867267ef86dd3f33a3bb5912f81a5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 727.8 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.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ca901f14b26cf7178a6ddbd8684ce4ae11c5634e63638ab13f37293a2a7cea00
MD5 537983416df13d51bb910668ea586b73
BLAKE2b-256 125e87b0682d9d2bbf56122dabc96f53932919d846ff0c619572146bc3008dba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 819.6 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.7.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1f77bb186a2578b898071512641b0b5561f31d034ccdde56dd673ab87a65b417
MD5 f7d09add5f0e69c29b6d89cc17c98ea6
BLAKE2b-256 d1c886c84c66a06a0b5727e1033793368506ccd7e45a8a169f5422d4872296f4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 774.1 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.7.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ef449853e55295127b73f6904149cda4f950d44efebc9057ce72c29023eeb6c
MD5 554c80642db88c46b72461855bb2f54b
BLAKE2b-256 49d7684558772a1c9c7cd0278bb9c8d5caa673c7aeffe6b5d5597efe5a998bf9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 727.8 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.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e5ff9b5bfe408690c330e47cf20599f0a6604416940535042be07aa4737a9195
MD5 14bd72f2f9744c0897aea1f37b73988a
BLAKE2b-256 76a7cf37df895a4994d3fb986f64472d7b3a3eb5af7a5bff66beba731fa6e0ca

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 819.7 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.7.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d397af68fdfa371078d6e54003ccb31ed99ee148cbadc47a6cc622fb26d6a118
MD5 df128095997414d094efed7084174a10
BLAKE2b-256 8a64ba8a6da8fc440a24ea26a94862fe8ba37602007843449f6a0465066e200a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 774.1 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.7.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d1c86a444af7687f7de746100bb8e5c60caf15b1aaa6a9aa74aa2bda226b9fd0
MD5 53eff46419788610aa43d1cb46c21dbb
BLAKE2b-256 b0dcc077b4d308e02904c797421f77ead74a437057b1e5145842b86579a6f122

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 727.6 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.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 084dbdaa2d1c19a79ced9f43488b5361e0ffdfeabe0c65b311e707b38ed808e9
MD5 e996dff36a37920cd8295422989eb674
BLAKE2b-256 5beba9041d9658590b0245c5e5873afe344db3231648eff9ed842ccba7426903

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 821.1 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.7.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 19ea493ef1dd1c3b2b086914115a74b6c0f125ec0ff2f472f4fb54279c8f12ad
MD5 eaab86172f0aee0ae72021b94b8be843
BLAKE2b-256 c94e83cc2b8a9194c036c51647fa7968bb244df6662f2a67e4e6d2f96417a6fd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.7.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 774.4 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.7.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb6e9c94a82aee3c396a0893854b8743e8c9b31cd564e29ea3d14f173ea2b2de
MD5 6c42efe5bd033ed77195cd76f7f7e448
BLAKE2b-256 3ae5eaa9efbb7eb008d9a43c06e2564a1632749fb53c3cf44d7cc6faa679440b

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