Rust  ยท  Fast  ยท  CI-Ready  ยท  GitLab Integration  ยท  v0.3.2

Know every license
in your project

Scan your entire dependency tree, classify licenses using SPDX standards, and enforce your policy โ€” before a license becomes a legal problem.

$cargo install --git https://github.com/QuentinRob/license-checkr
5
Ecosystems
10+
Manifest formats
4
Report formats
0
Config required

Everything you need for license compliance

From a quick local check to a full CI enforcement pipeline.

๐Ÿ”Ž

Zero-config Detection

Drop license-checkr into any project. It automatically detects your ecosystem from manifest files and starts scanning โ€” no setup required.

๐Ÿ“ก

Online Registry Enrichment

Missing license data? Use --online to fetch it in parallel from crates.io, PyPI, Maven Central, and npm. Batched for speed.

โš–๏ธ

Flexible Policy Engine

Define pass, warn, and error rules per SPDX identifier in a simple TOML file. Sensible defaults are built in.

๐Ÿท๏ธ

Full SPDX Support

Normalizes 20+ common strings to SPDX identifiers. Parses compound expressions like (Apache-2.0 OR MIT) AND BSD-3-Clause with correct precedence โ€” AND binds tighter than OR, parentheses override.

๐Ÿ“Š

Four Output Formats

Colored terminal table for local development, structured JSON for pipelines, a polished multi-page PDF for your legal team, or a GitLab Code Quality artifact that surfaces violations inline on every Merge Request.

๐ŸฆŠ

GitLab CI Integration

Use --report gitlab to emit a Code Quality JSON artifact. Violations appear as inline annotations on Merge Requests โ€” no extra tooling required.

๐Ÿ—‚๏ธ

Workspace Scanning

Use --recursive to scan every sub-project in a monorepo in one pass. Each project is scanned independently with its own policy; the PDF includes per-project sections.

๐Ÿค–

MCP Server

Run license-checkr mcp serve to expose the scanner as an MCP tool. AI agents like Claude Desktop can audit projects and look up package licenses directly.

Your whole stack, covered

One tool for every language in your monorepo. Detected automatically โ€” no flags needed.

๐Ÿฆ€
Rust
  • Cargo.lock
๐Ÿ
Python
  • Pipfile.lock
  • requirements.txt
  • pyproject.toml
โ˜•
Java
  • pom.xml
  • build.gradle(.kts)
  • gradle.lockfile
๐ŸŸข
Node.js
  • package-lock.json
  • yarn.lock
  • package.json
๐Ÿ”ท
.NET
  • *.csproj / *.fsproj
  • packages.config
  • paket.lock

Scan in seconds, act immediately

One command gives you a complete picture of your license exposure.

license-checkr
โฏ license-checkr --recursive --online Root: /home/user/monorepo Found: 3 sub-projects โ†’ scanning backend (/home/user/monorepo/backend) ยท Rust 42 dependencies โ†’ scanning frontend (/home/user/monorepo/frontend) ยท Node 87 dependencies โ†’ scanning analytics (/home/user/monorepo/analytics) ยท Python 23 dependencies โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ WORKSPACE SUMMARY โ”‚ โ”‚ Projects : 3 โ”‚ โ”‚ Total dependencies : 152 โ”‚ โ”‚ โœ“ Pass : 138 MIT (82), Apache-2.0 (41)โ”‚ โ”‚ โš  Warn : 11 unknown (8), LGPL-2.1 (3)โ”‚ โ”‚ โœ— Error : 3 GPL-3.0 (3) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Your rules.
Your project.

Drop a .license-checkr/config.toml at your project root and define exactly which licenses are acceptable, which need review, and which are blocked.

No config file? Built-in defaults are already sensible โ€” permissive licenses pass, weak-copyleft warns, and GPL/AGPL are errors.

  • Per-license rules keyed by SPDX identifier
  • A catch-all default for anything unlisted
  • Project-level or global ~/.config config
  • Override at runtime via --config <path>
.license-checkr/config.toml
# Verdict for any license not listed below
[policy]
default = "warn"

[policy.licenses]
# Permissive โ€” always allowed
"MIT"          = "pass"
"Apache-2.0"   = "pass"
"BSD-3-Clause" = "pass"
"ISC"          = "pass"
"Unlicense"    = "pass"

# Weak copyleft โ€” review required
"LGPL-2.1"     = "warn"
"MPL-2.0"      = "warn"

# Strong copyleft โ€” blocked
"GPL-3.0"      = "error"
"AGPL-3.0"     = "error"

Understand your exposure at a glance

Every dependency is classified into one of five risk levels.

Risk levelWhat it meansExamples
โœ… Permissive Minimal restrictions โ€” use freely in any project, commercial or otherwise. MIT, Apache-2.0, BSD-3-Clause, ISC, Unlicense, CC0-1.0
โš ๏ธ Weak Copyleft Share-alike applies only to modifications of the library itself. LGPL-2.1, LGPL-3.0, MPL-2.0, EPL-2.0, CDDL-1.0
๐Ÿ”ด Strong Copyleft Your project may need to be released as open source if you use this. GPL-2.0, GPL-3.0, AGPL-3.0, EUPL-1.1
๐Ÿ”’ Proprietary Source is closed; a commercial agreement is required for use. "proprietary", "commercial", "All rights reserved"
โ“ Unknown License could not be determined. Use --online to try to resolve it. Missing, empty, or unrecognized strings

Three steps to compliance

1

Install

A single static binary with no runtime dependencies. Install globally or drop into your CI environment.

cargo install --git https://github.com/QuentinRob/license-checkr
2

Scan

Run at the root of any project. Ecosystems are detected automatically. Add --online to resolve missing licenses.

license-checkr --online
3

Enforce

Plug into your CI pipeline. Exits 1 on policy violations โ€” blocking merges before problematic licenses sneak in.

license-checkr -q

License violations
inline on every MR.

Use --report gitlab to produce a GitLab Code Quality JSON artifact. Upload it as a CI artifact and violations appear as inline annotations on every Merge Request โ€” no extra tools or plugins required.

  • blocker severity for error policy verdicts
  • minor severity for warn policy verdicts
  • pass dependencies are silently omitted
  • Works with --recursive for monorepo workspaces
.gitlab-ci.yml
license-check:
  stage: test
  image: rust:latest
  script:
    - cargo install --git https://github.com/QuentinRob/license-checkr
    - license-checkr --report gitlab > gl-code-quality-report.json
  artifacts:
    reports:
      codequality: gl-code-quality-report.json
Example output
[
  {
    "description": "Dependency 'some-gpl-lib@2.1.0'
uses license 'GPL-3.0' โ€” verdict: error"
, "check_name": "license-checkr/license-error", "severity": "blocker", "location": { "path": "Cargo.lock", "lines": {"begin": 1} } } ]

Talk to your AI.
Let it check licenses.

Start license-checkr mcp serve and connect it to any MCP-compatible AI agent. Claude Desktop, Cursor, and other tools can then audit your projects and look up package licenses on demand.

Two tools are exposed over stdio JSON-RPC โ€” no extra config needed.

  • scan_licenses โ€” full project scan with policy evaluation
  • get_package_license โ€” single-package registry lookup
  • Works with Claude Desktop, Cursor, and any MCP client
  • Reuses the same pipeline as the CLI โ€” consistent results
claude_desktop_config.json
{
  "mcpServers": {
    "license-checkr": {
      "command": "license-checkr",
      "args": ["mcp", "serve"]
    }
  }
}
Example prompts
"Scan ~/my-app and list any license errors"
"What license does serde 1.0 use? Is it compatible?"

Start in 30 seconds

No accounts. No config files. No surprises.

Download
All platforms
$cargo install --git https://github.com/QuentinRob/license-checkr