watch¶
Keep Feluda on the case continuously — re-scan automatically whenever a dependency file changes.
Overview¶
feluda watch monitors your project tree for filesystem changes and re-runs the
license scan whenever a dependency manifest or lockfile is added, modified, or
removed. It is handy while adding or upgrading dependencies — especially with AI
coding tools that pull in packages on the fly — so license issues surface the
moment they appear.
Watch mode is report-only: it prints the same report as a normal scan on every
change and keeps running until interrupted with Ctrl-C.
Basic Usage¶
# Watch the current directory
feluda watch
# Watch a specific path
feluda watch --path /path/to/project/
# Adjust the debounce window (milliseconds)
feluda watch --debounce 800
Options:
Flag |
Description |
|---|---|
|
Project directory to watch (default: |
|
Milliseconds to wait after a change before re-scanning (default: |
Reusing Scan Flags¶
Watch mode inherits the same output and filter flags as a normal scan. Pass them
before the watch subcommand:
# Watch and report only restrictive licenses, as JSON
feluda --restrictive --json watch
# Watch in strict mode against a specific project license
feluda --strict --project-license MIT watch
What Feluda Watches¶
Feluda recursively discovers every dependency manifest and lockfile it understands,
honouring .gitignore/.ignore and skipping vendored directories such as
node_modules/, target/, vendor/, and .git/.
This is the same set of files the scanner recognises, including:
Rust —
Cargo.toml,Cargo.lockNode.js —
package.json,package-lock.json,yarn.lock,pnpm-lock.yamlGo —
go.mod,go.work,go.sum,go.work.sumPython —
pyproject.toml,requirements.txt,Pipfile.lock,uv.lockJava —
pom.xml,build.gradle,build.gradle.kts.NET —
*.csproj,*.fsproj,*.vbproj,*.slnx,packages.lock.jsonC/C++ —
vcpkg.json,conanfile.txt,CMakeLists.txt,MODULE.bazelR —
DESCRIPTION,renv.lock
Note
Watch mode does not support the interactive TUI (--gui) or remote
repositories (--repo). Use a local path and a non-interactive report.
Scheduled & Looped Scanning¶
When a long-running watcher isn’t a good fit — CI runners, network filesystems, or
periodic compliance audits — run Feluda’s single-shot scan on a schedule instead.
Combine it with --fail-on-restrictive (or --fail-on-incompatible) so the
exit code gates your pipeline.
# cron — scan every 30 minutes, fail on a restrictive license
*/30 * * * * cd /path/to/project && feluda --fail-on-restrictive
# Claude Code /loop — re-run the check every 30 minutes
/loop 30m feluda --restrictive
# CI gate — non-zero exit stops the build
feluda --fail-on-restrictive --json
Tip
Use feluda watch for fast feedback during local development, and the
scheduled single-shot scan above for unattended or CI environments.