# Netdisco puts SNMP discovery, port control and hardware inventory into one web interface

> Netdisco is a web-based network management tool written in Perl and Python that collects IP and MAC address data into PostgreSQL using SNMP, CLI or device APIs. It suits teams that want to answer where a machine is plugged in and what hardware is on the network without building their own collector.

**netdisco/netdisco** — A web-based network management tool.

- Repository: https://github.com/netdisco/netdisco
- Website: http://netdisco.org/
- Stars: 932 · Forks: 108
- Language: Perl
- License: BSD-3-Clause
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/netdisco-netdisco

## Address discovery for the network operations team

Netdisco is described as a web-based network management tool suitable for small to very large networks, and the problem it addresses is concrete: knowing where a machine sits on the network and what hardware is deployed. IP and MAC address data is collected into a PostgreSQL database using SNMP, CLI, or device APIs. That collection method is the design decision that shapes everything else, because the database becomes a searchable history of the network rather than a live view that you poll. The audience is the operations team: someone on a help desk who needs to point a user at the right switch port, and someone doing hardware inventory. The tool is not a traffic analyser and not a configuration management system, it is a topology and inventory record that happens to carry a web interface.

## Three processes: web interface, collection daemon and command line

The project states that Netdisco includes a lightweight web server for the interface, a backend daemon to gather data from your network, and a command line interface for troubleshooting. Three processes, three different jobs, and the split matters operationally. The daemon is the component that touches your switches, so it needs SNMP reachability and device credentials, while the web server only talks to the database. The command line interface is the tool for when a request comes in through the web UI and you want to answer it without a browser, which is exactly the situation the documentation has in mind when it describes it as being for troubleshooting. Nothing in the documentation describes these three as separately scalable, so treat them as one application that has to be running rather than three services you can spread across hosts.

## SNMP is not the only way in

Most network discovery tools speak SNMP and nothing else. Netdisco's own description lists three collection methods, SNMP, CLI, and device APIs, which is the practical difference between a tool that only reads counters and one that can ask a device what it is. The README does not enumerate which vendors or which API surfaces are supported, and it does not show a configuration example, so the honest reading is that device support is broader than plain SNMP but the exact matrix is undocumented in the pages available here. The CLI collection route is the interesting one for a mixed estate: for devices where SNMP does not expose the port to address mapping, a command line query can fill the gap. Whichever route is used, the result lands in the same PostgreSQL tables, so the interface does not care where a fact came from.

## Turning a port off from the interface

The list of capabilities in the documentation is short and worth quoting closely because it defines the product's edge. You can locate a machine on the network by MAC or IP and show the switch port it lives at. You can turn off a switch port, or change the VLAN or PoE status of a port. You can inventory your network hardware by model, vendor, software and operating system. And you get pretty pictures of your network. The second of those is the one that separates Netdisco from a read-only collector. Shutting a port or moving it to a different VLAN is a write operation against live infrastructure, and that means Netdisco needs write-capable credentials on the devices, not just read-only SNMP community strings. Inventory by model, vendor, software and operating system is the other distinctive capability, since it turns the collected device data into a hardware register.

## Installation goes through CPAN, with container images as the shortcut

Netdisco is written in Perl and Python and is described as self-contained apart from the PostgreSQL database, so it is said to be easy to install and to run well on any linux or unix system. Container images are also published for people who prefer that route. There is no install command in the documentation available here: the project directs you to the installation instructions on CPAN, where the App::Netdisco distribution lives, and the repository carries a Build.PL, which is the standard Perl build file. The configuration is a simple YAML file, and the two things you have to supply are the YAML configuration and a reachable PostgreSQL database. The web server is bundled, so there is no separate Apache or reverse proxy to set up for the basic case, though the documentation does not describe what is needed if you want the interface behind your own authenticating proxy.

## The frontend is vendored, not built

The repository contains a package.json that describes itself as a manifest for the vendored frontend libraries in share/public, and it says explicitly that it is not a build step, the file exists so dependency scanners can see what is shipped. The pinned versions are visible there, including bootstrap 5.3.8, htmx.org 4.0.0, datatables.net 3.1.4, swagger-ui-dist 5.33.3, bootstrap5-toggle 5.4.1, @popperjs/core 2.11.8, @fortawesome/fontawesome-free 7.3.1 and force-graph 1.51.4. Two things follow for an engineer. The interface is server rendered with vendored assets, so a deployment does not need a Node toolchain to rebuild the frontend. But you are shipping copies of those libraries yourself, which means their licensing and their version pinning are your responsibility, and a vulnerability in one of those packages is a vulnerability in your Netdisco install. That is a concrete reason to check the manifest before you build an image from it.

## Where Netdisco stops and a home grown collector starts

The realistic alternative to Netdisco is not another product, it is writing your own collector: an SNMP walk script that writes to a PostgreSQL schema, plus the UI or report you need on top of it. That approach has one clear advantage and two clear costs. The advantage is that it does exactly what you want and nothing else, and it fits an existing schema and an existing dashboard stack. The costs are that you maintain the device quirks yourself, that you must implement port mapping logic for every switch family you own, and that you end up writing the same history and search features the project already provides. Netdisco takes those costs in exchange for you accepting the fixed data model and the fixed interface. For a network of any size, the deciding factor is usually how many device types you have and whether anyone on the team wants to maintain SNMP collection code rather than the operational work the tool leaves to them.

## Licence, release cadence and what an upgrade involves

The licence field on the repository says BSD-3-Clause, which is a permissive licence with a no warranty clause and no copyleft obligation on code that links with it. Nothing in the documentation gives legal guidance on use, so read the LICENSE.md file for the terms themselves. On the maintenance side the picture is clear from the release list, with 2.114000, 2.113000 and 2.112000 published on 2026-10-20, 2026-10-18 and 2026-10-14, and the last push was on 2026-10-20. Releases this frequent mean two things for you. An upgrade path exists, and the documentation says to check the latest Release Notes when upgrading, which implies changes worth reading rather than a version bump you can skip. The repository also carries a Changes file and a SECURITY.md, so the security contact path is documented rather than improvised.

## Conclusion

Netdisco suits network engineers who already have SNMP reachability into their switches and want a searchable record of where each address lives, plus port level control from the same interface. It does not suit an environment where device credentials are unavailable or where a generic SNMP monitoring agent is all you need, since Netdisco is a discovery and inventory tool with a database behind it. Before adopting it, check that your devices answer SNMP and that you can run PostgreSQL, then read the installation instructions on CPAN and the latest Release Notes, because the project ships releases frequently and its own documentation points there for upgrade steps.

## FAQ

### How do I install Netdisco?

The documentation points to the installation instructions on CPAN for App::Netdisco. Netdisco is written in Perl and Python and is self-contained apart from the PostgreSQL database, and container images are also published.

### What database does Netdisco use?

Netdisco collects IP and MAC address data into a PostgreSQL database, and the configuration file is a simple YAML file. Apart from PostgreSQL, the project describes itself as self-contained, with the web server included.

### Which protocols does Netdisco use to collect data?

The documentation states that data is collected using SNMP, CLI, or device APIs. The pages available here do not list which vendors or APIs are supported.

### Can Netdisco change switch port settings?

Yes. The documented capabilities include turning off a switch port, or changing the VLAN or PoE status of a port, alongside locating a machine by MAC or IP and inventorying hardware by model, vendor, software and operating system.

### What licence is Netdisco released under?

The licence field on the repository says BSD-3-Clause. The terms themselves are in the LICENSE.md file at the top level of the repository.

## Sources

- [License: BSD-3-Clause](https://github.com/netdisco/netdisco/blob/master/LICENSE)
- [netdisco/netdisco on GitHub](https://github.com/netdisco/netdisco)
- [Project website](http://netdisco.org/)
- [README](https://github.com/netdisco/netdisco/blob/master/README.md)
- [Releases](https://github.com/netdisco/netdisco/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/netdisco-netdisco
