Package icon

Noundry.Cli 1.5.0

by Noundry

Noundry CLI (nd)

The Master CLI Wrapper for dotnet.exe and Noundry Framework Tools

nd is a unified command-line interface that provides seamless access to dotnet.exe commands and the entire suite of Noundry framework tools. It's designed to streamline your development workflow by providing a single, fast, and intuitive CLI with beautiful UI and progress indicators for every operation.

Features

  • ๐Ÿš€ Single CLI for Everything - One tool to access dotnet and all Noundry utilities
  • โšก Fast & Efficient - Built with .NET 9.0 for optimal performance
  • ๐ŸŽจ Beautiful UI - Powered by Spectre.Console with rich formatting and progress indicators
  • ๐Ÿ”ง Project Initialization - Interactive wizard to create noundry.json configuration
  • ๐Ÿ“ฆ Automatic Tool Installation - Installs missing tools on-demand with user permission
  • ๐Ÿ”„ Tool Management - Install, uninstall, and update Noundry tools with simple commands
  • โฑ๏ธ Progress Tracking - Every command shows execution time and progress
  • ๐Ÿ” Verbose & Debug Modes - Detailed logging with --verbose and --debug flags
  • ๐Ÿ”Œ Extensible - Easy integration with additional Noundry tools

Installation

Install as .NET Global Tool

# Install from NuGet
dotnet tool install --global Noundry.Cli

# Verify installation
nd --version

Build and Install from Source

# Clone the repository and navigate to the project directory
cd Noundry.Cli

# Build and pack
dotnet pack -c Release

# Install globally
dotnet tool install --global --add-source ./bin/Release Noundry.Cli

# Verify installation
nd --version

Update

dotnet tool update --global Noundry.Cli

Uninstall

dotnet tool uninstall --global Noundry.Cli

Quick Start

1. Initialize a New Project

nd init

This will start an interactive wizard that:

  • Prompts for project name
  • Prompts for project type (web-api or web-app)
  • Installs Noundry.Templates from NuGet (if not already installed)
  • Creates a new project using the Noundry template
  • Creates noundry.json configuration file
  • Creates global.json with specified .NET SDK version

Non-Interactive Mode:

# Create project with all options specified
nd init -n MyApp -f net90

# Specify output directory
nd init -n MyApi -o ./src/MyApi --framework net100

2. Install Noundry Tools

nd install

This command installs all Noundry CLI tools globally:

  • ndng - Noundry Engine CLI (deployment automation)
  • slurp - Noundry Slurp tool
  • authnz - Noundry AuthnzNet CLI
  • lgby - Noundry Logably CLI
  • njobs - Noundry Jobs CLI
  • ndotenvx - Noundry DotEnvX tool
  • bowtie - Noundry Tuxedo Bowtie CLI
  • cufflink - Noundry Tuxedo Cufflink CLI

Note: Some tools may not yet be published to NuGet. The command will show which tools installed successfully and which failed. Tools can also be auto-installed on first use.

3. Configure Private Package Server

nd nd-package-server --apikey YOUR_API_KEY

This adds packages.noundry.com as a NuGet source, enabling access to commercial Noundry packages.

Global Options

All commands support the following global options:

Option Short Description
--verbose -v Enable verbose logging for detailed operation information
--debug -d Enable debug logging (includes verbose output plus debug details)
--version Display the CLI version
--help -h Display help information

Examples:

# Run with verbose logging
nd -v install

# Run with debug logging
nd --debug init

# Check version
nd --version

Commands Reference

Core Commands

nd init

Initialize a new Noundry project using Noundry.Templates.

Synopsis:

nd init [OPTIONS]

Options:

  • -n, --name <NAME> - Project name (will prompt if not provided)
  • -o, --output <DIR> - Output directory (defaults to project name)
  • -f, --framework <VERSION> - Framework version (net80, net90, net100) [default: net90]

Examples:

# Interactive mode (recommended)
nd init

# Specify project name and framework
nd init -n MyWebApi -f net90

# Full non-interactive mode
nd init --name MyApp --output ./src/MyApp --framework net100

What it does:

  1. Prompts for project name (if not provided via -n)
  2. Prompts for project type (C# web-api or C# web-app)
  3. Installs Noundry.Templates from NuGet if not installed
  4. Creates project using noundry-webapi or noundry-webapp template
  5. Creates noundry.json with project configuration
  6. Creates global.json with SDK version and rollForward policy

Note: If Noundry.Templates is not published to NuGet yet, the command falls back to standard dotnet templates (webapi or webapp).

Output:

  _   _                     _             ____ _     ___
 | \ | | ___  _   _ _ __   | |_ __ _   _/ ___| |   |_ _|
 |  \| |/ _ \| | | | '_ \  | __/ _` | | | |   | |    | |
 | |\  | (_) | |_| | | | | | || (_| |_| | |___| |___ | |
 |_| \_|\___/ \__,_|_| |_|  \__\__,_(_) \____|_____|___|

Initializing Noundry project...

Project name: MyAwesomeApp
Project type:
  > C# web-api
    C# web-app

โœ“ Installed Noundry.Templates
โœ“ Created project 'MyAwesomeApp'
โœ“ Created noundry.json
โœ“ Created global.json

โœ“ Project Initialized

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Setting          โ”‚ Value             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Project Name     โ”‚ MyAwesomeApp      โ”‚
โ”‚ Project Type     โ”‚ C# web-api        โ”‚
โ”‚ Template         โ”‚ noundry-webapi    โ”‚
โ”‚ Output Directory โ”‚ MyAwesomeApp      โ”‚
โ”‚ Framework        โ”‚ net90             โ”‚
โ”‚ Noundry Version  โ”‚ nd10              โ”‚
โ”‚ Processing Time  โ”‚ 2341ms            โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Project created in: C:\Projects\MyAwesomeApp

Next steps:
  1. cd MyAwesomeApp
  2. nd install
  3. nd dn build
  4. nd dn run

nd dn

Wrapper for dotnet.exe - run any dotnet command through nd.

Synopsis:

nd dn <dotnet-command> [args...]

Examples:

# Build project
nd dn build

# Build in Release configuration
nd dn build -- -c Release

# Run application
nd dn run

# Create new web API (use -- before options)
nd dn new webapi -- -n MyApi

# Create console app with output directory
nd dn new console -- -n MyApp -o Output

# Restore packages
nd dn restore

# Run tests
nd dn test

# Publish application (use -- before options)
nd dn publish -- -c Release -o ./publish

Important: When using dotnet commands with options like -n, -c, -o, use the -- separator to prevent the CLI from parsing them:

# Correct:
nd dn new console -- -n MyApp -o Output

# Without options, no separator needed:
nd dn build
nd dn run
nd dn test

What it does:

  1. Executes dotnet.exe with the provided arguments
  2. Captures and displays stdout/stderr in real-time
  3. Shows execution time
  4. Returns the same exit code as dotnet.exe

Output:

Running: dotnet build -c Release

Microsoft (R) Build Engine version 9.0.0 for .NET
...
Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:02.15

โœ“ Command completed successfully in 2156ms

nd install

Install all Noundry CLI tools globally via NuGet.

Synopsis:

nd install

What it does:

  1. Checks if each Noundry tool is already installed
  2. Installs missing tools via dotnet tool install --global
  3. Shows progress for each tool
  4. Provides summary of installation results

Output:

โ•โ• Installing Noundry Tools โ•โ•

โœ“ ndng is already installed
Installing slurp...
โœ“ Installed slurp
Installing authnz...
โœ“ Installed authnz
...

โ•โ• Installation Complete โ•โ•

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Metric             โ”‚ Value โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Total Tools        โ”‚ 8     โ”‚
โ”‚ Installed/Availableโ”‚ 8     โ”‚
โ”‚ Failed             โ”‚ 0     โ”‚
โ”‚ Processing Time    โ”‚ 4523msโ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โœ“ All Noundry tools are ready!

nd uninstall

Uninstall Noundry CLI tools (single tool or all tools).

Synopsis:

nd uninstall [tool] [OPTIONS]

Arguments:

  • [tool] - Specific tool alias to uninstall (optional, uninstalls all if not specified)

Options:

  • -f, --force - Force uninstall without confirmation prompt

Examples:

# Uninstall all tools (with confirmation)
nd uninstall

# Uninstall a specific tool
nd uninstall ng

# Force uninstall without confirmation
nd uninstall --force

# Force uninstall specific tool
nd uninstall slurp -f

What it does:

  1. Prompts for confirmation (unless --force is used)
  2. Checks if each tool is installed
  3. Uninstalls tools via dotnet tool uninstall --global
  4. Shows progress for each tool
  5. Provides summary of uninstallation results

Output:

โ•โ• Uninstalling Noundry Tools โ•โ•

โœ“ Uninstalled ndng
โœ“ Uninstalled slurp
โš  authnz is not installed
...

โ•โ• Uninstall Complete โ•โ•

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Metric             โ”‚ Value โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Tools Processed    โ”‚ 8     โ”‚
โ”‚ Uninstalled        โ”‚ 6     โ”‚
โ”‚ Failed             โ”‚ 0     โ”‚
โ”‚ Processing Time    โ”‚ 2341msโ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โœ“ Uninstall completed successfully!

nd update

Update Noundry CLI tools to their latest versions.

Synopsis:

nd update [tool]

Arguments:

  • [tool] - Specific tool alias to update (optional, updates all if not specified)

Examples:

# Update all tools
nd update

# Update a specific tool
nd update ng

What it does:

  1. Checks if each tool is installed
  2. Updates installed tools via dotnet tool update --global
  3. Skips tools that aren't installed
  4. Shows progress for each tool
  5. Provides summary of update results

Output:

โ•โ• Updating Noundry Tools โ•โ•

โœ“ Updated ndng
โœ“ Updated slurp
โš  authnz is not installed (run 'nd install' first)
...

โ•โ• Update Complete โ•โ•

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Metric             โ”‚ Value โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Tools Processed    โ”‚ 8     โ”‚
โ”‚ Updated            โ”‚ 5     โ”‚
โ”‚ Not Installed      โ”‚ 2     โ”‚
โ”‚ Failed             โ”‚ 1     โ”‚
โ”‚ Processing Time    โ”‚ 3421msโ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โœ“ Tools updated successfully!

nd nd-package-server

Add packages.noundry.com private NuGet package server.

Synopsis:

nd nd-package-server --apikey <API_KEY>

Options:

  • --apikey <KEY> - API key for packages.noundry.com (required)

Examples:

# Add with API key
nd nd-package-server --apikey YOUR_API_KEY_HERE

# Interactive prompt for API key
nd nd-package-server

What it does:

  1. Removes existing "noundry" NuGet source if present
  2. Adds https://packages.noundry.com/v3/index.json as NuGet source
  3. Configures authentication with provided API key
  4. Enables access to commercial Noundry packages

Output:

โ•โ• Adding Noundry Package Server โ•โ•

โ•โ• Configuration Complete โ•โ•

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Setting        โ”‚ Value                                      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Source Name    โ”‚ noundry                                    โ”‚
โ”‚ Source URL     โ”‚ https://packages.noundry.com/v3/index.jsonโ”‚
โ”‚ Status         โ”‚ โœ“ Configured                               โ”‚
โ”‚ Processing Timeโ”‚ 892ms                                      โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โœ“ Noundry package server configured successfully!
You can now install commercial Noundry packages.

Noundry Tool Wrappers

All Noundry CLI tools can be invoked through the nd command. If a tool is not installed, nd will prompt to install it automatically.

nd ng

Noundry Engine CLI - Deployment automation tool for .NET applications on Linux servers.

Synopsis:

nd ng [command] [args...]

Examples:

# Initialize server
nd ng init --host 192.168.1.100 --key ~/.ssh/id_rsa --email admin@example.com

# Deploy application
nd ng add myapp --test --port 5000

# Deploy files
nd ng deploy myapp.noundry.app --source ./publish

# Install database
nd ng database --type postgres --name myapp_db

# View logs
nd ng log myapp-noundry-app

# List deployments
nd ng list

# Generate GitHub Actions workflow
nd ng github-action myapp.com

Tool Package: Noundry.Engine.Cli Command: ndng Documentation: See ENGINE-CLI.md in the Noundry.Engine.Cli package


nd slurp

Noundry Slurp - Data ingestion and processing tool.

Synopsis:

nd slurp [command] [args...]

Examples:

nd slurp --help

Tool Package: Noundry.Slurp Command: slurp


nd authnz

Noundry AuthnzNet CLI - Authentication and authorization management.

Synopsis:

nd authnz [command] [args...]

Examples:

nd authnz --help

Tool Package: Noundry.AuthnzNet.Cli Command: authnz


nd lgby

Noundry Logably CLI - Logging and observability platform.

Synopsis:

nd lgby [command] [args...]

Examples:

nd lgby --help

Tool Package: Noundry.Logably.Cli Command: lgby


nd jobs

Noundry Jobs CLI - Background job processing system.

Synopsis:

nd jobs [command] [args...]

Examples:

nd jobs --help

Tool Package: Noundry.Jobs.Cli Command: njobs


nd envx

Noundry DotEnvX - Environment variable management tool.

Synopsis:

nd envx [command] [args...]

Examples:

nd envx --help

Tool Package: Noundry.DotEnvX Command: ndotenvx


nd bowtie

Noundry Tuxedo Bowtie CLI - Tuxedo framework bowtie component.

Synopsis:

nd bowtie [command] [args...]

Examples:

nd bowtie --help

Tool Package: Noundry.Tuxedo.Bowtie.Cli Command: bowtie


Noundry Tuxedo Cufflink CLI - Tuxedo framework cufflink component.

Synopsis:

nd cufflink [command] [args...]

Examples:

nd cufflink --help

Tool Package: Noundry.Tuxedo.Cufflink.Cli Command: cufflink


Configuration File

noundry.json

The noundry.json file is created by nd init and stores your project configuration:

{
  "DotnetVersion": "net90",
  "NoundryVersion": "nd10",
  "ProjectName": "MyAwesomeApp",
  "ProjectType": "C# web-api"
}

Fields:

  • DotnetVersion - Target .NET version (net80, net90, net100)
  • NoundryVersion - Noundry framework version (nd10 = Noundry 1.0)
  • ProjectName - Name of your project
  • ProjectType - Type of project (C# web-api or C# web-app)

global.json

Created automatically by nd init if it doesn't exist:

{
  "sdk": {
    "version": "9.0.0",
    "rollForward": "latestMinor"
  }
}

Complete Workflow Example

Here's a complete example of creating and deploying a new web API:

# 1. Initialize project
nd init --framework net90
# Enter project name: MyApi
# Select: C# web-api

# 2. Install Noundry tools
nd install

# 3. Configure private package server (if using commercial packages)
nd nd-package-server --apikey YOUR_API_KEY

# 4. Create new web API project
nd dn new webapi -- -n MyApi

# 5. Build the project
cd MyApi
nd dn build -- -c Release

# 6. Run tests
nd dn test

# 7. Publish application
nd dn publish -- -c Release -o ./publish

# 8. Initialize deployment server (using Engine CLI)
nd ng init --host 192.168.1.100 --key ~/.ssh/id_rsa --email admin@example.com

# 9. Install PostgreSQL database
nd ng database --type postgres --name myapi_db --user myapi_user

# 10. Deploy to test domain
nd ng add myapi --test --port 5000

# 11. Upload application files
nd ng deploy myapi.noundry.app --source ./publish

# 12. View logs
nd ng log myapi-noundry-app

# 13. Deploy to production
nd ng add myapi.com --port 5000 --ssl

# 14. Deploy files to production
nd ng deploy myapi.com --source ./publish

Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Noundry CLI (nd)                     โ”‚
โ”‚                                                         โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Core Commands                                   โ”‚  โ”‚
โ”‚  โ”‚  โ€ข init      - Project initialization            โ”‚  โ”‚
โ”‚  โ”‚  โ€ข install   - Install Noundry tools             โ”‚  โ”‚
โ”‚  โ”‚  โ€ข uninstall - Uninstall Noundry tools           โ”‚  โ”‚
โ”‚  โ”‚  โ€ข update    - Update tools to latest versions   โ”‚  โ”‚
โ”‚  โ”‚  โ€ข nd-package-server - Configure NuGet source    โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                         โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Dotnet Wrapper (dn)                             โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Wraps dotnet.exe commands                     โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Real-time output capture                      โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Execution time tracking                       โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                         โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Tool Wrappers                                   โ”‚  โ”‚
โ”‚  โ”‚  โ€ข ng      - Engine CLI (deployment)             โ”‚  โ”‚
โ”‚  โ”‚  โ€ข slurp   - Data ingestion                      โ”‚  โ”‚
โ”‚  โ”‚  โ€ข authnz  - Authentication/Authorization        โ”‚  โ”‚
โ”‚  โ”‚  โ€ข lgby    - Logging/Observability               โ”‚  โ”‚
โ”‚  โ”‚  โ€ข jobs    - Background jobs                     โ”‚  โ”‚
โ”‚  โ”‚  โ€ข envx    - Environment variables               โ”‚  โ”‚
โ”‚  โ”‚  โ€ข bowtie  - Tuxedo Bowtie                       โ”‚  โ”‚
โ”‚  โ”‚  โ€ข cufflink- Tuxedo Cufflink                     โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                         โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Infrastructure                                  โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Spectre.Console - Beautiful UI                โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Auto tool installation                        โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Progress indicators                           โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Execution time tracking                       โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Verbose/Debug logging modes                   โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚                          โ”‚
           โ–ผ                          โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ dotnet.exe  โ”‚          โ”‚ Noundry CLI Toolsโ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Benefits

1. Unified Interface

Instead of remembering multiple CLI commands and their package names:

# Before
dotnet build
dotnet tool install --global Noundry.Engine.Cli
ndng init
dotnet tool install --global Noundry.Slurp
slurp process
# After
nd dn build
nd install  # Installs all tools at once
nd ng init
nd slurp process

2. Automatic Tool Management

If you try to use a tool that's not installed, nd will offer to install it:

$ nd ng init
Tool 'ndng' is not installed.
Would you like to install ndng? (y/n): y
Installing ndng...
โœ“ ndng installed successfully!

Running: ndng init
...

3. Beautiful, Consistent UI

All commands use Spectre.Console for:

  • Color-coded output
  • Progress indicators
  • Execution time tracking
  • Tables and formatted output
  • FigletText headers

4. Fast & Efficient

  • Built with .NET 9.0 for maximum performance
  • Minimal overhead - commands execute as fast as calling tools directly
  • Parallel tool checking and installation

Project Structure

Nd-Cli/
โ”œโ”€โ”€ Noundry.Cli/
โ”‚   โ”œโ”€โ”€ Commands/
โ”‚   โ”‚   โ”œโ”€โ”€ InitCommand.cs           # nd init
โ”‚   โ”‚   โ”œโ”€โ”€ DotnetCommand.cs         # nd dn
โ”‚   โ”‚   โ”œโ”€โ”€ InstallCommand.cs        # nd install
โ”‚   โ”‚   โ”œโ”€โ”€ UninstallCommand.cs      # nd uninstall
โ”‚   โ”‚   โ”œโ”€โ”€ UpdateCommand.cs         # nd update
โ”‚   โ”‚   โ”œโ”€โ”€ PackageServerCommand.cs  # nd nd-package-server
โ”‚   โ”‚   โ””โ”€โ”€ NgCommand.cs             # All tool wrappers
โ”‚   โ”œโ”€โ”€ Models/
โ”‚   โ”‚   โ””โ”€โ”€ NoundryConfig.cs         # noundry.json model
โ”‚   โ”œโ”€โ”€ Services/
โ”‚   โ”‚   โ”œโ”€โ”€ ConfigService.cs         # Configuration management
โ”‚   โ”‚   โ”œโ”€โ”€ ProcessRunner.cs         # Process execution
โ”‚   โ”‚   โ”œโ”€โ”€ ToolRegistry.cs          # Tool mappings
โ”‚   โ”‚   โ”œโ”€โ”€ ToolCommandExecutor.cs   # Tool wrapper logic
โ”‚   โ”‚   โ””โ”€โ”€ Logger.cs                # Logging service
โ”‚   โ”œโ”€โ”€ Program.cs                   # CLI setup
โ”‚   โ””โ”€โ”€ Noundry.Cli.csproj           # Project file
โ”œโ”€โ”€ Noundry.Cli.Tests/
โ”‚   โ”œโ”€โ”€ Models/
โ”‚   โ”‚   โ””โ”€โ”€ NoundryConfigTests.cs    # Config validation tests
โ”‚   โ”œโ”€โ”€ Services/
โ”‚   โ”‚   โ”œโ”€โ”€ ToolRegistryTests.cs     # Registry tests
โ”‚   โ”‚   โ””โ”€โ”€ LoggerTests.cs           # Logger tests
โ”‚   โ””โ”€โ”€ Noundry.Cli.Tests.csproj     # Test project
โ”œโ”€โ”€ .github/workflows/
โ”‚   โ”œโ”€โ”€ ci.yml                       # CI pipeline
โ”‚   โ””โ”€โ”€ release.yml                  # Release pipeline
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ CHANGELOG.md
โ”œโ”€โ”€ CONTRIBUTING.md
โ”œโ”€โ”€ SECURITY.md
โ””โ”€โ”€ LICENSE

Generated Files:
โ”œโ”€โ”€ bin/Release/
โ”‚   โ””โ”€โ”€ Noundry.Cli.1.1.0.nupkg      # NuGet package
โ””โ”€โ”€ noundry.json                     # Project configuration (generated by nd init)

Requirements

  • .NET 9.0 SDK or later
  • Windows, macOS, or Linux
  • Internet connection (for installing tools from NuGet)

Troubleshooting

Tool Not Found After Installation

If a tool is not found after installation, you may need to restart your terminal or add the .NET tools directory to your PATH:

Windows:

$env:PATH += ";$env:USERPROFILE\.dotnet\tools"

Linux/macOS:

export PATH="$PATH:$HOME/.dotnet/tools"

Permission Denied

If you get permission errors when installing tools, ensure you have write access to the global tools directory:

Windows: %USERPROFILE%\.dotnet\tools Linux/macOS: ~/.dotnet/tools

NuGet Package Server Issues

If you're having trouble accessing packages.noundry.com:

  1. Verify your API key is correct
  2. Check internet connectivity
  3. Try removing and re-adding the source:
dotnet nuget remove source noundry
nd nd-package-server --apikey YOUR_API_KEY

Build Errors

If the project doesn't build:

  1. Ensure you have .NET 9.0 SDK installed:

    dotnet --version
    
  2. Clean and rebuild:

    nd dn clean
    nd dn build
    

Contributing

Contributions are welcome! To contribute:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

MIT License - see LICENSE file for details.

Support

Acknowledgments

Built with:


Made with โค๏ธ by the Noundry team

For more information, visit noundry.com

This package has no dependencies.

Version Downloads Last Updated
1.5.0 Current 0 12/30/2025

Info

Statistics

Total Downloads
0
Current Version Downloads
0

Authors

Noundry