Tach lets you define module boundaries in a Python monorepo, automatically detect all cross-module dependencies, and then validate those dependencies. If ‘billing’ shouldn’t depend on ‘core’, you can enforce that with Tach.<p>You can also visualize your module graph, and use it for selective testing - running tests only on the modules impacted by your changes.<p>The core static analysis is done in Rust, so Tach is quick enough to be part of local development.<p>We’re building Tach to help engineering teams maintain velocity while scaling a monorepo. We’d love for you to give it a try!