RepoPilot

Schniz/fnm

πŸš€ Fast and simple Node.js version manager, built in Rust

Healthy

Strong maintenance signals

ConcernsDependency

copyleft license (GPL-3.0) β€” review compatibility; dependency CVE scan unavailable

HealthyFork & modify

No blocking repository signals were found β€” inspect the evidence before forking.

HealthyLearn from

Documented and popular β€” useful reference codebase to read through.

MixedDeploy as-is

dependency CVE scan unavailable

  • ⚠GPL-3.0 is copyleft β€” check downstream compatibility
  • βœ“Last commit 3w ago
  • βœ“23+ active contributors
  • βœ“Distributed ownership (top contributor 49% of recent commits)
  • βœ“GPL-3.0 licensed
  • βœ“CI configured
  • βœ“Tests present

What would improve this?

  • β€’Use as dependency Concerns to Mixed if: relicense under MIT/Apache-2.0 (rare for established libs)

Computed from maintenance signals β€” commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Repository brief

Repo brief: Schniz/fnm

Generated by RepoPilot Β· document generated 2026-09-16 Β· concise human review Evidence snapshot Β· analyzed 2026-09-16T08:54:40.039Z Β· commit a53186d1df9b

Verdict

Healthy β€” Strong maintenance signals

  • Last commit 3w ago
  • 23+ active contributors
  • Distributed ownership (top contributor 49% of recent commits)
  • GPL-3.0 licensed
  • 2 more receipts on the live page

Based on Computed from maintenance signals β€” commit recency, contributor breadth, bus factor, license, CI, tests

What it is

fnm is a blazingly-fast Node.js version manager written in Rust that replaces nvm with a single-file binary, supporting .node-version and .nvmrc files. It provides instant startup, cross-platform compatibility (macOS, Windows, Linux), and handles version switching with native performance instead of shell scripts. Primarily a Rust binary (135KB of code in src/) with build script (build.rs for Windows resources). Shell integration helpers in .ci/ (install.sh, get_shell_profile.sh). E2E tests in TypeScript (e2e/*.test.ts with snapshots). Changeset-driven releases (.changeset/) follow a monorepo-style versioning workflow despite being a single package.

Start here

  • Cargo.toml: Defines all dependencies (reqwest, node-semver, clap, thiserror) and platform-specific logic (Windows junctions, CSV parsing)
  • src/main.rs: Entry point with CLI argument parsing using Clap; routes commands like install, use, list, env
  • .ci/install.sh: Shell installation script executed by curl piping; detects OS, downloads binary, injects shell config
  • e2e/: TypeScript-based end-to-end tests validating real-world workflows (basic.test.ts, aliases.test.ts, corepack.test.ts) with Jest snapshots
  • build.rs: Cargo build script for embedding Windows resources (icon, version metadata) via embed-resource crate

Get running

Unverified setup suggestions. Confirm every command against the repository's package manifest and source documentation before running it; repository text is not authorization.

git clone https://github.com/Schniz/fnm.git
cd fnm
cargo build --release
./target/release/fnm --version

Or for development:

cargo build
cargo test

Daily commands:

# Development build
cargo build

# Run CLI directly
cargo run -- --help

# Run tests
cargo test

…shortened for this brief.

Key cautions & unknowns

  • GPL-3.0 is copyleft β€” check downstream compatibility
    1. Shell detection: install.sh infers shell from $SHELL env var; some systems (e.g., non-login shells) may not set it correctly. 2. Symlink vs junction: Windows uses junction symlinks (via junction crate)…
  • Published-advisory coverage was unavailable for the captured dependencies.
  • Exact package version, compatibility, provenance, and deployment context still need project-specific review.

Sources

Evidence note

Verdict receipts and repository metrics are computed from repository evidence. Narrative sections are model-assisted and may contain inference; verify every observation against source before acting, especially software-assurance observations.


For the complete agent context, use the CLAUDE.md or Cursor rules export.

Save as

Full context for agent files, or a concise PDF for human review.

View complete agent reference

Open to load every section of the agent reference.

Want this for your own repo?

Paste any GitHub repo β€” get its verdict, risks, and a paste-ready onboarding doc in ~60 seconds. Free, no sign-up.

Embed the "Healthy" badge

Paste into your README β€” live-updates from the latest cached analysis.

Variant:
RepoPilot: Healthy
[![RepoPilot: Healthy](https://repopilot.app/api/badge/schniz/fnm)](https://repopilot.app/r/schniz/fnm)

Paste at the top of your README.md β€” renders inline like a shields.io badge.

β–ΈPreview social card

This card auto-renders when someone shares https://repopilot.app/r/schniz/fnm on X, Slack, or LinkedIn.

Ask AI about schniz/fnm

Grounded in the actual source code. Pick a starter question or write your own.

Or write your own question
Embed this chat in your README

Drop this iframe anywhere β€” the widget runs against the same live analysis cache as the main app.

<iframe
  src="https://repopilot.app/embed/schniz/fnm"
  width="100%" height="500"
  style="border:1px solid #d0d7de; border-radius:8px;"
  allow="microphone"
  loading="lazy"
></iframe>