Windows · Linux · macOS

A network scanner for the desktop, the terminal, and AI agents

Discover LAN devices, scan TCP ports, query DNS, and inspect hosts from the desktop app, terminal UI, CLI, or MCP server — all on one Rust core.

netscli terminal UI running /discover with sanitized lab hostnames, vendors, and response times

Choose how to work with your network

Four ways in, one engine behind them. Whichever you pick — desktop app, terminal UI, CLI or MCP — a port scan means the same thing and returns the same answer. Full docs →

Desktop app

The desktop app is where you compare results side by side. Tabs keep several investigations open at once, and every result is sortable, filterable, and exportable, with the full history kept as you go.

NetsCLI Desktop dark theme scan view showing sanitized demo port results, row details, command preview, and status bar

Terminal UI

Run netscli with no subcommand to start the terminal UI. It is the one to reach for when you are already in a shell and want to stay there — history and autocomplete included, with local interface activity beside the results.

netscli terminal UI running /discover with sanitized lab hostnames, vendors, and response times

Command line

Use the CLI for repeatable diagnostics and automation. Network operations expose --json and --yaml output, so scripts and other tools can consume the same data the desktop app displays.

$ netscli scan demo.local -p 80,443 --json [ { "port": 80, "open": true, "service": "http" }, { "port": 443, "open": true, "service": "https" } ] $ netscli discover --resolve --json | jq '.[].hostname' "workstation.local" "phone.local" "pi.local"

MCP server

Run netscli serve when an MCP client needs local network tools. Discovery, scanning, ping, DNS, ARP and interfaces are all exposed as structured tools, so an agent gets the same results you would, in a shape it can parse.

// claude_desktop_config.json { "mcpServers": { "netscli": { "command": "netscli", "args": ["serve"] } } }

Get started

Install the desktop app or the command line — both drive the same Rust core. Full install guide →

Desktop app

Winget
winget install netscli-gui

Hash-verified

ScoopHash-verified
scoop bucket add fstubner https://github.com/fstubner/scoop-bucket && scoop install netscli-gui
InstallerUnsigned — SmartScreen may warn; checksums published
Download →

CLI + terminal UI

Winget
winget install netscli

Hash-verified

ScoopHash-verified
scoop bucket add fstubner https://github.com/fstubner/scoop-bucket && scoop install netscli
PowerShell script
iwr -useb https://netscli.com/install.ps1 | iex

Try it

# Find live hosts on your current network$netscli discover
# Open the interactive terminal UI$netscli
# Check common TCP services on a router or host$netscli scan router.local -p 22,80,443
# Expose NetsCLI tools to Claude, Cursor, and other MCP clients$netscli serve
# List every CLI command and option$netscli --help

FAQ

The questions people actually ask before installing.

What it is

What is NetsCLI?
NetsCLI is an open-source network scanner written in Rust. It discovers hosts on a subnet, scans TCP ports, queries DNS, traces routes, reads local interfaces and the ARP neighbor cache, and can capture packets when packet-capture support and the required system library are available. You can use it from the desktop app, terminal UI, CLI, or Model Context Protocol (MCP) server.
Is NetsCLI open source?
Yes. NetsCLI is MIT-licensed. Source, issue tracker, and releases are at github.com/fstubner/netscli. The library (netscli-core) and MCP server (netscli-mcp) are published to crates.io so other Rust projects can build on them.

Install and updates

How do I install NetsCLI?

Install the netscli package for the CLI, terminal UI, and MCP server:

Windowswinget install netscli
Linux/macOScurl -fsSL https://netscli.com/install.sh | bash
Rustcargo install netscli

Install the Windows desktop app separately:

Windows appwinget install netscli-gui

Prebuilt binaries and desktop installers for Windows, Linux, and macOS are attached to GitHub releases when available for that platform.

Does NetsCLI work on Windows, macOS, and Linux?
Yes. Release artifacts target Windows, macOS, and Linux. CLI/TUI binaries are published for common x86_64 and aarch64 targets, including macOS Intel and Apple Silicon. The desktop app is published as Windows, macOS, and Linux installers where the release workflow supports that platform.
Is NetsCLI a free network scanner for Windows, macOS, or Linux?

Yes. NetsCLI is MIT-licensed and free for personal, open-source, and commercial use.

Windows CLI/TUI/MCPwinget install netscli
Windows appwinget install netscli-gui
Windowsscoop bucket add fstubner https://github.com/fstubner/scoop-bucket && scoop install netscli
macOSbrew tap fstubner/tap && brew install netscli
Linuxcurl -fsSL https://netscli.com/install.sh | bash
Arch Linuxyay -S netscli-bin

Packet capture is the only workflow that needs a system capture library: libpcap on Linux/macOS or Npcap on Windows. mDNS discovery is pure Rust and is included in the published app, CLI, and MCP builds.

Interfaces and integrations

Can I use NetsCLI with Claude Code, Cursor, or another AI agent?
Yes. Running netscli serve starts a Model Context Protocol (MCP) server over stdio. It exposes structured local-network tools for host discovery, port scanning, ping, DNS, ARP, host inspection, network sweep, interface listing, and mDNS discovery. Packet-capture builds can also expose capture tools. Packet capture uses a job-style flow for long-running work: start the capture, poll status, then fetch the result.

Network workflows

Is NetsCLI an alternative to Angry IP Scanner or Advanced IP Scanner?
NetsCLI overlaps with those tools for common LAN discovery tasks: finding live hosts, scanning TCP ports, resolving hostnames, and showing MAC vendors from the local ARP cache. It is not a drop-in clone of either application. The main differences are cross-platform desktop app/TUI/CLI/MCP interfaces, structured --json/--yaml output, and an MIT-licensed Rust core.
How do I find devices on my home network with NetsCLI?

Run discovery from any machine on the network:

Auto-detectnetscli discover
Specific subnetnetscli discover <subnet>

NetsCLI probes the range, then adds reverse DNS, ARP cache data, MAC addresses, and OUI vendor names when the operating system has that information available.

Can NetsCLI replace nmap, and does it have a TUI?
NetsCLI covers the simpler cases nmap is often reached for: host discovery, basic TCP port scans, DNS lookups, and ARP-table inspection on a local network, with direct subcommands and structured output. It also ships a terminal UI — run netscli with no arguments to get an interactive, keyboard-driven scanner in the terminal, which nmap itself does not provide. For advanced service detection, NSE scripts, OS fingerprinting, and raw packet workflows, nmap remains the better tool.
Is there a netscan command for Linux or Windows?

There is no standard netscan command on Linux, macOS, or Windows — it is not part of any of those systems. People searching for one usually want a command-line network scanner, which is what NetsCLI is:

Live hostsnetscli discover
Ports on a hostnetscli scan router.local -p 22,80,443
Both, across a rangenetscli sweep

Several unrelated third-party tools also use the name NetScan, so check which one you mean before installing.

What is the difference between scan, inspect, discover, and sweep?
Use scan when you already know a host and want TCP port status. Use inspect when you want a host profile that combines reachability, reverse DNS, and optional port checks. Use discover to find reachable devices on a subnet. Use sweep when you want discovery plus open-port checks across the discovered hosts.

Limits and dependencies

Does NetsCLI require libpcap or other system dependencies?
Not for the normal scan, discovery, DNS, ARP, ping, trace, or interface workflows. Packet capture is the exception: it requires libpcap on Linux/macOS or Npcap on Windows at runtime, and only works in builds compiled with packet-capture support.
What does filtered mean in a port scan?
filtered means NetsCLI could not complete the TCP connection before the timeout. In practice, the packet may have been dropped by a firewall, blocked by a router, or ignored by the host. It is different from closed, where the host actively refused the connection.