BTW. One of the things I want to fix - I know how to easily remove that
limitation:

Postgres:
⚠️ Projects share the same database container (e.g., one postgres container
for all)

Breeze has a somewhat prepared feature for that - that we use to run our
tests in CI in parallel for multiple test types - there we have several
"full breeze docker-compose instances" running on the same machine
(including Postgres or MySQL databases). We can reuse that one.

J.


On Fri, Oct 31, 2025 at 7:33 PM Jarek Potiuk <[email protected]> wrote:

> Excellent tool Kaxil !!!!
>
> I love it. I already installed it and I am giving it a go (and I might
> have some PRs soon - I already see one thing I would like to change :D)
>
> I do manage a lot of those manually - but it is certainly worth trying to
> automate some of that especially if you work on many PRs in parallel. I
> have a feeling that this is going to be my new best friend.
>
>
> On Fri, Oct 31, 2025 at 2:12 PM Kaxil Naik <[email protected]> wrote:
>
>> Hello fellow Airflow developers,
>>
>> Before I go on paternity leave, I wanted to share a tool I've been using
>> that might help fellow contributors who work on multiple PRs
>> simultaneously.
>>
>> ## What is ABM?
>>
>> *Airflow Breeze Manager (ABM)* is a CLI tool for managing multiple Airflow
>> development environments with isolated breeze instances. It uses git
>> worktrees and port isolation so you can work on multiple branches at the
>> same time without conflicts.
>>
>> GitHub: https://github.com/kaxil/abm
>> PyPI: `uv tool install airflow-breeze-manager`
>>
>> ## The Problem It Solves
>>
>> When working on multiple Airflow PRs/features simultaneously, we face:
>> - Port conflicts when running multiple breeze instances
>> - Container name collisions (all use the same Docker Compose project name)
>> - Lost context when switching branches
>> - Waiting for containers to restart every time you switch
>>
>> ## How It Works
>>
>> ABM creates isolated environments for each branch:
>> - ✅ Git worktrees (multiple branches checked out simultaneously)
>> - ✅ Unique port assignments for all services (webserver, flower, postgres,
>> mysql, redis, ssh)
>> - ✅ Isolated Docker containers (via unique COMPOSE_PROJECT_NAME)
>> - ✅ Branch-specific documentation that persists (PROJECT.md, CLAUDE.md)
>> - ✅ GitHub PR tracking
>> - ✅ Disk space management (freeze/thaw node_modules)
>>
>> ## Quick Example
>>
>> ```bash
>> # One-time setup (run from your Airflow repo)
>> cd ~/airflow
>> abm init --airflow-repo . --worktree-base ../airflow-wt
>>
>> # Create projects for different features
>> abm add feature-async --create-branch
>> abm add bugfix-scheduler --create-branch
>>
>> # Work on both simultaneously
>> abm start-airflow feature-async      # localhost:28180
>> abm start-airflow bugfix-scheduler   # localhost:28181 (different port!)
>>
>> # Each has its own isolated environment - no conflicts!
>> abm list  # See all your projects
>> ```
>>
>> ## Links
>>
>> - GitHub: https://github.com/kaxil/abm
>> - Quick Start: https://github.com/kaxil/abm/blob/main/QUICKSTART.md
>>
>> I hope this helps some of you be more productive with parallel
>> development!
>>
>> Regards,
>> Kaxil
>>
>

Reply via email to