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.17.tar.gz (1.2 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.17-cp314-cp314-win_amd64.whl (619.6 kB view details)

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.3.17-cp313-cp313-win_amd64.whl (619.5 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.3.17-cp313-cp313-manylinux_2_28_x86_64.whl (704.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.3.17-cp313-cp313-macosx_11_0_arm64.whl (666.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.3.17-cp312-cp312-win_amd64.whl (619.6 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.3.17-cp312-cp312-manylinux_2_28_x86_64.whl (704.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.3.17-cp312-cp312-macosx_11_0_arm64.whl (666.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.3.17-cp311-cp311-win_amd64.whl (619.4 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.3.17-cp311-cp311-manylinux_2_28_x86_64.whl (706.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.3.17-cp311-cp311-macosx_11_0_arm64.whl (666.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17.tar.gz
Algorithm Hash digest
SHA256 260cddf6945b3f607a86024a1535a86b43530758364417ace59b920c4179371d
MD5 54c4344dc66ab08d76ed43ed5f11dd9e
BLAKE2b-256 c65329b260ab073591031293c13bf2eae0591e1f070d4b01b501ef97c5f24cfa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 619.6 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a70d2db1e9b34e1c54f9e1bb0a4f6efdc4aa229b65ee7ccee18f78d3e9d1008f
MD5 de4f5b3bf0154a45d1e35b0ca556f4e7
BLAKE2b-256 a937b040d163bf7744057fc3db781ce911d4f6f831782fd417e77740699afd22

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 619.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9dec8f91f1ebf376ede14469c25718d025f755e709362e6869e4ae07365975c8
MD5 88d9cd2259de329f96b7c2fc874c18be
BLAKE2b-256 b4b284b8e1bf61cddd023660d1ae5542aaf0941720bb91dee27f53e64c3b0cd8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 704.6 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 807cc9bd78a2bfb1c0f60a824f772de10e803049887f421c17acde4a9d154116
MD5 d8b142e0d3534625ca805ba8f69743d8
BLAKE2b-256 c8fb3a70f88b5e218137ed8754486cc1c8dd3b34b6bfe1a892921e3a81c7f20c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 666.6 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 887fa9a786c00267232356184410397257a6e486a0dd4ca64f01665cba473d64
MD5 c89b045f77c5ba2962d1771fed52943e
BLAKE2b-256 79b305ac5e20155cd605c388521a6bfd390c4807ae952cb809e3b6587ed44d9d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 619.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fed64704385d90334b8b7d70b170ae5ac49316ee28b341f41031c0c1add38522
MD5 c170b421788327f7b3d49082fc3114cb
BLAKE2b-256 5f7aa4fc0996247f8e9c62f17954ff686f16f6893bfcf332fb1cd7ce9b4eb430

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 704.6 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8768d60b0ec9e217347ddfc5e2a18ad1020d93df9faf24d24b834adfa343d2da
MD5 f09ccba23d82d49efe2dcf82adf6e352
BLAKE2b-256 073bb3792acfe18e8532742c022622753aa453b42c7e89576c94048e71fb0c9d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 666.5 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e4c417997a6738be7ed27e55b3a759f8b05ac8f0343e0cf06806ec9298b370fc
MD5 6894943c2dc960cba9ce4455a30c749f
BLAKE2b-256 e6a5bf1f999e88556aeaf17f410b0b1a2ec06c7a97b130125f8950bf553fb798

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 619.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f86e9fdfe3e3c2e78b176acebae977635b815680ddfc201fece1fb75c5be46a0
MD5 0c741f2347b6072ac82faffcce4f6ae7
BLAKE2b-256 e25f6c4b3a8b7c333f4f411a1fc5574abc2fb518655c5ea75a7cb8be4f28acdc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 706.1 kB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 61c610cbadc88661697c55a30ec6cbe25a744a73cf8001c8ef2c1a2c23c56f46
MD5 368e049d6b059a312a6454b12b9fdde1
BLAKE2b-256 97694d1a019e561e8042dee9064e53d3d9714cf9650f659233d20bccda9448d9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.3.17-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 666.8 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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.17-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e55e3cab545ceeb93044f36c13e7bb2708b46a0a5d5b91c768fa82b02c74acc
MD5 ec905a487b59b566fcadd6ad343a448a
BLAKE2b-256 17767dcd6843f16b63d167c93f4b43d2e54c543ad695fa9ef5a96739624a9e74

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