# tach-org/tach

A Python tool to visualize + enforce dependencies, using modular architecture 🌎 Open source 🐍 Installable via pip 🔧 Able to be adopted incrementally - ⚡ Implemented with no runtime impact ♾️ Interoperable with your existing systems 🦀 Written in rust

Repository: https://github.com/tach-org/tach
Canonical: https://ross.abutalabs.com/products/tach
Homepage: https://docs.gauge.sh/
Language: Rust
License: MIT
License Family: permissive
Topics: ci, cli, developer-tools, open-source, package, static-code-analysis, rust, code-quality, config, dependency-management, devops, framework, library, monorepo, productivity, programming, terminal, python
Last push: 2026-06-11T12:24:46+00:00

## Health v2 (maintenance only)
Score: 77/100 (v2, computed 2026-09-03T02:39:23.370411+00:00)
- activity 87, release rhythm 71, longevity 67
- inputs: {"age_days": 945, "days_push": 83, "days_rel": 113, "gap_med": 3, "n_releases_24m": 76}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2801, forks 91 (observed 2026-08-28T04:07:22.605325+00:00)

## What it is
Tach is a CLI tool, written in Rust, that enforces dependency rules and public interfaces between Python modules to support a modular monolith architecture. It analyzes imports statically with no runtime impact, integrates with CI and pre-commit hooks, and can visualize the project's dependency graph.

## Use cases
- enforce module boundaries in a python codebase
- prevent circular imports between modules
- visualize my python project's dependency graph
- add architecture checks to CI pipeline
- adopt modular monolith architecture incrementally
- define public interfaces for python packages
- run only tests impacted by my changes
- manage internal dependencies in a monorepo

## When to choose
- you want to enforce module boundaries and public interfaces in a Python project with zero runtime overhead
- you need to prevent coupling and dependency cycles in a growing codebase or monorepo
- you want architecture checks in pre-commit hooks and CI, adoptable incrementally
- you need to visualize or report on your project's internal dependency structure

## When to avoid
- you only need external package dependency management (use pip/poetry/uv instead)
- you need runtime dependency injection or dynamic module loading enforcement
- your project is small enough that formal module boundaries add more overhead than value
- you need enforcement for languages other than Python

## Facets
- artifact type: cli-tool
- maturity: active
- function: linter, developer-tools, cli, dependency-audit, code-review, ci-cd, data-visualization
- domain: developer-tools
- platform: cli, python, cross-platform, windows
- tags: modular-monolith, module-boundaries, dependency-enforcement, architecture-governance, pre-commit-hooks, monorepo, rust-core, tach-toml, import-analysis, dependency-graph-visualization, static-code-analysis, python, software-architecture, code-quality, devops, macos, linux

## Member repositories
- tach-org/tach (main) score 77

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:07:22.605325+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T08:14:34.329194+00:00, confidence not recorded.
  - readme: https://github.com/tach-org/tach (fetched 2026-08-28T04:07:22.605325+00:00, sha bdc861d3cbec)
  - homepage: https://docs.gauge.sh/ (fetched 2026-08-29T09:54:39.918881+00:00, sha 0692edd6c34e)
  - site_page: https://docs.gauge.sh/getting-started/introduction (fetched 2026-08-29T09:54:39.927613+00:00, sha 3a4199449bf2)
  - site_page: https://docs.gauge.sh/getting-started/why-tach (fetched 2026-08-29T09:54:39.929755+00:00, sha 2aff644b2696)
  - site_page: https://docs.gauge.sh/getting-started/getting-started (fetched 2026-08-29T09:54:39.931444+00:00, sha 46353fddbc79)
  - site_page: https://docs.gauge.sh/usage/faq (fetched 2026-08-29T09:54:39.933139+00:00, sha 71f7eed944f7)
  - site_page: https://docs.gauge.sh/contributing/working-with-docs (fetched 2026-08-29T09:54:39.935110+00:00, sha ec145ac0b53b)
- Data as of 2026-08-30T08:39:29.467469+00:00.
