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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.4.3.1-cp313-cp313-win_amd64.whl (678.8 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.4.3.1-cp313-cp313-manylinux_2_28_x86_64.whl (763.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.4.3.1-cp313-cp313-macosx_11_0_arm64.whl (725.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.4.3.1-cp312-cp312-win_amd64.whl (678.8 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.4.3.1-cp312-cp312-manylinux_2_28_x86_64.whl (764.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.4.3.1-cp312-cp312-macosx_11_0_arm64.whl (725.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.4.3.1-cp311-cp311-win_amd64.whl (678.5 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.4.3.1-cp311-cp311-manylinux_2_28_x86_64.whl (765.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.4.3.1-cp311-cp311-macosx_11_0_arm64.whl (725.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1.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.4.3.1.tar.gz
Algorithm Hash digest
SHA256 d0ef24f6c779b9aa07857459c73c4401105e512d6127c71c86ae97b00bd0e60b
MD5 d7e77626115e5612508329b86574c15f
BLAKE2b-256 f2e5e4621b87df38c8ede39526b12124962caceb60e8c196fb5a8b6655b32192

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 678.8 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.4.3.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 530545d3da4a72805ead51a68985107c8124a849d1213d5e1672b607229356ce
MD5 2df963f7bcd81c0737e6d006b50e9e94
BLAKE2b-256 08e5fd9302f08781953225e53ee5e99b64c660a893fda9b55353e8e23da598c7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 678.8 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.4.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 dce691a7105c4308c0cea645045e23b6d606349b40693b591c32743eb6e07b8a
MD5 6d1c209d9768ba9e23679fc483e144e5
BLAKE2b-256 e4764e2465bdf031241b9c400b95edc1ac6a043175fa2e0c8092e642e79202f9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 763.9 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.4.3.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f66bb35ad0eea01578790d1dd9403fc21aadc06d33f2b06ec0771ebda593413
MD5 d70d22cdc64ddcfdf113e34de1f524a7
BLAKE2b-256 8f3303b12ed173230ac639f91f47a53df3eeeead875de38ef6a46bb6cd3cbc9f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 725.4 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.4.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d22e372a961813bf645efbf3ab3c28c61363e91d68725bd56888ce7d377de4d
MD5 d8a64205d9daa9c66408b47f513e014a
BLAKE2b-256 af06ebf3ca4a535be79de7ca638e88e0e6bc9358c87751e15b72c956441a9bbe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 678.8 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.4.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3e72c3caf2e731eb10c03073695dd572fa8f4b30a6aec36c4db69d6aecf46288
MD5 69abf1af6e533c41b7d4a7a9a13c7e69
BLAKE2b-256 2a9d05736cde60462e94c41f125990d6e187cc8ef3df286551a8ef5c620c6ce6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 764.0 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.4.3.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 38136f77bfe17a2fab26c511e11c1581a811d325535c2db1adf37aecceb42d5f
MD5 ca7f1d5f63aeb21db813035ee65a17f5
BLAKE2b-256 36fd6fe191667680055270af2fb1f01f5ae0ea637b89564119c209070ef5783f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 725.4 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.4.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c5b4ccf975815ab4f36e79545b16f99c6e836ada4dbe64bf5617aa8837feb4fa
MD5 62fd5cefda0b5b5159b438ee36933eac
BLAKE2b-256 29f636d17a2103959482fbe9045bfb4e623cbf88d60fdcb349299874eaf5dbd3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 678.5 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.4.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 aacdd80ab6d409144cabd6bb31dafea5679805dc7a528eb0be2e9b11e8dc5fc7
MD5 8a37f2abbb11aa2e905ff32abb889edc
BLAKE2b-256 cccc8b4336e5020c532e74230cf6a02538753d7b51b96af88c3c084849c2a682

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 765.4 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.4.3.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a9ad01e1b1cf12b7f7d9e69b5cb2458dddd16de3496046621b304291455cf1ec
MD5 4c4348b81cabc892e368b8635b6a15a0
BLAKE2b-256 fa89ddb5887ab338ab21e650fb2aeee6e462b1a02786376b22006c48dcbbd9ad

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.4.3.1-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 725.7 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.4.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b49bf869df7c3ffdfbb9ee1d8e259b207ff065fa4f09cf3f66e40aa744150e16
MD5 af631bc19e02fb10ab1077850b122fa4
BLAKE2b-256 ca8ba11d46eb26c157e7d5852966bf39c1ac49ff910c2f1e35b9eebed7ca4c3b

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