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

🌱 Prep-Seed Validation (v0.3.13+)

  • ✅ 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.3.13 (Latest - January 31, 2026)

What's Implemented:

  • ✅ All 4 migration strategies
  • ✅ Multi-agent coordination (production-ready, 123+ tests)
  • ✅ Prep-seed validation (5 levels, 86+ tests)
  • ✅ Git-aware schema validation
  • ✅ Schema diff detection
  • ✅ CLI with rich output
  • ✅ Comprehensive tests (4,000+)
  • ✅ 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.3.15.tar.gz (1.1 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.3.15-cp314-cp314-win_amd64.whl (612.5 kB view details)

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.3.15-cp313-cp313-win_amd64.whl (612.5 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.3.15-cp313-cp313-manylinux_2_28_x86_64.whl (697.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.3.15-cp313-cp313-macosx_11_0_arm64.whl (659.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.3.15-cp312-cp312-win_amd64.whl (612.5 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.3.15-cp312-cp312-manylinux_2_28_x86_64.whl (697.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.3.15-cp312-cp312-macosx_11_0_arm64.whl (659.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.3.15-cp311-cp311-win_amd64.whl (612.3 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.3.15-cp311-cp311-manylinux_2_28_x86_64.whl (699.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.3.15-cp311-cp311-macosx_11_0_arm64.whl (660.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15.tar.gz
Algorithm Hash digest
SHA256 55ea9fb303578bbd579f838765edbf6980936acc2fafd87afeb281b5ebb84d95
MD5 38198f1361d7336f401119c35af5dffc
BLAKE2b-256 966fd20d82dc9acdb99b621e7ae6be7019698df9618be12ba26a2cb62558608b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 612.5 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7752614696f256f1aed2defa35dada6cc5047773400dc80d01b353799d297733
MD5 c8915a02d96645090dfba84d004b68e2
BLAKE2b-256 bed7f689b8387ac89d1008b9966328065769ef14674025c6c44ddd30672faede

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 612.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2c5fc9533a59edf73c94b4bd04fa2138e3c84ebf5669ad93ff2f19372aed2aed
MD5 fce52a98e284d0a73d941aaa30e43d60
BLAKE2b-256 537ab5dc6380cdac5ef2d872d8de1ee9f5b4cd00fb239a5b5f9028c8e06feb6f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 697.7 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea576f2b70d243476ddf8987dc4de58be6491b3c5f37d0df62b5acbb722090c7
MD5 d14723f5d179058c35fd8a237e0fe02a
BLAKE2b-256 076b135520259205cb9224f074a2fc8cabe9d503947f2c2ed6110a43c7fd3dd4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 659.8 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 576cf26bc58c084e5487d88bb26e3d074fac83d54ee37d3e18e0fa15f32adcb9
MD5 eb4ce064db17933d6cfd521badf60126
BLAKE2b-256 14b8bb2efc376fe7505d9906b5225cbb721469667847715f4eb9a68a57cd8f97

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 612.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6697ca75618193ec4c92ec19c621907d965705f746351c608874a8e9c517a4df
MD5 822422115c89d8bf62f385ca6fd1bb4c
BLAKE2b-256 7eff5c81e5cf2460236923b3a02b78dfe80adc9bca6f277a9bb339d70050bb10

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 697.7 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4edd01cff6fc7df54bf1671be0463037c4db7dd3e825323de29a4f328241f94a
MD5 fcfd45ea8248d0f6fa981f4cc448d5e6
BLAKE2b-256 aad8623cb86f60f114cb08251e8051f0d38bdcc087611c536bbf5a65fd50a4f3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 659.8 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c0dfd1c04af803f04a4fae79ecaf3ff57cfcf083efeadd7eda5097db864afe3
MD5 599910b6cf7c1857eb57372491fd5f2c
BLAKE2b-256 12fbf97a40e807dcb7e3969acb6986199427b0cddb5f2056a27f121ea27bfe51

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 612.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cd59b149fa7eea8dcc6093483fe715cf29542294581bd254df356916c124022c
MD5 1b98501dcfe480baf7d36bb71e210780
BLAKE2b-256 c1608c0dba82731438bddd8bdc0210fc276c23b41d36f7f1b718adfcd50e5315

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 699.2 kB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cba33e132c084238d40dbe815627965dceaa1451bb9100d1c6540193c8f263c0
MD5 3429715a78dac305cf8b4ce5192f61fc
BLAKE2b-256 d779b6a4c0638936cb29cc00b67def66a9215ad780b7401ab370d034f0c87b04

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.15-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 660.0 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","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.3.15-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 667c8801e85a6fccec9a34e3d7110f94ed8724992e4069f6556348971f552fb0
MD5 85d64281eb7763d1bd0ed8d7105dfe3f
BLAKE2b-256 4e2deae47145179ee35b2ac519f7db453c0d6b49f78d1708dc5d8789917da024

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