Skip to main content

netbox-ipam-treeview-plugin

ci PyPI Python

A DDI-style, collapsible tree view of NetBox IPAM. Instead of a flat, paginated list of prefixes, you start from the top-level supernets and drill down: VRF → Aggregate → Prefix → child prefix, with free space shown in place, one-click Expand all / Collapse all, and the tree remembering what you had open.

Prefix tree

Features

  • Collapsible tree: roots are VRFs (Global first) and the aggregates holding their prefixes; children load lazily as you expand, so it stays fast on large IPAMs.
  • Expand all / Collapse all for the whole tree or any subtree (Alt+click a caret, or * on a focused row), capped by expand_all_limit so a click can never render an unbounded page.
  • Free space between children, shown as greyed rows with a one-click Create that pre-fills the prefix and VRF.
  • Utilization bars with the same numbers as NetBox's own prefix views, computed in bulk.
  • Row actions (add child, edit, delete), shown only when you have the permission.
  • NetBox filters: the native prefix filter form; matches are shown with their ancestors as greyed context.
  • Column picker, saved per user.
  • Remembers state: expanded nodes are restored when you come back.
  • Keyboard navigation (treegrid pattern): ↑ ↓ move, → expand / first child, ← collapse / parent, * expand subtree, Enter opens the prefix.
  • Everywhere it is useful: a Prefix Tree page, a Tree view button on the native prefix list (carrying your filters), and Tree tabs on Prefix, Aggregate and VRF pages. Each can be switched off.
  • Light and dark themes.

Compatibility

Plugin NetBox Python
0.1.x 4.7 3.12 – 3.14

Installation

source /opt/netbox/venv/bin/activate
pip install netbox-ipam-treeview-plugin

Add it to configuration.py (or local_requirements.txt + plugins.py with netbox-docker):

PLUGINS = ["netbox_ipam_treeview"]

Then collect the static files and restart NetBox:

python /opt/netbox/netbox/manage.py collectstatic --no-input
sudo systemctl restart netbox

The tree lives at /plugins/ipam-tree/ (menu: IPAM → Prefixes → Prefix Tree, right below Prefixes).

Configuration

All settings are optional:

PLUGINS_CONFIG = {
    "netbox_ipam_treeview": {
        "expand_all_limit": 5000,
    },
}
Setting Default Meaning
show_menu_item True Show the Prefix Tree menu entry
menu_location "ipam" "ipam": IPAM menu, right below Prefixes; "plugins": the Plugins menu
show_list_toggle True Tree view button on the native prefix list
show_prefix_tab True Tree tab on prefix pages
show_aggregate_tab True Tree tab on aggregate pages
show_vrf_tab True Tree tab on VRF pages
group_by_vrf True Top level is one node per VRF; False mixes all VRFs under the aggregates (add the VRF column)
show_aggregates True Aggregates as a tree level
show_free_space True Default for free-space rows (each user can toggle it)
gaps_respect_mark_utilized True No free-space rows under pools and mark utilized prefixes
max_gap_rows 64 Free-space rows per node; the rest are summarised in one row
expand_all_limit 5000 Row cap for Expand all and filtered trees
default_columns status, utilization, scope, VLAN, tenant, role, description, actions Columns before a user picks their own

Permissions

  • The page requires ipam.view_prefix; every row is restricted to what the user may view.
  • Aggregates appear only for users with ipam.view_aggregate; VRF groups only for VRFs the user may view.
  • With constrained (object-level) permissions, prefixes hang under their nearest visible ancestor, and free-space rows are not shown, because space taken by prefixes the user cannot see would look free.
  • Delete links go to NetBox's own confirmation page.

Development

The dev stack is netbox-docker with the plugin mounted live, seeded with ~8,000 RFC 1918 / ULA prefixes across VRFs, aggregates, sites and VLANs.

make dev          # build and start NetBox on http://localhost:8000 (admin / admin)
make seed         # load the demo dataset (make reseed to wipe and reload, make seed-big for ~5x)
make test         # pure unit tests (no NetBox needed)
make test-netbox  # integration tests inside the NetBox container
make lint         # ruff
make dist         # build and check the wheel and sdist

License

Apache-2.0

Metadata

Release files for netbox-ipam-treeview-plugin 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for netbox-ipam-treeview-plugin 0.1.0
File Size Uploaded
netbox_ipam_treeview_plugin-0.1.0.tar.gz 28.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for netbox-ipam-treeview-plugin 0.1.0
File Interpreter ABI Platform
netbox_ipam_treeview_plugin-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 65.2 kB

Release files / netbox_ipam_treeview_plugin-0.1.0.tar.gz

Download URL netbox_ipam_treeview_plugin-0.1.0.tar.gz
Size 28.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2a95469fedb73043799de65de0921b648048cea094f84fd9255aeae33ed5bc77
BLAKE2b-256 checksum
How to use checksums
d67ae2de92cac2b3f09a30bffdc28a0462761642edbb3e86aab75e3c51515616
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release files / netbox_ipam_treeview_plugin-0.1.0-py3-none-any.whl

Download URL netbox_ipam_treeview_plugin-0.1.0-py3-none-any.whl
Size 36.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e5f7b6c4b3ace0862ee465095660bb1fec3366b340f365367c4b7b51dc3c84da
BLAKE2b-256 checksum
How to use checksums
cd08c700dd50d8dc7bbb1bda6d136e316eb80bbdc1e5a224a82968b219f8b7b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page