Skip to main content
The nestrs CLI is published to crates.io as nestrs-scaffold — the binary you run is still nestrs. It scaffolds new single-crate applications, generates source files, and runs a lightweight diagnostic against your toolchain and Cargo.toml. Unlike the Nest CLI, it stays entirely within Cargo-native workflows and does not add Node-style scripts, monorepo management, or library packaging.

Install

1

Install from crates.io

2

Verify the binary

The crates.io package is nestrs-scaffold because the name nestrs-cli is already taken. The installed binary is nestrs in either case.
If you are working inside a clone of the nestrs repository, the workspace defines a Cargo alias so you can skip the global install:
This alias is configured in .cargo/config.toml as run -p nestrs-scaffold --bin nestrs --.

Available commands

nestrs new

nestrs new <name> creates a ready-to-run single-crate application. Run it from any directory — it creates a new subdirectory named after your project.

Flags

Use --dry-run on generators before writing to an existing tree — but nestrs new always creates a fresh directory, so there is no equivalent flag for it.

Generated project structure

After nestrs new billing-api, your project contains:
The generated entry point wires up a AppModule with a single controller and service, a health check endpoint, metrics, and request tracing. The --strict flag adds #![deny(unsafe_code)] at the top.
Both files are created with identical default content:
.env is listed in .gitignore so it stays local. Commit .env.example to source control.
A two-stage Docker build targeting debian:bookworm-slim. The binary name matches your project name.
A starter README with development, production, and Docker instructions. The app, health, and metrics URLs are pre-filled based on the generated main.rs defaults:
  • App: http://127.0.0.1:3000/api
  • Health: http://127.0.0.1:3000/health
  • Metrics: http://127.0.0.1:3000/metrics

nestrs doctor

nestrs doctor is a lightweight sanity check you run from the root of a nestrs crate (where Cargo.toml lives). It does not replace cargo check or your CI matrix — use it as a first-pass hint list.

What it checks

1

Toolchain versions

Runs rustc --version and cargo --version and prints the results.
2

Cargo.toml feature flags

Reads the local Cargo.toml and reports which nestrs feature flags it detects: openapi, otel, ws, graphql, and microservices. It also queries cargo metadata to count the total resolved feature flags on the nestrs package.
3

Source file heuristics

Recursively scans src/**/*.rs and flags common mismatches, such as:
  • Calling enable_openapi() without the openapi feature enabled in Cargo.toml
  • Referencing configure_tracing_opentelemetry without the otel feature
  • Calling enable_graphql without the graphql feature
  • Using nestrs_openapi:: paths without the feature enabled
Example output when no issues are found:
nestrs doctor uses string heuristics on your source files — it can produce false positives and will miss issues that only appear at compile time. Always follow up with cargo check and your full CI pipeline.

Scope compared to the Nest CLI

The Nest CLI covers application lifecycle management, monorepos, publishable library packages, and npm-style scripts. nestrs intentionally stays closer to Cargo and normal Rust workflows.
The nestrs CLI focuses on file and code generation and a single-crate nestrs new skeleton. It does not replace Cargo for workspaces, libraries, or task runners.