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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.6.0-cp313-cp313-win_amd64.whl (716.1 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl (808.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.6.0-cp313-cp313-macosx_11_0_arm64.whl (762.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.6.0-cp312-cp312-win_amd64.whl (716.2 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl (808.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.6.0-cp312-cp312-macosx_11_0_arm64.whl (762.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.6.0-cp311-cp311-win_amd64.whl (716.0 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.6.0-cp311-cp311-manylinux_2_28_x86_64.whl (809.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.6.0-cp311-cp311-macosx_11_0_arm64.whl (762.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0.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.0.tar.gz
Algorithm Hash digest
SHA256 e46fd1fb3fd4b62020b3cc62b9bcb451be980280adc9441c6244114e3ebb6bfa
MD5 9251bab50d4ebaed7464f865a54c1a84
BLAKE2b-256 8f155cdcddc79ad705ef0e4b01d1bc701edea9d599cb8e8fabb1e1727eab7a40

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 716.1 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.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0774dbb088188eaba2645d7bca6a08267f39927a80ad36fbf65f7dbd18fc1aeb
MD5 89d163736c5f733bc39262a10a0435cd
BLAKE2b-256 d3d9847599456081adcf15e484037ec660b8bccbc7fef117a38f2297328c9f42

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 716.1 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f7fdf5818b404097f6d7162c4ed30b0680c9d7baa27db5caecf03f4c7211d958
MD5 bcc937af3f62d3c35b99aa726c0fbf3a
BLAKE2b-256 b1eebce1e5bb4f86ddaf298808a55a9b0f0cb352fbd3e87626468ed95dfe5fbf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 808.0 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.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 752c38f8a694f46907fb929dcf7ae0b862e547ccb25d8c45f4e3125e16e3efb5
MD5 8d35ee91d9c5e869bae5b4700f239e6e
BLAKE2b-256 b26c1d5e018ae219cc6a2b765917b5024ace8077b37ac9f7e0b50874700fda52

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 762.6 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.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b7bebffd9b544c0ed89f810ac6aa0cd70005190636ab2a0ebc1b147e03dff940
MD5 37d8bf1267cee6c19032c1252ae4cf8a
BLAKE2b-256 c709567ccb5f368c778c4b0b80deee3508d4a70c897393280fecfb417fea2a04

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 716.2 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d4c7e6859b2a352049af9ba463eefcb6fcf60d4fd43d782d6613fa71604d5a89
MD5 a4c05121f14557705d966d8535589477
BLAKE2b-256 fc4b483593a516444c102e7e99708a7372e915f640d6529f84c75e618781ced2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 808.1 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.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 92cb6c5a1426dd8413b6436dbd6d04b05a2dea7ad08a1044a0525facd5884112
MD5 5e31832a06f73f252a7d1a54b099c72f
BLAKE2b-256 0bfb2d78934e57094069cbf1041da30fa77be01b860083929cdc15168aa9b4bb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 762.6 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.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f90b3e7e560b81435efe9c128a67978da5078748a760e262c3587806a061276d
MD5 90f8a612a089b34fc7b67ad61e03c989
BLAKE2b-256 e38f72b485c8823d3225511fd2e9ffcd1e1d9d8fef5c646097aed40ca2bfe0e7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 716.0 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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2cc26d07c01a46e41f7d183a5ce6dd4d5cc45c4ddd71616d100490e98c926576
MD5 73f6570ce369dafe383b2f1590f46336
BLAKE2b-256 c5d968c42b1852ab39fec980fdee1c6e37fc1b7b6604e073a125b814e53549c3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 809.5 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.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5c65176418116ebf1204b3a6ac843f7411e83f56c5694173292ce387125d5af0
MD5 6a2bc25bbb3ab97b87d0dbc742738433
BLAKE2b-256 49eb6f364c0ff6df5da300388b7fc7ff288ef053930f836bfc9d595e30e81e16

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.6.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 762.8 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.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a7f93e047694309fc6330233a9b6423f918609d926d02a45bed9048eb3479e6
MD5 c5174263aaf014dc03c8e9034976c25a
BLAKE2b-256 d4cecc60a6f20b230fcc3b3d7c819a1b6d23b8de2a6ce7c1467de9804f62ac8f

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