Open source · MIT · Rust · Windows, Linux, macOS

A network scanner you can talk to

Discover hosts, scan ports, resolve DNS, capture packets. Drive it from an interactive terminal UI with autocomplete, the command line, or let your AI agent call the MCP server directly.

curl -fsSL https://raw.githubusercontent.com/fstubner/netscli/main/scripts/install.sh | bash
Or get the desktop app: Windows · macOS · Linux
netscli terminal UI running /discover: list of live hosts on the local subnet with IP addresses, hostnames, and response times

Four interfaces, one library

Every surface calls the same netscli-core. Full docs →

Terminal UI

An interactive terminal interface. Type / to see available commands, use tab to autocomplete, arrow keys to browse history. The status bar shows your IP and live traffic rates.

netscli terminal UI running /discover: list of live hosts on the local subnet with IP addresses, hostnames, and response times

Command line

Every scan ships as a standalone subcommand with --json and --yaml output. Pipe results into jq, call it from a shell script, or have an agent invoke it directly without the full MCP server.

$ netscli scan 1.1.1.1 -p 80,443 --json [ { "port": 80, "open": true, "service": "http" }, { "port": 443, "open": true, "service": "https" } ] $ netscli discover --json | jq '.[].ip' "192.168.1.10" "192.168.1.21" "192.168.1.57"

MCP server

Run netscli serve and point Claude Desktop or Cursor at it. Your agent gets nine tools — host discovery, port scanning, DNS, ARP, mDNS, and more — over standard JSON-RPC. The pcap-enabled build adds a tenth tool for packet capture.

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

Desktop app

A standalone desktop application for when you would rather not open a terminal. Scan ports, discover hosts, look up DNS records, and inspect your ARP table. On Windows, use winget install fstubner.netscli.gui for the hash-verified install path. Direct installers are attached to every GitHub release; Windows direct downloads are currently unsigned and may show publisher warnings until Authenticode signing is added later.

netscli desktop app port scan view: scanning 1.1.1.1 for ports 80 and 443 returns both as open with http and https service labels

Get started

Install, then run. Full README →

Winget
winget install fstubner.netscli
Scoop
scoop bucket add fstubner https://github.com/fstubner/scoop-bucket && scoop install netscli
PowerShell script
iwr -useb https://raw.githubusercontent.com/fstubner/netscli/main/scripts/install.ps1 | iex
Cargo
cargo install netscli
Homebrew
brew tap fstubner/tap && brew install netscli
Install script
curl -fsSL https://raw.githubusercontent.com/fstubner/netscli/main/scripts/install.sh | bash
Cargo
cargo install netscli
Install script
curl -fsSL https://raw.githubusercontent.com/fstubner/netscli/main/scripts/install.sh | bash
AUR (Arch)
yay -S netscli-bin
Homebrew
brew tap fstubner/tap && brew install netscli
Cargo
cargo install netscli

Try it

$netscli discover
$netscli scan 192.168.1.1 -p 22,80,443
$netscli dns google.com
$netscli serve
$netscli --help

FAQ

The questions people actually ask before installing.

What is netscli?
netscli is an open-source network scanner written in Rust. It discovers hosts on a subnet, scans TCP ports, resolves DNS (including mDNS/Bonjour), reads the ARP table with vendor lookup, and optionally captures packets via libpcap or Npcap. The same functionality is available from a command line, a terminal UI with autocomplete, a desktop app, or a Model Context Protocol (MCP) server that AI agents like Claude Code and Cursor can call directly.
How do I install netscli?

Choose the installer for your platform:

Linux/macOScurl -fsSL https://raw.githubusercontent.com/fstubner/netscli/main/scripts/install.sh | bash
Windowsiwr -useb https://raw.githubusercontent.com/fstubner/netscli/main/scripts/install.ps1 | iex
Windows CLIwinget install fstubner.netscli
Windows GUIwinget install fstubner.netscli.gui
Rustcargo install netscli

Prebuilt binaries for Windows, Linux (x86_64/aarch64/musl), and macOS (x86_64/aarch64) are attached to every GitHub release.

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, exposing ten tools: discover_network, scan_ports, ping_host, dns_lookup, get_arp_table, inspect_host, sweep_network, list_network_interfaces, discover_mdns, and capture_pcap. Point your MCP client at the netscli binary and your agent can query the local network with structured JSON responses, no parsing required.
Does netscli work on Windows, macOS, and Linux?
Yes. Every release ships binaries for Windows x86_64, Linux x86_64 (glibc and musl), Linux aarch64, macOS x86_64, and macOS aarch64, with and without packet-capture support. The desktop app is built for Windows (.exe/.msi), macOS (.app bundle), and Linux (.AppImage/.deb).
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.
Does netscli require libpcap or other system dependencies?
Not for the default build. Host discovery, port scan, DNS, ARP, and mDNS discovery all work with zero non-Rust runtime dependencies. Packet capture is a feature-gated extra that needs libpcap (Linux/macOS) or Npcap (Windows) at runtime. The install script installs the right library for you when you pass NETSCLI_PCAP=1.
Is netscli an alternative to Angry IP Scanner or Advanced IP Scanner?
Yes. netscli does the same core jobs as Angry IP Scanner (host discovery, port scan, hostname lookup) and Advanced IP Scanner (LAN device discovery with vendor lookup), and adds --json/--yaml output on every command, an MCP server for AI agents, and a scriptable terminal interface. Unlike Advanced IP Scanner, which is Windows-only and closed-source, netscli ships native binaries for Windows, macOS, and Linux under an MIT license. Unlike Angry IP Scanner, every subcommand outputs structured JSON so you can pipe results into jq, grep, or any other tool.
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 192.168.1.0/24

netscli pings the range, then runs reverse DNS, ARP-table lookups for MAC addresses, and OUI vendor matching to identify devices like your router, NAS, smart TV, printer, and IoT gear. Run netscli serve to let an AI agent answer questions about your LAN directly.

Is netscli a free network scanner for Windows, macOS, or Linux?

Yes. netscli is MIT-licensed and free for any use, including commercial.

Windows CLIwinget install fstubner.netscli
Windows GUIwinget install fstubner.netscli.gui
Windowsscoop install netscli
macOSbrew tap fstubner/tap && brew install netscli
Linuxcurl -fsSL https://raw.githubusercontent.com/fstubner/netscli/main/scripts/install.sh | bash
Arch Linuxyay -S netscli-bin

The default build has no driver or installer dependencies. Only the optional packet-capture feature uses libpcap (Linux/macOS) or Npcap (Windows), and only if you opt in with NETSCLI_PCAP=1.

Can netscli replace nmap for simple network scans?
For host discovery, basic TCP port scans, DNS lookups, and ARP-table inspection on a local network, yes. netscli is faster to learn (one subcommand per task — netscli discover, netscli scan, netscli dns), outputs JSON or YAML on every command, and ships with shell completions and a man page. For advanced workflows — service version detection, NSE scripts, OS fingerprinting, raw packet crafting — nmap remains the right tool. netscli focuses on the 80% of network-discovery tasks that don't need that depth.