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

Uploaded CPython 3.14Windows x86-64

fraiseql_confiture-0.5.7-cp313-cp313-win_amd64.whl (706.4 kB view details)

Uploaded CPython 3.13Windows x86-64

fraiseql_confiture-0.5.7-cp313-cp313-manylinux_2_28_x86_64.whl (798.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.7-cp313-cp313-macosx_11_0_arm64.whl (753.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fraiseql_confiture-0.5.7-cp312-cp312-win_amd64.whl (706.5 kB view details)

Uploaded CPython 3.12Windows x86-64

fraiseql_confiture-0.5.7-cp312-cp312-manylinux_2_28_x86_64.whl (798.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.7-cp312-cp312-macosx_11_0_arm64.whl (753.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fraiseql_confiture-0.5.7-cp311-cp311-win_amd64.whl (706.3 kB view details)

Uploaded CPython 3.11Windows x86-64

fraiseql_confiture-0.5.7-cp311-cp311-manylinux_2_28_x86_64.whl (799.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

fraiseql_confiture-0.5.7-cp311-cp311-macosx_11_0_arm64.whl (753.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7.tar.gz
Algorithm Hash digest
SHA256 b42b9f3129424fa5feb7f4659dc511cb32c056cd756b359e059abd255dc97b3a
MD5 1abaff4697df8d144e08e09a6aefba7b
BLAKE2b-256 eef2fe74569dd3e28f0ded11c3b627688af44604b2ff0cc596d0d281690aa137

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 706.4 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 eb05a9596d8aefa01322340ffa3b0620adf68fd692b538a976a5bfb1e8935aca
MD5 5fba41ea503fe543f309d08361b4750a
BLAKE2b-256 0baf4b175bc7578570641e211b11913a1b4a21754ab6a481ff92c7db359342e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 706.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 94ab2e1d49c88e64ec193364b714088a3d4f584eb21f4d6a3737d9fba5cdcfa9
MD5 d8e909685c81a1bde6a8b1143d0d4889
BLAKE2b-256 379548cfa5f2845e129421232b972d727a7313acae4815bf7376154b56381740

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 798.4 kB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dcfd7eb21327b94fdfae5d4f989ff491ef0a5d9bcf57ffab4f96d1d12ea188ff
MD5 ce704257c585acabe3dfbe0ab84009d1
BLAKE2b-256 1fd0ea093ce0658a63ee8fb497bfbfdce48237c98e0a04356081d53da8a1eb69

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 753.0 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 36f1bf0f8caf90f21d69772355dff4d08b61b84cd583253b810a8ffeede67a6a
MD5 2bc1d8296c0ec0a45869f943951de425
BLAKE2b-256 6b912b4b83437a95337f0991c5fb4f7c307a9daa418bc67c98c5cdfb636a23be

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 706.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cef8086fb7e200a4ef3a9ce1524c97f9b5448af443170b52544146fbb35a21b1
MD5 064bc510bbcf9abcbfe3b8bb03bb9f37
BLAKE2b-256 209d688d00f89a89e21ce9ba1f94b19fb438ec800d749b5a03209413b5a66462

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 798.5 kB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4f23d8f522e0acaea815649d44627e4ec7122db8951cc7f5ca44e31bffe22a6c
MD5 e988e9462f3a70ab17808af0911bee7e
BLAKE2b-256 0785bb9c2a2c0dd48d298a7d7944fd4642d54d813dd13959bcce48a565e7e936

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 753.0 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6b088ef39d1f965a9224b05789e95ecc49008c0c9c15ea92b80e75f4dec1edc6
MD5 f42d40f280f7570495811123e6823661
BLAKE2b-256 4aebf337170c5ea40e1c3699785a42e069512b6797d6f78eed466d2cac41c4bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 706.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 04094aceb05c6e2028df16c399064bbbbd50bea4560fc6b186457dc18791fa04
MD5 12b2b462d64dcee22883f049835e43f1
BLAKE2b-256 3fb24149e94e1ed95b1533d6bfac5e6cc77e0ca9b0c7774883ac704e6b4dda52

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 799.9 kB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ba39ad6f4c8724e27c408d48da7d2ffec06a855ca6db3dcedc79811862ba423e
MD5 8e5617ccd129c0a7318ce295a128c2ec
BLAKE2b-256 973c5bd8311b6dc7797f9e2300652f073b5858e0e7c915b74a62fda70ada7713

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fraiseql_confiture-0.5.7-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 753.2 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.5.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32c7a0de8d80135c42d6894600cfa7703abb6a3e20f2fb9136aba62dc66b1862
MD5 a523019830f70978f9d318ea3eb0f9c1
BLAKE2b-256 c853be5151282ce2abe89fa322ceb2f93134ac3544d8b2e6a76eb742b6bcf47d

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