Fallow
Linters enforce style. Formatters enforce consistency. Fallow enforces relevance.
AI writes code. Nobody deletes it. Every file added by an agent, every export left after a refactor, every boundary your architecture agreed to enforce — it accumulates. Linters work file by file. TypeScript works type by type. Neither builds the full , so neither can see what nothing depends on.
Fallow does. One pass covers unused code, circular dependencies, architecture boundary violations, duplicated logic, and complexity hotspots. Rust-native, deterministic, zero configuration. Most projects finish in under a second. Run it today.
Installation Instructions
Linux
Linux
Download Fallow
{
"url": "{{ .SVar `.tool.fallow.download.url` }}",
"destination_folder": "{{ .PDownloads }}",
"output_filename": "{{ .SVar `.tool.fallow.download.filename` }}",
"overwrite": false
} Extract Fallow Release
{
"destination": "{{ .PTools }}/fallow/{{ .SVar `.tool.fallow.download.version` }}",
"skip_symlinks": true,
"preserve_permissions": true,
"remove_existing": true,
"source": "{{ .PDownloads }}/{{ .SVar `.tool.fallow.download.filename` }}"
}
MacOS
MacOS
Download Fallow
{
"url": "{{ .SVar `.tool.fallow.download.url` }}",
"destination_folder": "{{ .PDownloads }}",
"output_filename": "{{ .SVar `.tool.fallow.download.filename` }}",
"overwrite": false
} Extract Fallow Release
{
"destination": "{{ .PTools }}/fallow/{{ .SVar `.tool.fallow.download.version` }}",
"skip_symlinks": true,
"preserve_permissions": true,
"remove_existing": true,
"source": "{{ .PDownloads }}/{{ .SVar `.tool.fallow.download.filename` }}"
} Binaries
- fallow
- fallow-lsp
- fallow-mcp