--- id: tach version: "0.35.0" license: unclear license_treatment: permissive maintenance: active --- # tach — A Python tool to maintain a modular package architecture. License: permissive · Maintenance: active · Downloads: 5.0M/mo ## What it is and what it does Tach is a Python tool written in Rust that enforces architectural boundaries within a codebase by validating module dependencies, public interfaces, and preventing circular imports. It works by reading a configuration file (tach.toml) where you define module boundaries and their allowed dependencies, then checks your code to ensure imports respect those rules. You run `tach init` to interactively mark module boundaries in your project, then `tach check` to validate compliance. It integrates with CI/CD pipelines, pre-commit hooks, and IDEs, and provides visualization and reporting commands. The tool has no runtime impact—it only runs during development and testing—and can be adopted incrementally, allowing you to enforce rules on some modules while leaving others unchecked. Use it for: - Enforce layered architecture in a monolith by preventing lower layers from importing upper layers - Detect and prevent circular dependencies between modules before they cause import errors - Define and validate public APIs for modules so internal implementation details stay private - Visualize your project's dependency graph with `tach show` to understand coupling - Integrate module boundary checks into CI/CD to catch architectural violations before merge - Incrementally adopt modular structure in legacy codebases by checking only new or refactored modules ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Tach enforces module boundaries, dependency rules, and public interfaces in Python projects, detecting violations like undeclared imports, cross-module calls outside public APIs, and circular dependencies. Yes, if you maintain a Python monolith or multi-package project and want to prevent architectural drift. The tool is actively maintained, has no runtime overhead, and integrates cleanly into existing workflows. Medium install friction is offset by broad platform support and pre-built wheels. No known vulnerabilities. Start with `tach init` to evaluate fit for your codebase. ## Install pip install tach uv add tach poetry add tach ## Installing tach Before you install: Medium install friction due to compiled Rust components, but pre-built wheels cover common platforms (macOS, Linux, Windows, multiple architectures). Active maintenance with recent releases; last commit 2026-06-11 and 2788 GitHub stars indicate ongoing development. License in practice: MIT license (permissive) means you can use, modify, and distribute Tach freely with minimal restrictions, making it suitable for both open-source and commercial projects. Quickstart: pip install tach # In your project root: tach init # (Interactive setup: navigate with arrow keys, mark module boundaries with Enter) tach check # Output: ✅ All modules validated! (or ❌ with violations) Requires Python 3.10 or later. Compiled Rust wheels require a compatible platform; pure-Python fallback is not available. Verify before relying: - Whether cp37-abi3 wheels indicate broader Python version support than requires_python >=3.10 suggests - Performance characteristics when checking large monorepos or projects with thousands of modules - How incremental adoption works in practice and whether partial enforcement can coexist with legacy code ## Package facts - License: not declared (permissive) - Python support: supports_current - Install friction: medium - Maintenance: active - Downloads: 5.0M/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags python module boundary enforcement, dependency graph validation, circular dependency detection, modular monolith architecture, import policy enforcement, python package architecture, module interface enforcement, architecture-enforcement, modular-monolith, dependency-management [View on SkillFed](https://skillfed.io/packages/tach) · [View on PyPI](https://pypi.org/project/tach/)