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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.8.1-cp313-cp313-win_amd64.whl (705.1 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl (797.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.1-cp313-cp313-macosx_11_0_arm64.whl (751.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.8.1-cp312-cp312-win_amd64.whl (705.0 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl (797.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.1-cp312-cp312-macosx_11_0_arm64.whl (751.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.8.1-cp311-cp311-win_amd64.whl (704.8 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl (798.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.8.1-cp311-cp311-macosx_11_0_arm64.whl (751.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1.tar.gz
Algorithm Hash digest
SHA256 99c203ceb5cc4eac3a5607d77f1ff34747c8da65ec15d2362770087b63283939
MD5 a8dfcfd694223eb44031effeb854cbda
BLAKE2b-256 be152ccb156a6461ca6689ecd6457a47061c976e15f453bab40de4fcf16d81ce

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 705.1 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2bcbb0502792610463fad99af82ef536ba32c7f6fd1eb4579ce9ecc21e246a85
MD5 1299997abef681c4cee1a1ad38b34c14
BLAKE2b-256 7928e747ba4a067bec5a8ca72badc6663e5b913733ce7530b22e1ba3e256c361

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 705.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d185fab77044da21397c34a5bd90aed0ae2cff4a657ab01649ea92428b7c000e
MD5 8a86cd0f3604ff724de6b644497626c9
BLAKE2b-256 2e8445de822b8003b2867e8f04bcff49fbea6acb7b01cb8f12b7a154ab468cc5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 797.1 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d80ff06d35f0d11156ff38fdf9d76b64927c358528e5b533732d1cf37f5122b6
MD5 3402e5caae1e32fcf2d1f8c0622111aa
BLAKE2b-256 b663d5f79388febcd20557894ae0ba7979b75f536690b0c1198be1140783e945

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 751.2 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3a54ed93c0faefede1c815e1e0f4fbb41c64d3b065884e2e5f33eb945595eed
MD5 307ed774264c1cf96789897138233ddf
BLAKE2b-256 f91eef490385e6c189934986a5854ed9afe1c47694090847cbbf503086bdb57e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 705.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 23e33b7bfb6585ceef0da3acc78be4e6c2b209b658444ed6e5ae313140679eec
MD5 1993d65253878c4101bf4c80962a8360
BLAKE2b-256 4b53a375f705e75bfb5ac21940bd75fbbc56fac383739a7e8c86c9e44823c7e5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 797.2 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5cde2d195fb4c7f1caa0668587e60b2d791ecad16036473c4a42bdd02c2c518
MD5 b699017e825486b4655b1d98e955823d
BLAKE2b-256 dd601b22c18c030a9156e9c0e32a6a64230f90b07bed11444d9b0aa3bf5571ce

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 751.1 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a63fadd37d67830982199d91b03067e7b47c1c0f1092f82ef1e404b5af988b0
MD5 c09356bad355b728850ef07a987269d8
BLAKE2b-256 b7a07672f6f0310d79aedb77ef5250ef00319bba9b65fc742dc25fde859d47b8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 704.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a319d1b96cb02b88c4cf8ce959b9b2f79b5324392607e0ccc7214d7eba691579
MD5 e0f42d15a8f990c9ec4c7367cd4d6e90
BLAKE2b-256 4d5c2f32deb716ea2b2f2c741dc0891219f17708908f94da8762fe27010f5361

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 798.6 kB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea9c1ebe1b7312a4940d4c5355cfaaedc68667ea6a6d78e8f2192bd77a2b2785
MD5 8f8f4b9dfe8d1646ee020058b51d896c
BLAKE2b-256 b57ef0680810ffe6738e068c2a76e5e42126f87acea37568ee686fa0f2f53df4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.8.1-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 751.5 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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.8.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3f31d91e1c04ceab5e3ac95851eec2a662fbbf67a1d6d2350a023fa1d0e09ce
MD5 1f520a6d6ce396f9bd8fdd4c276428c3
BLAKE2b-256 1706a5bb8c18fccbdae88099eafc903d0f176a4d3738013939d924c5421c894b

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