Valknut is a Rust-native analysis platform that combines structural heuristics, AST-driven complexity metrics, documentation audits, and optional AI guidance. The CLI ships with CI-friendly output, a documentation linter, MCP endpoints for IDE automation, and optional refactoring oracle.
AnalysisPipeline.doc-audit command finds missing/dated READMEs, TODO clusters, and style regressions with language-specific scanners for Rust, Python, and TypeScript.valknut mcp-stdio to expose a Model Context Protocol server or enable the Gemini-powered refactoring oracle with --oracle.| Language | Status | Notes |
|---|---|---|
| Python | ✅ Full support | Tree-sitter Python with structure/complexity/refactoring detectors |
| TypeScript / JavaScript | ✅ Full support | Handles .ts, .tsx, .js, .jsx, .mjs, .cjs |
| Rust | ✅ Full support | Ownership-aware complexity & dependency graphs |
| Go | 🚧 Beta | AST parsing works; recommendations still limited |
| C++ | 🚧 Beta | Handles .cpp, .cxx, .cc, .hpp, .h and more; tested against 40+ major OSS repos |
| C# | 🚧 Beta | Types, members, calls, and using dependencies for .cs projects |
C++ Support (Beta): The C++ adapter has been validated against major open source codebases including fmt, nlohmann/json, googletest, protobuf, OpenCV, TensorFlow, and others with 99%+ parse success rates. Feedback welcome via GitHub Issues.
Valknut currently exposes only these adapters in
src/lang/registry.rs. Other extensions will be skipped unless/until dedicated adapters are implemented.
| Command | Purpose |
|---|---|
valknut analyze [PATH] | Run the full analysis pipeline with selectable profiles and output formats |
valknut doc-audit --root REPO | Audit READMEs, TODO hot-spots, and stale docs using the doc_audit crate |
valknut list-languages | Display the runtime language matrix (driven by the actual adapters) |
valknut init-config / print-default-config | Scaffold or inspect valknut.yml |
valknut validate-config --config valknut.yml | Sanity-check custom configuration files |
valknut mcp-stdio / mcp-manifest | Launch the MCP server or emit a manifest for IDE agents |
Pre-built binaries for supported platforms:
npm install -g @sibyllinesoft/valknut
| Platform | Architecture | Supported |
|---|---|---|
| Linux | x64 (glibc) | ✅ |
| macOS | x64 | ✅ |
| macOS | ARM64 (Apple Silicon) | ✅ |
| Windows | x64 | ✅ |
brew tap sibyllinesoft/valknut
brew install valknut
cargo install valknut-rs
For platforms without pre-built binaries (ARM Linux, Alpine/musl), compile from source:
cargo install --git https://github.com/sibyllinesoft/valknut
# Fast scan with JSONL output (default profile)
valknut analyze ./src --format jsonl
# HTML + Markdown bundle for stakeholders
valknut analyze ./ --format html --profile thorough
# Documentation audit with strict exit codes
valknut doc-audit --root . --strict
# List the languages compiled into your build
valknut list-languages
--profile fast|balanced|thorough|extreme selects how many detectors and optimizations run.--no-structure, --no-impact, --no-lsh, etc., mirror analysis.modules.* toggles in valknut.yml.--semantic-clones, --denoise, --min-function-tokens, etc.Structure Analysis – deterministic directory/file re-organization packs (src/detectors/structure/) surface imbalance, whale files, and recommended splits with dedicated modules for cohesion, imports, and partitioning.
Complexity Intelligence – AST-backed cyclomatic/cognitive metrics and severity classification per entity (src/detectors/complexity/).
Semantic Cohesion – TF-IDF weighted symbol extraction and optional embedding-based analysis for measuring how well related code entities are grouped (src/detectors/cohesion/).
Dependency & Impact Analysis – ProjectDependencyAnalysis builds call graphs, detects cycles, and feeds choke-point scoring plus similarity cliques.
Clone Detection (opt-in) – locality-sensitive hashing with shingle generation, AST-based stop motif filtering, and SIMD-accelerated similarity for semantic clone clusters (src/detectors/lsh/).
Coverage Awareness – auto-discover or pin coverage files, surface gap summaries, and include them in health metrics.
Refactoring Scoring – aggregated feature vectors drive health, maintainability, and technical-debt indices for gating.
GitHub Actions example:
name: Valknut Quality Gate
on: [push, pull_request]
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install -g @sibyllinesoft/valknut
- run: |
valknut analyze ./src \
--format html \
--out quality-reports \
--quality-gate \
--max-complexity 70 \
--min-health 65
- uses: actions/upload-artifact@v4
if: always()
with:
name: quality-reports
path: quality-reports
Quality gates can also be expressed in config (analysis.quality) or via CLI flags (--max-debt, --max-issues, --max-critical, etc.).
The doc-audit command walks the repo, scores directory complexity, and tracks README freshness:
valknut doc-audit --root . --complexity-threshold 10 --max-readme-commits 8 --strict
Use --ignore-dir / --ignore-suffix to skip generated assets. The audit exits non-zero in --strict mode when gaps exist, making it ideal for CI.
valknut analyze ... --oracle streams the analysis summary plus curated code bundles to Gemini 2.5 Pro. Set GEMINI_API_KEY (and optionally --oracle-max-tokens) before enabling this opt-in path.valknut mcp-stdio exposes the analyze/list/gate abilities to IDE agents. Use valknut mcp-manifest --output manifest.json to publish the schema from src/bin/cli/commands.rs.valknut init-config to generate .valknut.yml (see valknut.yml.example for every toggle).src/bin/cli/config_layer.rs. Settings such as coverage search paths, structure thresholds, or LSH tuning can live in config files, environment variables, or direct flags.Select via --format:
jsonl, json, yaml – machine-friendly ingestion.markdown, html, pretty – human-friendly reports powered by src/io/reports handlebars templates.csv – spreadsheet-ready metrics.sonar – SonarQube compatibility.ci-summary – concise JSON for bots.cargo fmt && cargo clippy
cargo test
./scripts/install_parsers.sh # install/update tree-sitter grammars
The codebase follows a modular architecture with clear separation of concerns:
src/core/ – pipeline orchestration, AST services, dependency analysissrc/detectors/ – analysis modules (complexity, structure, lsh, cohesion, coverage)src/oracle/ – AI-powered refactoring guidance (bundle building, Gemini integration)src/doc_audit/ – documentation gap detection with language-specific scannerssrc/bin/cli/ – command handling, quality gates, config building, report generationHelpful references:
docs/CLI_USAGE.md – CLI walkthroughs.docs/ARCHITECTURE_DEEP_DIVE.md – November 2025 architectural analysis and modernization plan.docs/CONFIG_GUIDE.md / docs/QUALITY_GATES_GUIDE.md – configuration details.MIT License – see LICENSE.
322 commits
1 commits
Rust
43.4%
JavaScript
42.8%
HTML
7.4%
Handlebars
2.8%
CSS
1.4%
Shell
1.1%
Valknut is a Rust-native analysis platform that combines structural heuristics, AST-driven complexity metrics, documentation audits, and optional AI guidance. The CLI ships with CI-friendly output, a documentation linter, MCP endpoints for IDE automation, and optional refactoring oracle.
AnalysisPipeline.doc-audit command finds missing/dated READMEs, TODO clusters, and style regressions with language-specific scanners for Rust, Python, and TypeScript.valknut mcp-stdio to expose a Model Context Protocol server or enable the Gemini-powered refactoring oracle with --oracle.| Language | Status | Notes |
|---|---|---|
| Python | ✅ Full support | Tree-sitter Python with structure/complexity/refactoring detectors |
| TypeScript / JavaScript | ✅ Full support | Handles .ts, .tsx, .js, .jsx, .mjs, .cjs |
| Rust | ✅ Full support | Ownership-aware complexity & dependency graphs |
| Go | 🚧 Beta | AST parsing works; recommendations still limited |
| C++ | 🚧 Beta | Handles .cpp, .cxx, .cc, .hpp, .h and more; tested against 40+ major OSS repos |
| C# | 🚧 Beta | Types, members, calls, and using dependencies for .cs projects |
C++ Support (Beta): The C++ adapter has been validated against major open source codebases including fmt, nlohmann/json, googletest, protobuf, OpenCV, TensorFlow, and others with 99%+ parse success rates. Feedback welcome via GitHub Issues.
Valknut currently exposes only these adapters in
src/lang/registry.rs. Other extensions will be skipped unless/until dedicated adapters are implemented.
| Command | Purpose |
|---|---|
valknut analyze [PATH] | Run the full analysis pipeline with selectable profiles and output formats |
valknut doc-audit --root REPO | Audit READMEs, TODO hot-spots, and stale docs using the doc_audit crate |
valknut list-languages | Display the runtime language matrix (driven by the actual adapters) |
valknut init-config / print-default-config | Scaffold or inspect valknut.yml |
valknut validate-config --config valknut.yml | Sanity-check custom configuration files |
valknut mcp-stdio / mcp-manifest | Launch the MCP server or emit a manifest for IDE agents |
Pre-built binaries for supported platforms:
npm install -g @sibyllinesoft/valknut
| Platform | Architecture | Supported |
|---|---|---|
| Linux | x64 (glibc) | ✅ |
| macOS | x64 | ✅ |
| macOS | ARM64 (Apple Silicon) | ✅ |
| Windows | x64 | ✅ |
brew tap sibyllinesoft/valknut
brew install valknut
cargo install valknut-rs
For platforms without pre-built binaries (ARM Linux, Alpine/musl), compile from source:
cargo install --git https://github.com/sibyllinesoft/valknut
# Fast scan with JSONL output (default profile)
valknut analyze ./src --format jsonl
# HTML + Markdown bundle for stakeholders
valknut analyze ./ --format html --profile thorough
# Documentation audit with strict exit codes
valknut doc-audit --root . --strict
# List the languages compiled into your build
valknut list-languages
--profile fast|balanced|thorough|extreme selects how many detectors and optimizations run.--no-structure, --no-impact, --no-lsh, etc., mirror analysis.modules.* toggles in valknut.yml.--semantic-clones, --denoise, --min-function-tokens, etc.Structure Analysis – deterministic directory/file re-organization packs (src/detectors/structure/) surface imbalance, whale files, and recommended splits with dedicated modules for cohesion, imports, and partitioning.
Complexity Intelligence – AST-backed cyclomatic/cognitive metrics and severity classification per entity (src/detectors/complexity/).
Semantic Cohesion – TF-IDF weighted symbol extraction and optional embedding-based analysis for measuring how well related code entities are grouped (src/detectors/cohesion/).
Dependency & Impact Analysis – ProjectDependencyAnalysis builds call graphs, detects cycles, and feeds choke-point scoring plus similarity cliques.
Clone Detection (opt-in) – locality-sensitive hashing with shingle generation, AST-based stop motif filtering, and SIMD-accelerated similarity for semantic clone clusters (src/detectors/lsh/).
Coverage Awareness – auto-discover or pin coverage files, surface gap summaries, and include them in health metrics.
Refactoring Scoring – aggregated feature vectors drive health, maintainability, and technical-debt indices for gating.
GitHub Actions example:
name: Valknut Quality Gate
on: [push, pull_request]
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install -g @sibyllinesoft/valknut
- run: |
valknut analyze ./src \
--format html \
--out quality-reports \
--quality-gate \
--max-complexity 70 \
--min-health 65
- uses: actions/upload-artifact@v4
if: always()
with:
name: quality-reports
path: quality-reports
Quality gates can also be expressed in config (analysis.quality) or via CLI flags (--max-debt, --max-issues, --max-critical, etc.).
The doc-audit command walks the repo, scores directory complexity, and tracks README freshness:
valknut doc-audit --root . --complexity-threshold 10 --max-readme-commits 8 --strict
Use --ignore-dir / --ignore-suffix to skip generated assets. The audit exits non-zero in --strict mode when gaps exist, making it ideal for CI.
valknut analyze ... --oracle streams the analysis summary plus curated code bundles to Gemini 2.5 Pro. Set GEMINI_API_KEY (and optionally --oracle-max-tokens) before enabling this opt-in path.valknut mcp-stdio exposes the analyze/list/gate abilities to IDE agents. Use valknut mcp-manifest --output manifest.json to publish the schema from src/bin/cli/commands.rs.valknut init-config to generate .valknut.yml (see valknut.yml.example for every toggle).src/bin/cli/config_layer.rs. Settings such as coverage search paths, structure thresholds, or LSH tuning can live in config files, environment variables, or direct flags.Select via --format:
jsonl, json, yaml – machine-friendly ingestion.markdown, html, pretty – human-friendly reports powered by src/io/reports handlebars templates.csv – spreadsheet-ready metrics.sonar – SonarQube compatibility.ci-summary – concise JSON for bots.cargo fmt && cargo clippy
cargo test
./scripts/install_parsers.sh # install/update tree-sitter grammars
The codebase follows a modular architecture with clear separation of concerns:
src/core/ – pipeline orchestration, AST services, dependency analysissrc/detectors/ – analysis modules (complexity, structure, lsh, cohesion, coverage)src/oracle/ – AI-powered refactoring guidance (bundle building, Gemini integration)src/doc_audit/ – documentation gap detection with language-specific scannerssrc/bin/cli/ – command handling, quality gates, config building, report generationHelpful references:
docs/CLI_USAGE.md – CLI walkthroughs.docs/ARCHITECTURE_DEEP_DIVE.md – November 2025 architectural analysis and modernization plan.docs/CONFIG_GUIDE.md / docs/QUALITY_GATES_GUIDE.md – configuration details.MIT License – see LICENSE.
322 commits
1 commits
Rust
43.4%
JavaScript
42.8%
HTML
7.4%
Handlebars
2.8%
CSS
1.4%
Shell
1.1%