fallow

From public sources

Codebase intelligence for TypeScript and JavaScript. Health, complexity hotspots, duplication, architecture boundaries, circular dependencies, design-system drift, and unused code, from one graph. CLI, GitHub Action, LSP, MCP, and VS Code. Rust, MIT licensed.

MCP serverCategory: MCP Servers · Git & developer toolsOpen sourcedata checked Oct 15, 2026

Overview

  • architecture
  • circular-dependencies
  • cli
  • code-duplication
  • code-health
  • code-quality
  • codebase-intelligence
  • complexity
  • dead-code
  • developer-tools

Installation

Commands are shown, never run by the marketplace. Check them against the official documentation.

Compatibility

Unknown means no evidence was found — not that the product is incompatible.
PlatformStatusArchitectureEvidenceConfidence
Claude (web & desktop)Unknown———
Claude CodeUnknown———
CursorUnknown———
VS CodeUnknown———
WindsurfUnknown———
ChatGPTUnknown———
WindowsCompatiblearm64official build in release v3.37.0: fallow-aarch64-pc-windows-msvc.zip0.70
Compatiblex86_64official build in release v3.37.0: fallow-lsp-win32-x64-msvc.exe0.70
macOSCompatiblearm64official build in release v3.37.0: fallow-aarch64-apple-darwin.tar.gz0.70
Compatiblex86_64official build in release v3.37.0: fallow-darwin-x640.70
LinuxCompatiblearm64official build in release v3.37.0: fallow-aarch64-unknown-linux-gnu.tar.gz0.70
Compatiblex86_64official build in release v3.37.0: fallow-linux-x64-gnu0.70
Node.jsCompatible—package manifest: package.json name0.60

Releases

checked Oct 29, 2026
v3.37.0LatestOct 27, 2026Official source ↗

Files in 3.37.0

The marketplace does not host these files: downloads go to the official source. Files have not been scanned by us.
FilePlatformSizeSHA-256Download from the official source
fallow-aarch64-apple-darwin.tar.gzmacos · arm64 · tarball39.5 MB02caed6d3da5…Official source ↗
fallow-aarch64-pc-windows-msvc.zipwindows · arm64 · zip38.7 MB26529ecf3a03…Official source ↗
fallow-aarch64-unknown-linux-gnu.tar.gzlinux · arm64 · tarball42 MBcbbf98681687…Official source ↗
fallow-aarch64-unknown-linux-musl.tar.gzlinux · arm64 · tarball41.8 MB8b43b327c6c7…Official source ↗
fallow-darwin-arm64macos · arm6432.6 MBc1b946d84de8…Official source ↗
fallow-darwin-x64macos · x86_6442.1 MB6eb76320250f…Official source ↗
fallow-linux-arm64-gnulinux · arm6437.4 MB272d24bf514c…Official source ↗
fallow-linux-arm64-musllinux · arm6436.8 MB16694d816605…Official source ↗
fallow-linux-x64-gnulinux · x86_6441.6 MB913fe1b81539…Official source ↗
fallow-linux-x64-musllinux · x86_6446 MB710d174c17a2…Official source ↗
fallow-lsp-darwin-arm64macos · arm6418.6 MB93a8ea804dc4…Official source ↗
fallow-lsp-darwin-x64macos · x86_6422.4 MB801c36073c2e…Official source ↗
fallow-lsp-linux-arm64-gnulinux · arm6420.6 MB3f91368c2048…Official source ↗
fallow-lsp-linux-arm64-musllinux · arm6419.9 MB0880cea84af2…Official source ↗
fallow-lsp-linux-x64-gnulinux · x86_6424.1 MB00ba15f4a98e…Official source ↗
fallow-lsp-linux-x64-musllinux · x86_6425 MB29ab3da40a8f…Official source ↗
fallow-lsp-win32-arm64-msvc.exewindows · arm64 · exe19.3 MB9f0abba83c56…Official source ↗
fallow-lsp-win32-x64-msvc.exewindows · x86_64 · exe23.6 MB9ac05369712b…Official source ↗
fallow-mcp-darwin-arm64macos · arm6425.3 MB575c97e65e2e…Official source ↗
fallow-mcp-darwin-x64macos · x86_6431.3 MB09babb605c9a…Official source ↗
fallow-mcp-linux-arm64-gnulinux · arm6428.6 MBf5a05aadeb27…Official source ↗
fallow-mcp-linux-arm64-musllinux · arm6427.8 MBb23366fe361b…Official source ↗
fallow-mcp-linux-x64-gnulinux · x86_6432.1 MBd4a9e5581532…Official source ↗
fallow-mcp-linux-x64-musllinux · x86_6434.8 MB547cb601d565…Official source ↗
fallow-mcp-win32-arm64-msvc.exewindows · arm64 · exe26.9 MBe185888f4d20…Official source ↗
fallow-mcp-win32-x64-msvc.exewindows · x86_64 · exe32.7 MB4b7e75e9a5eb…Official source ↗
fallow-similar-code-darwin-arm64macos · arm648.8 MB7ef09fe4012e…Official source ↗
fallow-similar-code-darwin-x64macos · x86_649.4 MB192be03c62db…Official source ↗
fallow-similar-code-linux-arm64-gnulinux · arm6410.3 MBa1b196d50298…Official source ↗
fallow-similar-code-linux-arm64-musllinux · arm647.9 MBbf5288a06d95…Official source ↗
fallow-similar-code-linux-x64-gnulinux · x86_6411.9 MB84274cd52334…Official source ↗
fallow-similar-code-linux-x64-musllinux · x86_6410.9 MBa82ad8c0a1ee…Official source ↗
fallow-similar-code-win32-arm64-msvc.exewindows · arm64 · exe6.9 MB7550214e2f32…Official source ↗
fallow-similar-code-win32-x64-msvc.exewindows · x86_64 · exe8 MB88938cb2001b…Official source ↗
fallow-vscode-3.37.0-darwin-arm64.vsixmacos · arm64 · vsix9.5 MB17b827679166…Official source ↗
fallow-vscode-3.37.0-darwin-x64.vsixmacos · x86_64 · vsix10.3 MB50250f6c354c…Official source ↗
fallow-vscode-3.37.0-linux-arm64.vsixlinux · arm64 · vsix9.2 MB4465945efe01…Official source ↗
fallow-vscode-3.37.0-linux-x64.vsixlinux · x86_64 · vsix9.9 MBce129ea6884e…Official source ↗
fallow-vscode-3.37.0-universal.vsixUnknown55.2 MBfe7625573275…Official source ↗
fallow-vscode-3.37.0-win32-arm64.vsixwindows · arm64 · vsix9.2 MB6f4364d2dca4…Official source ↗
fallow-vscode-3.37.0-win32-x64.vsixwindows · x86_64 · vsix10 MB326f200456e5…Official source ↗
fallow-win32-arm64-msvc.exewindows · arm64 · exe35.8 MB88ddfdf3c127…Official source ↗
fallow-win32-x64-msvc.exewindows · x86_64 · exe43.9 MB7e91a5f18523…Official source ↗
fallow-x86_64-apple-darwin.tar.gzmacos · x86_64 · tarball44.5 MBabf1897d6521…Official source ↗
fallow-x86_64-pc-windows-msvc.zipwindows · x86_64 · zip43.5 MBf20ad53eb219…Official source ↗
fallow-x86_64-unknown-linux-gnu.tar.gzlinux · x86_64 · tarball46 MB7c09d9b7812b…Official source ↗
fallow-x86_64-unknown-linux-musl.tar.gzlinux · x86_64 · tarball47.1 MBaf036ba15ce7…Official source ↗
SHA256SUMSchecksums803 B38c70a3b1f49…Official source ↗
inventory.jsonother10.8 KB1f10f747ea8e…Official source ↗
fallow-aarch64-apple-darwin.cdx.jsonSBOM447.4 KB221c386df735…Official source ↗
fallow-aarch64-pc-windows-msvc.cdx.jsonSBOM456.8 KB4cd0c53233be…Official source ↗
fallow-aarch64-unknown-linux-gnu.cdx.jsonSBOM450.8 KB8938beb20658…Official source ↗
fallow-aarch64-unknown-linux-musl.cdx.jsonSBOM453 KB3e57c79a9a29…Official source ↗
fallow-x86_64-apple-darwin.cdx.jsonSBOM448.7 KB7cbff880f273…Official source ↗
fallow-x86_64-pc-windows-msvc.cdx.jsonSBOM455.6 KB12c461e51c1e…Official source ↗
fallow-x86_64-unknown-linux-gnu.cdx.jsonSBOM452.1 KBce6af628ec4c…Official source ↗
fallow-x86_64-unknown-linux-musl.cdx.jsonSBOM454.3 KB43ecd7408f05…Official source ↗
fallow-darwin-arm64.sigsignature64 B62eb3091f3e6…Official source ↗
fallow-darwin-x64.sigsignature64 Bd301a58de916…Official source ↗
fallow-linux-arm64-gnu.sigsignature64 Bb3c78cb9d3cf…Official source ↗
fallow-linux-arm64-musl.sigsignature64 B696f57b8604a…Official source ↗
fallow-linux-x64-gnu.sigsignature64 B2a99fe569005…Official source ↗
fallow-linux-x64-musl.sigsignature64 B427185d3de62…Official source ↗
fallow-lsp-darwin-arm64.sigsignature64 B1c0aadf702d1…Official source ↗
fallow-lsp-darwin-x64.sigsignature64 B0e28b7d14b9e…Official source ↗
fallow-lsp-linux-arm64-gnu.sigsignature64 Bb5ed56a9a60c…Official source ↗
fallow-lsp-linux-arm64-musl.sigsignature64 B1127c57f32bf…Official source ↗
fallow-lsp-linux-x64-gnu.sigsignature64 B113b1ff3f74f…Official source ↗
fallow-lsp-linux-x64-musl.sigsignature64 Bdf9870de6f08…Official source ↗
fallow-lsp-win32-arm64-msvc.exe.sigsignature64 B255f87a3d25f…Official source ↗
fallow-lsp-win32-x64-msvc.exe.sigsignature64 B6dc73cbecb81…Official source ↗
fallow-mcp-darwin-arm64.sigsignature64 B3dd54dde234f…Official source ↗
fallow-mcp-darwin-x64.sigsignature64 B70dc0ff44a9b…Official source ↗
fallow-mcp-linux-arm64-gnu.sigsignature64 B71fb76520258…Official source ↗
fallow-mcp-linux-arm64-musl.sigsignature64 B033b5b39df1d…Official source ↗
fallow-mcp-linux-x64-gnu.sigsignature64 Bcb36d88b0be4…Official source ↗
fallow-mcp-linux-x64-musl.sigsignature64 Be8f151f3f84b…Official source ↗
fallow-mcp-win32-arm64-msvc.exe.sigsignature64 Bb935f0360b70…Official source ↗
fallow-mcp-win32-x64-msvc.exe.sigsignature64 B1888a24dd409…Official source ↗
fallow-similar-code-darwin-arm64.sigsignature64 B55e372b3ebd2…Official source ↗
fallow-similar-code-darwin-x64.sigsignature64 Bb683bffbc653…Official source ↗
fallow-similar-code-linux-arm64-gnu.sigsignature64 B33ac82307c60…Official source ↗
fallow-similar-code-linux-arm64-musl.sigsignature64 Bf6208ed85391…Official source ↗
fallow-similar-code-linux-x64-gnu.sigsignature64 Be2d80b16a1f1…Official source ↗
fallow-similar-code-linux-x64-musl.sigsignature64 B1ec9b04ecacb…Official source ↗
fallow-similar-code-win32-arm64-msvc.exe.sigsignature64 B234c2ab6f0a2…Official source ↗
fallow-similar-code-win32-x64-msvc.exe.sigsignature64 B87730c269e08…Official source ↗
fallow-win32-arm64-msvc.exe.sigsignature64 Bcc77377928db…Official source ↗
fallow-win32-x64-msvc.exe.sigsignature64 Bb15365d64fd5…Official source ↗

Release history

Quality profile

algorithm quality-v1.0 · assessed Oct 15, 2026
Quality Score98
Risk Score0
Confidence 1.00
Quality Score and Risk Score are different measures. A high score does not guarantee safety.

Score components

Maintenance · 2020
last activity 0 days ago
Documentation · 1515
README 16203 chars, description present
Ready to use · 1515
install instructions: yes; releases: yes
Metadata · 1010
4/4 of description, homepage, license, topics
Releases · 1010
10 release(s), latest 6 days ago
Category confidence · 109
classifier confidence 0.9
Adoption · 109
5074 stars (log-dampened, 10k = max)
License clarity · 55
SPDX MIT
Community · 55
issues enabled, 176 forks

License

MIT
Known licensefrom the repository host

This is the catalog policy status, not legal advice.

Sources

github.com/fallow-rs/fallowPrimary★ 5,074 starslast activity Oct 15, 2026Primary repository · Confidence 1.00

Reviews

Sign in to write a review

No reviews yet.

Alternatives

README

From fallow-rs/fallow · license MIT · fetched Oct 29, 2026

Run it in the root of any JS or TS project:

npx fallow

A pull request gate on a fictional storefront monorepo might look like this:

$ npx fallow audit --base HEAD~15
Audit scope: 73 changed files vs HEAD~15

● Circular dependencies (24)
  packages/storefront/src/orders/process.ts (6 cycles)
    → payment.ts → context.ts → process.ts

── Duplication ────────────────────────────────────
⚠ 185 lines (0.2%) duplicated across 6 files

● High complexity functions (28)
  packages/storefront/src/orders/payment.ts
    :566 processPayment CRITICAL
          32 ! cyclomatic   47 ! cognitive  203 lines

── Styling ────────────────────────────────────────
  font sizes mix 3 units (3 px, 2 rem, 1 em; candidate, standardize unless intentional)

✗ dead code: 68 issues · complexity: 28 findings · duplication: 7 clone groups · 73 changed files
  audit gate excluded 98 inherited findings (run with --gate all to enforce)

Illustrative output for a fictional project. The gate fails (exit code 1) on findings in changed files. Findings that existed before the change are excluded.

fallow builds a repository graph of modules, exports, dependencies, functions, and styling tokens. Its analyses use that graph to find complexity, architecture drift, duplication, unused code, and risks in a pull request.

fallow runs in four places. All four read the same config file and use the same analysis engine.

WhereStart with
Your terminalnpx fallow
Pull requestsuses: fallow-rs/fallow@v3
Your editorThe VS Code extension or fallow-lsp
Coding agentsnpx fallow agent install

What fallow finds

QuestionAnalysisCommand
Is this change safe to merge?Changed-file gate over complexity, duplication, unused code, and styling drift, with a pass, warn, or fail resultfallow audit
Where is the code hard to change?Complexity hotspots, a 0 to 100 health score, and refactoring targets, with git churn and ownershipfallow health
Does the architecture hold?Boundary violations with bulletproof, layered, hexagonal, and feature-sliced presets, and circular dependenciesfallow architecture, fallow guard
What is copied?Code duplication in JS, TS, CSS, and Vue, Svelte, and Astro componentsfallow dupes
Does the UI follow the design system?Styling drift in CSS and CSS-in-JSfallow health --css
What does nothing use?Unused files, exports, types, class and enum members, and dependencies, with an auto-fix and a dry-run previewfallow dead-code, fallow fix
Do the tests detect a code change?Mutation testing: small changes in the source that no test detects (opt-in, runs the project tests)fallow mutation
Which code paths are risky?Security candidates, ranked by reachability from entry points (opt-in)fallow security
Which functions do the same job?Functions with the same intent and different syntax (opt-in, uses a local model that you download once)fallow similar-code
Where are the feature flags?Feature-flag patterns across the codebasefallow flags

npx fallow viz opens an interactive HTML map of the project with lenses for health, duplication, architecture, and unused code.

Add --type-aware for exact TypeScript symbol identity across aliases, re-exports, and packages. This optional pass removes false positives from interfaces and base classes (how type-aware analysis works). Runtime coverage from production is an optional add-on that fallow merges into health and audit reports.

The CLI reference lists every command. fallow schema prints all commands, flags, output formats, and exit codes as JSON.

Why teams can depend on fallow

fallow keeps these properties from release to release:

  • The same input gives the same output, with a stable fingerprint for each finding. There is no AI inside the analyzer. Only the opt-in similar-code command uses a pinned local model.
  • fallow audit fails only on findings that a change introduces. Existing findings do not fail the check.
  • It is fast on large codebases. fallow finds the unused code in the next.js monorepo (20,558 files) in 2.95s. Measured on fallow 2.100.0. BENCHMARKS.md has the method and all results, and CodSpeed tracks performance on each change.
  • fallow reads npm, yarn, and pnpm workspaces, and --workspace <name> scopes a run to one package.
  • Over 100 built-in framework plugins find entry points and framework conventions, so the first run needs no config.
  • Each command has a typed JSON output, documented exit codes, and a published output schema.
  • Analysis runs on your machine or CI runner. Telemetry is opt-in (what fallow collects).
  • The project has a public issue tracker, a public roadmap, and a security policy.

The analyzer is written in Rust and uses Oxc for syntactic analysis. Static analysis needs no TypeScript compiler and no Node.js runtime.

In your terminal

npx fallow                  # health, duplication, and unused code in one run
npx fallow audit            # only the findings that your change introduces
npx fallow fix --dry-run    # preview the auto-fixes, then run `npx fallow fix`
npx fallow health --score   # health score with the largest deductions
npx fallow dead-code --trace src/api.ts:client   # prove an export is unused before you delete it

To keep fallow in the project, install it as a dev dependency:

npm install --save-dev fallow

The npm package includes the fallow, fallow-lsp, and fallow-mcp launchers. For pnpm, yarn, cargo install fallow-cli, and Docker, see the installation guide.

To check each commit before it leaves your machine, install the managed pre-commit hook:

npx fallow hooks install --target git

Adopt fallow on an existing codebase

You do not have to fix every finding before you add fallow to CI.

  1. Run npx fallow recommend. It detects the stack and proposes a config. It changes no files.
  2. Use fallow audit in pull requests. It compares each pull request with its base branch and blocks only the findings that the pull request adds. It needs no baseline file.
  3. For full runs of fallow, dead-code, dupes, or health, save a baseline once with npx fallow --save-baseline fallow-baseline.json. Pass --baseline fallow-baseline.json on each later run, so that only new findings fail.
  4. Reduce the backlog when your team has time. fallow fix --dry-run shows the fixes and changes no files. fallow fix applies them.

If findings are caused by missing entry points or generated files, add the missing entry points and exclude the generated files in the config:

{
  "$schema": "./node_modules/fallow/schema.json",
  "entry": ["src/cli.ts"],
  "ignorePatterns": ["**/*.generated.ts"]
}

To keep an intentional export, add a suppression comment:

// fallow-ignore-next-line unused-export -- kept for plugin consumers
export const keepThis = 1;

// fallow-ignore-file <issue-type> suppresses a whole file. JSDoc tags (@public, @internal) keep intentional library API quiet. npx fallow suppressions lists every suppression in the project.

The adoption guide shows the staged path. Configuration has the full reference.

In pull requests

GitHub Actions:

- uses: actions/checkout@v4
  with:
    fetch-depth: 0
- uses: fallow-rs/fallow@v3
  with:
    command: audit

GitLab CI:

include:
  - remote: 'https://raw.githubusercontent.com/fallow-rs/fallow/v3.37.0/ci/gitlab-ci.yml'

fallow:
  extends: .fallow

fetch-depth: 0 is the recommended setup. A default shallow checkout also works for command: audit: the Action fetches the commits that it needs to find the merge base.

To start in report-only mode, add fail-on-issues: false. Remove it when the team is ready for a gate. With command: audit, a pull request fails only on findings that it introduces. Without command: audit, the Action runs the full pipeline, and any finding fails the job (fail-on-issues defaults to true). In a pull request, the Action scopes the analysis to the changed files, so its output can differ from a full local run.

The Action installs the fallow version that the project's package.json names. Pin an exact version there to use the same version in CI and on your machine. It can post a PR comment and inline review comments, and it can upload SARIF to GitHub Code Scanning. Other output formats are CodeClimate, GitHub annotations, and Markdown. The GitLab template URL names a release tag, because GitLab includes a file from a fixed ref. The CI guide covers inputs, permissions, and a staged rollout.

For a PR comment or review comments, give the job these permissions. id-token: write is optional: it lets the Action post as the fallow bot. Without it, the comments come from github-actions[bot].

permissions:
  contents: read
  id-token: write
  pull-requests: write
  checks: write

Exit code 0 means no error-severity findings, or an audit result of pass or warn. Exit code 1 means error-severity findings, or an audit result of fail. In CI, exit code 1 fails the job, and that is the gate. The rule severity in the config (error, warn, off) sets which findings count. Exit code 2 means invalid input or an execution error. A script that reads the JSON output can treat 0 and 1 as a completed run, but must not hide exit code 2 with || true.

Exit codeMeaning
0Clean, or audit result pass or warn
1Findings, or audit result fail (a normal outcome)
2Validation or runtime error (JSON error on stdout with --format json)
3A requested resource is unavailable, for example when config --path finds no config
8Security gate hit (fallow security --gate)
4 to 7, 10 to 13Runtime coverage, license, network, and upload errors

With --format json, an error arrives on stdout as {"error": true, "message": "...", "exit_code": 2}, not as a stack trace.

Editors and integrations

  • The VS Code extension shows findings in the editor.
  • fallow-lsp gives diagnostics, hover, code actions, and code lenses in any LSP editor. editors/ has setups for Zed and Neovim.
  • The Node API @fallow-cli/fallow-node exports detectDeadCode, detectCircularDependencies, detectBoundaryViolations, detectArchitecture, detectDuplication, detectSimilarCode, detectFeatureFlags, computeComplexity, and computeHealth. The package API reference has the options and return types.
  • fallow health --format badge > badge.svg writes a health badge for your README.

With coding agents

npx fallow agent install --dry-run   # show the plan
npx fallow agent install             # apply it

fallow agent install sets up the agents that it detects (Claude Code, Codex, and Cursor) in one pass. It writes an AGENTS.md task map, installs the fallow and fallow-setup skills, registers the MCP server, and adds a gate on git commit and git push. Run npx fallow agent status to see these changes. Run npx fallow agent uninstall to remove them.

To register only the MCP server:

{ "mcpServers": { "fallow": { "command": "npx", "args": ["--yes", "--package", "fallow", "fallow-mcp"] } } }

--package fallow selects the npm package that provides the fallow-mcp launcher.

Scripts and agents that call the CLI directly add --format json --quiet. Each command then writes one typed JSON document to stdout:

  • A root kind field names the analysis that made the document.
  • Each finding has an actions[] array and an auto_fixable flag, so a script knows what fallow fix can do.
  • Root next_steps[] suggestions are commands that run as written.
  • The types ship as fallow/types, and docs/output-schema.json is the full schema.

Do not run fallow watch in an agent loop, because it does not exit.

Exit codes and the JSON error format are in In pull requests. The agent skills guide has the details.

Migrate existing config

npx fallow migrate converts knip, jscpd, and stylelint config into fallow config. The migration guides for knip and jscpd show each step.

Contributing

To report a missing framework plugin or a false positive, open an issue. CONTRIBUTING.md covers the development setup. docs/README.md is the entry point for maintainer documentation.

Thank you to everyone who contributes code, bug reports and ideas.

License

MIT. See LICENSE.

If fallow helps you or your team, you can support its development through GitHub Sponsors.

Open the repository ↗