Tim Jones 2 недель назад
Родитель
Сommit
2b9aba6632

+ 227 - 141
Shared.Rcl/wwwroot/raw_docs/cli-commands-index.md

@@ -1,142 +1,228 @@
+
 - [rpk](docs/Commands.md#rpk)
 - [rpk](docs/Commands.md#rpk)
-    - [summary](docs/Commands.md#rpk-summary) - Show a summarized report of all resources in the system
-    - [servers](docs/Commands.md#rpk-servers) - Manage servers and their components
-        - [summary](docs/Commands.md#rpk-servers-summary) - Show a summarized hardware report for all servers
-        - [add](docs/Commands.md#rpk-servers-add) - Add a new server to the inventory
-        - [get](docs/Commands.md#rpk-servers-get) - List all servers or retrieve a specific server by name
-        - [describe](docs/Commands.md#rpk-servers-describe) - Display detailed information about a specific server
-        - [set](docs/Commands.md#rpk-servers-set) - Update properties of an existing server
-        - [del](docs/Commands.md#rpk-servers-del) - Delete a server from the inventory
-        - [tree](docs/Commands.md#rpk-servers-tree) - Display the dependency tree of a server
-        - [cpu](docs/Commands.md#rpk-servers-cpu) - Manage CPUs attached to a server
-            - [add](docs/Commands.md#rpk-servers-cpu-add) - Add a CPU to a specific server
-            - [set](docs/Commands.md#rpk-servers-cpu-set) - Update configuration of a server CPU
-            - [del](docs/Commands.md#rpk-servers-cpu-del) - Remove a CPU from a server
-        - [drive](docs/Commands.md#rpk-servers-drive) - Manage drives attached to a server
-            - [add](docs/Commands.md#rpk-servers-drive-add) - Add a storage drive to a server
-            - [set](docs/Commands.md#rpk-servers-drive-set) - Update properties of a server drive
-            - [del](docs/Commands.md#rpk-servers-drive-del) - Remove a drive from a server
-        - [gpu](docs/Commands.md#rpk-servers-gpu) - Manage GPUs attached to a server
-            - [add](docs/Commands.md#rpk-servers-gpu-add) - Add a GPU to a server
-            - [set](docs/Commands.md#rpk-servers-gpu-set) - Update properties of a server GPU
-            - [del](docs/Commands.md#rpk-servers-gpu-del) - Remove a GPU from a server
-        - [nic](docs/Commands.md#rpk-servers-nic) - Manage network interface cards (NICs) for a server
-            - [add](docs/Commands.md#rpk-servers-nic-add) - Add a NIC to a server
-            - [set](docs/Commands.md#rpk-servers-nic-set) - Update properties of a server NIC
-            - [del](docs/Commands.md#rpk-servers-nic-del) - Remove a NIC from a server
-    - [switches](docs/Commands.md#rpk-switches) - Manage network switches
-        - [summary](docs/Commands.md#rpk-switches-summary) - Show a hardware report for all switches
-        - [add](docs/Commands.md#rpk-switches-add) - Add a new network switch to the inventory
-        - [list](docs/Commands.md#rpk-switches-list) - List all switches in the system
-        - [get](docs/Commands.md#rpk-switches-get) - Retrieve details of a specific switch by name
-        - [describe](docs/Commands.md#rpk-switches-describe) - Show detailed information about a switch
-        - [set](docs/Commands.md#rpk-switches-set) - Update properties of a switch
-        - [del](docs/Commands.md#rpk-switches-del) - Delete a switch from the inventory
-        - [port](docs/Commands.md#rpk-switches-port) - Manage ports on a network switch
-            - [add](docs/Commands.md#rpk-switches-port-add) - Add a port to a switch
-            - [set](docs/Commands.md#rpk-switches-port-set) - Update a switch port
-            - [del](docs/Commands.md#rpk-switches-port-del) - Remove a port from a switch
-    - [routers](docs/Commands.md#rpk-routers) - Manage network routers
-        - [summary](docs/Commands.md#rpk-routers-summary) - Show a hardware report for all routers
-        - [add](docs/Commands.md#rpk-routers-add) - Add a new network router to the inventory
-        - [list](docs/Commands.md#rpk-routers-list) - List all routers in the system
-        - [get](docs/Commands.md#rpk-routers-get) - Retrieve details of a specific router by name
-        - [describe](docs/Commands.md#rpk-routers-describe) - Show detailed information about a router
-        - [set](docs/Commands.md#rpk-routers-set) - Update properties of a router
-        - [del](docs/Commands.md#rpk-routers-del) - Delete a router from the inventory
-        - [port](docs/Commands.md#rpk-routers-port) - Manage ports on a router
-            - [add](docs/Commands.md#rpk-routers-port-add) - Add a port to a router
-            - [set](docs/Commands.md#rpk-routers-port-set) - Update a router port
-            - [del](docs/Commands.md#rpk-routers-port-del) - Remove a port from a router
-    - [firewalls](docs/Commands.md#rpk-firewalls) - Manage firewalls
-        - [summary](docs/Commands.md#rpk-firewalls-summary) - Show a hardware report for all firewalls
-        - [add](docs/Commands.md#rpk-firewalls-add) - Add a new firewall to the inventory
-        - [list](docs/Commands.md#rpk-firewalls-list) - List all firewalls in the system
-        - [get](docs/Commands.md#rpk-firewalls-get) - Retrieve details of a specific firewall by name
-        - [describe](docs/Commands.md#rpk-firewalls-describe) - Show detailed information about a firewall
-        - [set](docs/Commands.md#rpk-firewalls-set) - Update properties of a firewall
-        - [del](docs/Commands.md#rpk-firewalls-del) - Delete a firewall from the inventory
-        - [port](docs/Commands.md#rpk-firewalls-port) - Manage ports on a firewall
-            - [add](docs/Commands.md#rpk-firewalls-port-add) - Add a port to a firewall
-            - [set](docs/Commands.md#rpk-firewalls-port-set) - Update a firewall port
-            - [del](docs/Commands.md#rpk-firewalls-port-del) - Remove a port from a firewall
-    - [systems](docs/Commands.md#rpk-systems) - Manage systems and their dependencies
-        - [summary](docs/Commands.md#rpk-systems-summary) - Show a summary report for all systems
-        - [add](docs/Commands.md#rpk-systems-add) - Add a new system to the inventory
-        - [list](docs/Commands.md#rpk-systems-list) - List all systems
-        - [get](docs/Commands.md#rpk-systems-get) - Retrieve a system by name
-        - [describe](docs/Commands.md#rpk-systems-describe) - Display detailed information about a system
-        - [set](docs/Commands.md#rpk-systems-set) - Update properties of a system
-        - [del](docs/Commands.md#rpk-systems-del) - Delete a system from the inventory
-        - [tree](docs/Commands.md#rpk-systems-tree) - Display the dependency tree for a system
-    - [accesspoints](docs/Commands.md#rpk-accesspoints) - Manage access points
-        - [summary](docs/Commands.md#rpk-accesspoints-summary) - Show a hardware report for all access points
-        - [add](docs/Commands.md#rpk-accesspoints-add) - Add a new access point
-        - [list](docs/Commands.md#rpk-accesspoints-list) - List all access points
-        - [get](docs/Commands.md#rpk-accesspoints-get) - Retrieve an access point by name
-        - [describe](docs/Commands.md#rpk-accesspoints-describe) - Show detailed information about an access point
-        - [set](docs/Commands.md#rpk-accesspoints-set) - Update properties of an access point
-        - [del](docs/Commands.md#rpk-accesspoints-del) - Delete an access point
-    - [ups](docs/Commands.md#rpk-ups) - Manage UPS units
-        - [summary](docs/Commands.md#rpk-ups-summary) - Show a hardware report for all UPS units
-        - [add](docs/Commands.md#rpk-ups-add) - Add a new UPS unit
-        - [list](docs/Commands.md#rpk-ups-list) - List all UPS units
-        - [get](docs/Commands.md#rpk-ups-get) - Retrieve a UPS unit by name
-        - [describe](docs/Commands.md#rpk-ups-describe) - Show detailed information about a UPS unit
-        - [set](docs/Commands.md#rpk-ups-set) - Update properties of a UPS unit
-        - [del](docs/Commands.md#rpk-ups-del) - Delete a UPS unit
-    - [desktops](docs/Commands.md#rpk-desktops) - Manage desktop computers and their components
-        - [add](docs/Commands.md#rpk-desktops-add) - Add a new desktop
-        - [list](docs/Commands.md#rpk-desktops-list) - List all desktops
-        - [get](docs/Commands.md#rpk-desktops-get) - Retrieve a desktop by name
-        - [describe](docs/Commands.md#rpk-desktops-describe) - Show detailed information about a desktop
-        - [set](docs/Commands.md#rpk-desktops-set) - Update properties of a desktop
-        - [del](docs/Commands.md#rpk-desktops-del) - Delete a desktop from the inventory
-        - [summary](docs/Commands.md#rpk-desktops-summary) - Show a summarized hardware report for all desktops
-        - [tree](docs/Commands.md#rpk-desktops-tree) - Display the dependency tree for a desktop
-        - [cpu](docs/Commands.md#rpk-desktops-cpu) - Manage CPUs attached to desktops
-            - [add](docs/Commands.md#rpk-desktops-cpu-add) - Add a CPU to a desktop
-            - [set](docs/Commands.md#rpk-desktops-cpu-set) - Update a desktop CPU
-            - [del](docs/Commands.md#rpk-desktops-cpu-del) - Remove a CPU from a desktop
-        - [drive](docs/Commands.md#rpk-desktops-drive) - Manage storage drives attached to desktops
-            - [add](docs/Commands.md#rpk-desktops-drive-add) - Add a drive to a desktop
-            - [set](docs/Commands.md#rpk-desktops-drive-set) - Update a desktop drive
-            - [del](docs/Commands.md#rpk-desktops-drive-del) - Remove a drive from a desktop
-        - [gpu](docs/Commands.md#rpk-desktops-gpu) - Manage GPUs attached to desktops
-            - [add](docs/Commands.md#rpk-desktops-gpu-add) - Add a GPU to a desktop
-            - [set](docs/Commands.md#rpk-desktops-gpu-set) - Update a desktop GPU
-            - [del](docs/Commands.md#rpk-desktops-gpu-del) - Remove a GPU from a desktop
-        - [nic](docs/Commands.md#rpk-desktops-nic) - Manage network interface cards (NICs) for desktops
-            - [add](docs/Commands.md#rpk-desktops-nic-add) - Add a NIC to a desktop
-            - [set](docs/Commands.md#rpk-desktops-nic-set) - Update a desktop NIC
-            - [del](docs/Commands.md#rpk-desktops-nic-del) - Remove a NIC from a desktop
-    - [Laptops](docs/Commands.md#rpk-laptops) - Manage Laptop computers and their components
-        - [add](docs/Commands.md#rpk-laptops-add) - Add a new Laptop
-        - [list](docs/Commands.md#rpk-laptops-list) - List all Laptops
-        - [get](docs/Commands.md#rpk-laptops-get) - Retrieve a Laptop by name
-        - [describe](docs/Commands.md#rpk-laptops-describe) - Show detailed information about a Laptop
-        - [del](docs/Commands.md#rpk-laptops-del) - Delete a Laptop from the inventory
-        - [summary](docs/Commands.md#rpk-laptops-summary) - Show a summarized hardware report for all Laptops
-        - [tree](docs/Commands.md#rpk-laptops-tree) - Display the dependency tree for a Laptop
-        - [cpu](docs/Commands.md#rpk-laptops-cpu) - Manage CPUs attached to Laptops
-            - [add](docs/Commands.md#rpk-laptops-cpu-add) - Add a CPU to a Laptop
-            - [set](docs/Commands.md#rpk-laptops-cpu-set) - Update a Laptop CPU
-            - [del](docs/Commands.md#rpk-laptops-cpu-del) - Remove a CPU from a Laptop
-        - [drive](docs/Commands.md#rpk-laptops-drive) - Manage storage drives attached to Laptops
-            - [add](docs/Commands.md#rpk-laptops-drive-add) - Add a drive to a Laptop
-            - [set](docs/Commands.md#rpk-laptops-drive-set) - Update a Laptop drive
-            - [del](docs/Commands.md#rpk-laptops-drive-del) - Remove a drive from a Laptop
-        - [gpu](docs/Commands.md#rpk-laptops-gpu) - Manage GPUs attached to Laptops
-            - [add](docs/Commands.md#rpk-laptops-gpu-add) - Add a GPU to a Laptop
-            - [set](docs/Commands.md#rpk-laptops-gpu-set) - Update a Laptop GPU
-            - [del](docs/Commands.md#rpk-laptops-gpu-del) - Remove a GPU from a Laptop
-    - [services](docs/Commands.md#rpk-services) - Manage services and their configurations
-        - [summary](docs/Commands.md#rpk-services-summary) - Show a summary report for all services
-        - [add](docs/Commands.md#rpk-services-add) - Add a new service
-        - [list](docs/Commands.md#rpk-services-list) - List all services
-        - [get](docs/Commands.md#rpk-services-get) - Retrieve a service by name
-        - [describe](docs/Commands.md#rpk-services-describe) - Show detailed information about a service
-        - [set](docs/Commands.md#rpk-services-set) - Update properties of a service
-        - [del](docs/Commands.md#rpk-services-del) - Delete a service
-        - [subnets](docs/Commands.md#rpk-services-subnets) - List subnets associated with a service, optionally filtered
-          by CIDR
+  - [summary](docs/Commands.md#rpk-summary) - Show a summarized report of all resources in the system
+  - [servers](docs/Commands.md#rpk-servers) - Manage servers and their components
+    - [summary](docs/Commands.md#rpk-servers-summary) - Show a summarized hardware report for all servers
+    - [add](docs/Commands.md#rpk-servers-add) - Add a new server to the inventory
+    - [get](docs/Commands.md#rpk-servers-get) - List all servers or retrieve a specific server by name
+    - [describe](docs/Commands.md#rpk-servers-describe) - Display detailed information about a specific server
+    - [set](docs/Commands.md#rpk-servers-set) - Update properties of an existing server
+    - [del](docs/Commands.md#rpk-servers-del) - Delete a server from the inventory
+    - [rename](docs/Commands.md#rpk-servers-rename) - Rename a server to a new name
+    - [tree](docs/Commands.md#rpk-servers-tree) - Display the dependency tree of a server
+    - [cpu](docs/Commands.md#rpk-servers-cpu) - Manage CPUs attached to a server
+      - [add](docs/Commands.md#rpk-servers-cpu-add) - Add a CPU to a specific server
+      - [set](docs/Commands.md#rpk-servers-cpu-set) - Update configuration of a server CPU
+      - [del](docs/Commands.md#rpk-servers-cpu-del) - Remove a CPU from a server
+    - [drive](docs/Commands.md#rpk-servers-drive) - Manage drives attached to a server
+      - [add](docs/Commands.md#rpk-servers-drive-add) - Add a storage drive to a server
+      - [set](docs/Commands.md#rpk-servers-drive-set) - Update properties of a server drive
+      - [del](docs/Commands.md#rpk-servers-drive-del) - Remove a drive from a server
+    - [gpu](docs/Commands.md#rpk-servers-gpu) - Manage GPUs attached to a server
+      - [add](docs/Commands.md#rpk-servers-gpu-add) - Add a GPU to a server
+      - [set](docs/Commands.md#rpk-servers-gpu-set) - Update properties of a server GPU
+      - [del](docs/Commands.md#rpk-servers-gpu-del) - Remove a GPU from a server
+    - [nic](docs/Commands.md#rpk-servers-nic) - Manage network interface cards (NICs) for a server
+      - [add](docs/Commands.md#rpk-servers-nic-add) - Add a NIC to a server
+      - [set](docs/Commands.md#rpk-servers-nic-set) - Update properties of a server NIC
+      - [del](docs/Commands.md#rpk-servers-nic-del) - Remove a NIC from a server
+    - [label](docs/Commands.md#rpk-servers-label) - Manage labels on a server
+      - [add](docs/Commands.md#rpk-servers-label-add) - Add a label to a server
+      - [remove](docs/Commands.md#rpk-servers-label-remove) - Remove a label from a server
+    - [tag](docs/Commands.md#rpk-servers-tag) - Manage tags on a server
+      - [add](docs/Commands.md#rpk-servers-tag-add) - Add a tag to a server
+      - [remove](docs/Commands.md#rpk-servers-tag-remove) - Remove a tag from a server
+  - [switches](docs/Commands.md#rpk-switches) - Manage network switches
+    - [summary](docs/Commands.md#rpk-switches-summary) - Show a hardware report for all switches
+    - [add](docs/Commands.md#rpk-switches-add) - Add a new network switch to the inventory
+    - [list](docs/Commands.md#rpk-switches-list) - List all switches in the system
+    - [get](docs/Commands.md#rpk-switches-get) - Retrieve details of a specific switch by name
+    - [describe](docs/Commands.md#rpk-switches-describe) - Show detailed information about a switch
+    - [set](docs/Commands.md#rpk-switches-set) - Update properties of a switch
+    - [del](docs/Commands.md#rpk-switches-del) - Delete a switch from the inventory
+    - [rename](docs/Commands.md#rpk-switches-rename) - Rename a switch to a new name
+    - [port](docs/Commands.md#rpk-switches-port) - Manage ports on a network switch
+      - [add](docs/Commands.md#rpk-switches-port-add) - Add a port to a switch
+      - [set](docs/Commands.md#rpk-switches-port-set) - Update a switch port
+      - [del](docs/Commands.md#rpk-switches-port-del) - Remove a port from a switch
+    - [label](docs/Commands.md#rpk-switches-label) - Manage labels on a switch
+      - [add](docs/Commands.md#rpk-switches-label-add) - Add a label to a switch
+      - [remove](docs/Commands.md#rpk-switches-label-remove) - Remove a label from a switch
+    - [tag](docs/Commands.md#rpk-switches-tag) - Manage tags on a switch
+      - [add](docs/Commands.md#rpk-switches-tag-add) - Add a tag to a switch
+      - [remove](docs/Commands.md#rpk-switches-tag-remove) - Remove a tag from a switch
+  - [routers](docs/Commands.md#rpk-routers) - Manage network routers
+    - [summary](docs/Commands.md#rpk-routers-summary) - Show a hardware report for all routers
+    - [add](docs/Commands.md#rpk-routers-add) - Add a new network router to the inventory
+    - [list](docs/Commands.md#rpk-routers-list) - List all routers in the system
+    - [get](docs/Commands.md#rpk-routers-get) - Retrieve details of a specific router by name
+    - [describe](docs/Commands.md#rpk-routers-describe) - Show detailed information about a router
+    - [set](docs/Commands.md#rpk-routers-set) - Update properties of a router
+    - [del](docs/Commands.md#rpk-routers-del) - Delete a router from the inventory
+    - [rename](docs/Commands.md#rpk-routers-rename) - Rename a router to a new name
+    - [port](docs/Commands.md#rpk-routers-port) - Manage ports on a router
+      - [add](docs/Commands.md#rpk-routers-port-add) - Add a port to a router
+      - [set](docs/Commands.md#rpk-routers-port-set) - Update a router port
+      - [del](docs/Commands.md#rpk-routers-port-del) - Remove a port from a router
+    - [label](docs/Commands.md#rpk-routers-label) - Manage labels on a router
+      - [add](docs/Commands.md#rpk-routers-label-add) - Add a label to a router
+      - [remove](docs/Commands.md#rpk-routers-label-remove) - Remove a label from a router
+    - [tag](docs/Commands.md#rpk-routers-tag) - Manage tags on a router
+      - [add](docs/Commands.md#rpk-routers-tag-add) - Add a tag to a router
+      - [remove](docs/Commands.md#rpk-routers-tag-remove) - Remove a tag from a router
+  - [firewalls](docs/Commands.md#rpk-firewalls) - Manage firewalls
+    - [summary](docs/Commands.md#rpk-firewalls-summary) - Show a hardware report for all firewalls
+    - [add](docs/Commands.md#rpk-firewalls-add) - Add a new firewall to the inventory
+    - [list](docs/Commands.md#rpk-firewalls-list) - List all firewalls in the system
+    - [get](docs/Commands.md#rpk-firewalls-get) - Retrieve details of a specific firewall by name
+    - [describe](docs/Commands.md#rpk-firewalls-describe) - Show detailed information about a firewall
+    - [set](docs/Commands.md#rpk-firewalls-set) - Update properties of a firewall
+    - [del](docs/Commands.md#rpk-firewalls-del) - Delete a firewall from the inventory
+    - [rename](docs/Commands.md#rpk-firewalls-rename) - Rename a firewall to a new name
+    - [port](docs/Commands.md#rpk-firewalls-port) - Manage ports on a firewall
+      - [add](docs/Commands.md#rpk-firewalls-port-add) - Add a port to a firewall
+      - [set](docs/Commands.md#rpk-firewalls-port-set) - Update a firewall port
+      - [del](docs/Commands.md#rpk-firewalls-port-del) - Remove a port from a firewall
+    - [label](docs/Commands.md#rpk-firewalls-label) - Manage labels on a firewall
+      - [add](docs/Commands.md#rpk-firewalls-label-add) - Add a label to a firewall
+      - [remove](docs/Commands.md#rpk-firewalls-label-remove) - Remove a label from a firewall
+    - [tag](docs/Commands.md#rpk-firewalls-tag) - Manage tags on a firewall
+      - [add](docs/Commands.md#rpk-firewalls-tag-add) - Add a tag to a firewall
+      - [remove](docs/Commands.md#rpk-firewalls-tag-remove) - Remove a tag from a firewall
+  - [systems](docs/Commands.md#rpk-systems) - Manage systems and their dependencies
+    - [summary](docs/Commands.md#rpk-systems-summary) - Show a summary report for all systems
+    - [add](docs/Commands.md#rpk-systems-add) - Add a new system to the inventory
+    - [list](docs/Commands.md#rpk-systems-list) - List all systems
+    - [get](docs/Commands.md#rpk-systems-get) - Retrieve a system by name
+    - [describe](docs/Commands.md#rpk-systems-describe) - Display detailed information about a system
+    - [set](docs/Commands.md#rpk-systems-set) - Update properties of a system
+    - [del](docs/Commands.md#rpk-systems-del) - Delete a system from the inventory
+    - [rename](docs/Commands.md#rpk-systems-rename) - Rename a system to a new name
+    - [tree](docs/Commands.md#rpk-systems-tree) - Display the dependency tree for a system
+    - [label](docs/Commands.md#rpk-systems-label) - Manage labels on a system
+      - [add](docs/Commands.md#rpk-systems-label-add) - Add a label to a system
+      - [remove](docs/Commands.md#rpk-systems-label-remove) - Remove a label from a system
+    - [tag](docs/Commands.md#rpk-systems-tag) - Manage tags on a system
+      - [add](docs/Commands.md#rpk-systems-tag-add) - Add a tag to a system
+      - [remove](docs/Commands.md#rpk-systems-tag-remove) - Remove a tag from a system
+  - [accesspoints](docs/Commands.md#rpk-accesspoints) - Manage access points
+    - [summary](docs/Commands.md#rpk-accesspoints-summary) - Show a hardware report for all access points
+    - [add](docs/Commands.md#rpk-accesspoints-add) - Add a new access point
+    - [list](docs/Commands.md#rpk-accesspoints-list) - List all access points
+    - [get](docs/Commands.md#rpk-accesspoints-get) - Retrieve an access point by name
+    - [describe](docs/Commands.md#rpk-accesspoints-describe) - Show detailed information about an access point
+    - [set](docs/Commands.md#rpk-accesspoints-set) - Update properties of an access point
+    - [del](docs/Commands.md#rpk-accesspoints-del) - Delete an access point
+    - [rename](docs/Commands.md#rpk-accesspoints-rename) - Rename an access point to a new name
+    - [label](docs/Commands.md#rpk-accesspoints-label) - Manage labels on an access point
+      - [add](docs/Commands.md#rpk-accesspoints-label-add) - Add a label to an access point
+      - [remove](docs/Commands.md#rpk-accesspoints-label-remove) - Remove a label from an access point
+    - [tag](docs/Commands.md#rpk-accesspoints-tag) - Manage tags on an access point
+      - [add](docs/Commands.md#rpk-accesspoints-tag-add) - Add a tag to an access point
+      - [remove](docs/Commands.md#rpk-accesspoints-tag-remove) - Remove a tag from an access point
+  - [ups](docs/Commands.md#rpk-ups) - Manage UPS units
+    - [summary](docs/Commands.md#rpk-ups-summary) - Show a hardware report for all UPS units
+    - [add](docs/Commands.md#rpk-ups-add) - Add a new UPS unit
+    - [list](docs/Commands.md#rpk-ups-list) - List all UPS units
+    - [get](docs/Commands.md#rpk-ups-get) - Retrieve a UPS unit by name
+    - [describe](docs/Commands.md#rpk-ups-describe) - Show detailed information about a UPS unit
+    - [set](docs/Commands.md#rpk-ups-set) - Update properties of a UPS unit
+    - [del](docs/Commands.md#rpk-ups-del) - Delete a UPS unit
+    - [rename](docs/Commands.md#rpk-ups-rename) - Rename a UPS unit to a new name
+    - [label](docs/Commands.md#rpk-ups-label) - Manage labels on a UPS unit
+      - [add](docs/Commands.md#rpk-ups-label-add) - Add a label to a UPS unit
+      - [remove](docs/Commands.md#rpk-ups-label-remove) - Remove a label from a UPS unit
+    - [tag](docs/Commands.md#rpk-ups-tag) - Manage tags on a UPS unit
+      - [add](docs/Commands.md#rpk-ups-tag-add) - Add a tag to a UPS unit
+      - [remove](docs/Commands.md#rpk-ups-tag-remove) - Remove a tag from a UPS unit
+  - [desktops](docs/Commands.md#rpk-desktops) - Manage desktop computers and their components
+    - [add](docs/Commands.md#rpk-desktops-add) - Add a new desktop
+    - [list](docs/Commands.md#rpk-desktops-list) - List all desktops
+    - [get](docs/Commands.md#rpk-desktops-get) - Retrieve a desktop by name
+    - [describe](docs/Commands.md#rpk-desktops-describe) - Show detailed information about a desktop
+    - [set](docs/Commands.md#rpk-desktops-set) - Update properties of a desktop
+    - [del](docs/Commands.md#rpk-desktops-del) - Delete a desktop from the inventory
+    - [rename](docs/Commands.md#rpk-desktops-rename) - Rename a desktop to a new name
+    - [summary](docs/Commands.md#rpk-desktops-summary) - Show a summarized hardware report for all desktops
+    - [tree](docs/Commands.md#rpk-desktops-tree) - Display the dependency tree for a desktop
+    - [cpu](docs/Commands.md#rpk-desktops-cpu) - Manage CPUs attached to desktops
+      - [add](docs/Commands.md#rpk-desktops-cpu-add) - Add a CPU to a desktop
+      - [set](docs/Commands.md#rpk-desktops-cpu-set) - Update a desktop CPU
+      - [del](docs/Commands.md#rpk-desktops-cpu-del) - Remove a CPU from a desktop
+    - [drive](docs/Commands.md#rpk-desktops-drive) - Manage storage drives attached to desktops
+      - [add](docs/Commands.md#rpk-desktops-drive-add) - Add a drive to a desktop
+      - [set](docs/Commands.md#rpk-desktops-drive-set) - Update a desktop drive
+      - [del](docs/Commands.md#rpk-desktops-drive-del) - Remove a drive from a desktop
+    - [gpu](docs/Commands.md#rpk-desktops-gpu) - Manage GPUs attached to desktops
+      - [add](docs/Commands.md#rpk-desktops-gpu-add) - Add a GPU to a desktop
+      - [set](docs/Commands.md#rpk-desktops-gpu-set) - Update a desktop GPU
+      - [del](docs/Commands.md#rpk-desktops-gpu-del) - Remove a GPU from a desktop
+    - [nic](docs/Commands.md#rpk-desktops-nic) - Manage network interface cards (NICs) for desktops
+      - [add](docs/Commands.md#rpk-desktops-nic-add) - Add a NIC to a desktop
+      - [set](docs/Commands.md#rpk-desktops-nic-set) - Update a desktop NIC
+      - [del](docs/Commands.md#rpk-desktops-nic-del) - Remove a NIC from a desktop
+    - [label](docs/Commands.md#rpk-desktops-label) - Manage labels on a desktop
+      - [add](docs/Commands.md#rpk-desktops-label-add) - Add a label to a desktop
+      - [remove](docs/Commands.md#rpk-desktops-label-remove) - Remove a label from a desktop
+    - [tag](docs/Commands.md#rpk-desktops-tag) - Manage tags on a desktop
+      - [add](docs/Commands.md#rpk-desktops-tag-add) - Add a tag to a desktop
+      - [remove](docs/Commands.md#rpk-desktops-tag-remove) - Remove a tag from a desktop
+  - [laptops](docs/Commands.md#rpk-laptops) - Manage Laptop computers and their components
+    - [add](docs/Commands.md#rpk-laptops-add) - Add a new Laptop
+    - [list](docs/Commands.md#rpk-laptops-list) - List all Laptops
+    - [get](docs/Commands.md#rpk-laptops-get) - Retrieve a Laptop by name
+    - [describe](docs/Commands.md#rpk-laptops-describe) - Show detailed information about a Laptop
+    - [set](docs/Commands.md#rpk-laptops-set) - Update properties of a laptop
+    - [del](docs/Commands.md#rpk-laptops-del) - Delete a Laptop from the inventory
+    - [rename](docs/Commands.md#rpk-laptops-rename) - Rename a Laptop to a new name
+    - [summary](docs/Commands.md#rpk-laptops-summary) - Show a summarized hardware report for all Laptops
+    - [tree](docs/Commands.md#rpk-laptops-tree) - Display the dependency tree for a Laptop
+    - [cpu](docs/Commands.md#rpk-laptops-cpu) - Manage CPUs attached to Laptops
+      - [add](docs/Commands.md#rpk-laptops-cpu-add) - Add a CPU to a Laptop
+      - [set](docs/Commands.md#rpk-laptops-cpu-set) - Update a Laptop CPU
+      - [del](docs/Commands.md#rpk-laptops-cpu-del) - Remove a CPU from a Laptop
+    - [drive](docs/Commands.md#rpk-laptops-drive) - Manage storage drives attached to Laptops
+      - [add](docs/Commands.md#rpk-laptops-drive-add) - Add a drive to a Laptop
+      - [set](docs/Commands.md#rpk-laptops-drive-set) - Update a Laptop drive
+      - [del](docs/Commands.md#rpk-laptops-drive-del) - Remove a drive from a Laptop
+    - [gpu](docs/Commands.md#rpk-laptops-gpu) - Manage GPUs attached to Laptops
+      - [add](docs/Commands.md#rpk-laptops-gpu-add) - Add a GPU to a Laptop
+      - [set](docs/Commands.md#rpk-laptops-gpu-set) - Update a Laptop GPU
+      - [del](docs/Commands.md#rpk-laptops-gpu-del) - Remove a GPU from a Laptop
+    - [label](docs/Commands.md#rpk-laptops-label) - Manage labels on a laptop
+      - [add](docs/Commands.md#rpk-laptops-label-add) - Add a label to a laptop
+      - [remove](docs/Commands.md#rpk-laptops-label-remove) - Remove a label from a laptop
+    - [tag](docs/Commands.md#rpk-laptops-tag) - Manage tags on a laptop
+      - [add](docs/Commands.md#rpk-laptops-tag-add) - Add a tag to a laptop
+      - [remove](docs/Commands.md#rpk-laptops-tag-remove) - Remove a tag from a laptop
+  - [services](docs/Commands.md#rpk-services) - Manage services and their configurations
+    - [summary](docs/Commands.md#rpk-services-summary) - Show a summary report for all services
+    - [add](docs/Commands.md#rpk-services-add) - Add a new service
+    - [list](docs/Commands.md#rpk-services-list) - List all services
+    - [get](docs/Commands.md#rpk-services-get) - Retrieve a service by name
+    - [describe](docs/Commands.md#rpk-services-describe) - Show detailed information about a service
+    - [set](docs/Commands.md#rpk-services-set) - Update properties of a service
+    - [del](docs/Commands.md#rpk-services-del) - Delete a service
+    - [rename](docs/Commands.md#rpk-services-rename) - Rename a service to a new name
+    - [subnets](docs/Commands.md#rpk-services-subnets) - List subnets associated with a service, optionally filtered by CIDR
+    - [label](docs/Commands.md#rpk-services-label) - Manage labels on a service
+      - [add](docs/Commands.md#rpk-services-label-add) - Add a label to a service
+      - [remove](docs/Commands.md#rpk-services-label-remove) - Remove a label from a service
+    - [tag](docs/Commands.md#rpk-services-tag) - Manage tags on a service
+      - [add](docs/Commands.md#rpk-services-tag-add) - Add a tag to a service
+      - [remove](docs/Commands.md#rpk-services-tag-remove) - Remove a tag from a service
+  - [ansible](docs/Commands.md#rpk-ansible) - Generate and manage Ansible inventory
+    - [inventory](docs/Commands.md#rpk-ansible-inventory) - Generate an Ansible inventory
+  - [ssh](docs/Commands.md#rpk-ssh) - Generate SSH configuration from infrastructure
+    - [export](docs/Commands.md#rpk-ssh-export) - Generate an SSH config file
+  - [hosts](docs/Commands.md#rpk-hosts) - Generate a hosts file from infrastructure
+    - [export](docs/Commands.md#rpk-hosts-export) - Generate a /etc/hosts compatible file
+  - [graph](docs/Commands.md#rpk-graph) - Render inventory as graph diagrams
+    - [topology](docs/Commands.md#rpk-graph-topology) - Emit a Mermaid flowchart of the physical topology (hardware + connections)
+    - [logical](docs/Commands.md#rpk-graph-logical) - Emit a Mermaid flowchart of services & systems grouped by subnet and host
+  - [tags](docs/Commands.md#rpk-tags) - Discover tags across resources
+    - [list](docs/Commands.md#rpk-tags-list) - List all tags in use with usage counts
+    - [show](docs/Commands.md#rpk-tags-show) - List resources carrying a specific tag
+  - [connections](docs/Commands.md#rpk-connections) - Manage physical or logical port connections
+    - [add](docs/Commands.md#rpk-connections-add) - Create a connection between two ports
+    - [remove](docs/Commands.md#rpk-connections-remove) - Remove the connection from a specific port

Разница между файлами не показана из-за своего большого размера
+ 437 - 119
Shared.Rcl/wwwroot/raw_docs/cli-commands.md


+ 227 - 141
docs/CommandIndex.md

@@ -1,142 +1,228 @@
 
 
-- [rpk](Commands.md#rpk)
-  - [summary](Commands.md#rpk-summary) - Show a summarized report of all resources in the system
-  - [servers](Commands.md#rpk-servers) - Manage servers and their components
-    - [summary](Commands.md#rpk-servers-summary) - Show a summarized hardware report for all servers
-    - [add](Commands.md#rpk-servers-add) - Add a new server to the inventory
-    - [get](Commands.md#rpk-servers-get) - List all servers or retrieve a specific server by name
-    - [describe](Commands.md#rpk-servers-describe) - Display detailed information about a specific server
-    - [set](Commands.md#rpk-servers-set) - Update properties of an existing server
-    - [del](Commands.md#rpk-servers-del) - Delete a server from the inventory
-    - [tree](Commands.md#rpk-servers-tree) - Display the dependency tree of a server
-    - [cpu](Commands.md#rpk-servers-cpu) - Manage CPUs attached to a server
-      - [add](Commands.md#rpk-servers-cpu-add) - Add a CPU to a specific server
-      - [set](Commands.md#rpk-servers-cpu-set) - Update configuration of a server CPU
-      - [del](Commands.md#rpk-servers-cpu-del) - Remove a CPU from a server
-    - [drive](Commands.md#rpk-servers-drive) - Manage drives attached to a server
-      - [add](Commands.md#rpk-servers-drive-add) - Add a storage drive to a server
-      - [set](Commands.md#rpk-servers-drive-set) - Update properties of a server drive
-      - [del](Commands.md#rpk-servers-drive-del) - Remove a drive from a server
-    - [gpu](Commands.md#rpk-servers-gpu) - Manage GPUs attached to a server
-      - [add](Commands.md#rpk-servers-gpu-add) - Add a GPU to a server
-      - [set](Commands.md#rpk-servers-gpu-set) - Update properties of a server GPU
-      - [del](Commands.md#rpk-servers-gpu-del) - Remove a GPU from a server
-    - [nic](Commands.md#rpk-servers-nic) - Manage network interface cards (NICs) for a server
-      - [add](Commands.md#rpk-servers-nic-add) - Add a NIC to a server
-      - [set](Commands.md#rpk-servers-nic-set) - Update properties of a server NIC
-      - [del](Commands.md#rpk-servers-nic-del) - Remove a NIC from a server
-  - [switches](Commands.md#rpk-switches) - Manage network switches
-    - [summary](Commands.md#rpk-switches-summary) - Show a hardware report for all switches
-    - [add](Commands.md#rpk-switches-add) - Add a new network switch to the inventory
-    - [list](Commands.md#rpk-switches-list) - List all switches in the system
-    - [get](Commands.md#rpk-switches-get) - Retrieve details of a specific switch by name
-    - [describe](Commands.md#rpk-switches-describe) - Show detailed information about a switch
-    - [set](Commands.md#rpk-switches-set) - Update properties of a switch
-    - [del](Commands.md#rpk-switches-del) - Delete a switch from the inventory
-    - [port](Commands.md#rpk-switches-port) - Manage ports on a network switch
-      - [add](Commands.md#rpk-switches-port-add) - Add a port to a switch
-      - [set](Commands.md#rpk-switches-port-set) - Update a switch port
-      - [del](Commands.md#rpk-switches-port-del) - Remove a port from a switch
-  - [routers](Commands.md#rpk-routers) - Manage network routers
-    - [summary](Commands.md#rpk-routers-summary) - Show a hardware report for all routers
-    - [add](Commands.md#rpk-routers-add) - Add a new network router to the inventory
-    - [list](Commands.md#rpk-routers-list) - List all routers in the system
-    - [get](Commands.md#rpk-routers-get) - Retrieve details of a specific router by name
-    - [describe](Commands.md#rpk-routers-describe) - Show detailed information about a router
-    - [set](Commands.md#rpk-routers-set) - Update properties of a router
-    - [del](Commands.md#rpk-routers-del) - Delete a router from the inventory
-    - [port](Commands.md#rpk-routers-port) - Manage ports on a router
-      - [add](Commands.md#rpk-routers-port-add) - Add a port to a router
-      - [set](Commands.md#rpk-routers-port-set) - Update a router port
-      - [del](Commands.md#rpk-routers-port-del) - Remove a port from a router
-  - [firewalls](Commands.md#rpk-firewalls) - Manage firewalls
-    - [summary](Commands.md#rpk-firewalls-summary) - Show a hardware report for all firewalls
-    - [add](Commands.md#rpk-firewalls-add) - Add a new firewall to the inventory
-    - [list](Commands.md#rpk-firewalls-list) - List all firewalls in the system
-    - [get](Commands.md#rpk-firewalls-get) - Retrieve details of a specific firewall by name
-    - [describe](Commands.md#rpk-firewalls-describe) - Show detailed information about a firewall
-    - [set](Commands.md#rpk-firewalls-set) - Update properties of a firewall
-    - [del](Commands.md#rpk-firewalls-del) - Delete a firewall from the inventory
-    - [port](Commands.md#rpk-firewalls-port) - Manage ports on a firewall
-      - [add](Commands.md#rpk-firewalls-port-add) - Add a port to a firewall
-      - [set](Commands.md#rpk-firewalls-port-set) - Update a firewall port
-      - [del](Commands.md#rpk-firewalls-port-del) - Remove a port from a firewall
-  - [systems](Commands.md#rpk-systems) - Manage systems and their dependencies
-    - [summary](Commands.md#rpk-systems-summary) - Show a summary report for all systems
-    - [add](Commands.md#rpk-systems-add) - Add a new system to the inventory
-    - [list](Commands.md#rpk-systems-list) - List all systems
-    - [get](Commands.md#rpk-systems-get) - Retrieve a system by name
-    - [describe](Commands.md#rpk-systems-describe) - Display detailed information about a system
-    - [set](Commands.md#rpk-systems-set) - Update properties of a system
-    - [del](Commands.md#rpk-systems-del) - Delete a system from the inventory
-    - [tree](Commands.md#rpk-systems-tree) - Display the dependency tree for a system
-  - [accesspoints](Commands.md#rpk-accesspoints) - Manage access points
-    - [summary](Commands.md#rpk-accesspoints-summary) - Show a hardware report for all access points
-    - [add](Commands.md#rpk-accesspoints-add) - Add a new access point
-    - [list](Commands.md#rpk-accesspoints-list) - List all access points
-    - [get](Commands.md#rpk-accesspoints-get) - Retrieve an access point by name
-    - [describe](Commands.md#rpk-accesspoints-describe) - Show detailed information about an access point
-    - [set](Commands.md#rpk-accesspoints-set) - Update properties of an access point
-    - [del](Commands.md#rpk-accesspoints-del) - Delete an access point
-  - [ups](Commands.md#rpk-ups) - Manage UPS units
-    - [summary](Commands.md#rpk-ups-summary) - Show a hardware report for all UPS units
-    - [add](Commands.md#rpk-ups-add) - Add a new UPS unit
-    - [list](Commands.md#rpk-ups-list) - List all UPS units
-    - [get](Commands.md#rpk-ups-get) - Retrieve a UPS unit by name
-    - [describe](Commands.md#rpk-ups-describe) - Show detailed information about a UPS unit
-    - [set](Commands.md#rpk-ups-set) - Update properties of a UPS unit
-    - [del](Commands.md#rpk-ups-del) - Delete a UPS unit
-  - [desktops](Commands.md#rpk-desktops) - Manage desktop computers and their components
-    - [add](Commands.md#rpk-desktops-add) - Add a new desktop
-    - [list](Commands.md#rpk-desktops-list) - List all desktops
-    - [get](Commands.md#rpk-desktops-get) - Retrieve a desktop by name
-    - [describe](Commands.md#rpk-desktops-describe) - Show detailed information about a desktop
-    - [set](Commands.md#rpk-desktops-set) - Update properties of a desktop
-    - [del](Commands.md#rpk-desktops-del) - Delete a desktop from the inventory
-    - [summary](Commands.md#rpk-desktops-summary) - Show a summarized hardware report for all desktops
-    - [tree](Commands.md#rpk-desktops-tree) - Display the dependency tree for a desktop
-    - [cpu](Commands.md#rpk-desktops-cpu) - Manage CPUs attached to desktops
-      - [add](Commands.md#rpk-desktops-cpu-add) - Add a CPU to a desktop
-      - [set](Commands.md#rpk-desktops-cpu-set) - Update a desktop CPU
-      - [del](Commands.md#rpk-desktops-cpu-del) - Remove a CPU from a desktop
-    - [drive](Commands.md#rpk-desktops-drive) - Manage storage drives attached to desktops
-      - [add](Commands.md#rpk-desktops-drive-add) - Add a drive to a desktop
-      - [set](Commands.md#rpk-desktops-drive-set) - Update a desktop drive
-      - [del](Commands.md#rpk-desktops-drive-del) - Remove a drive from a desktop
-    - [gpu](Commands.md#rpk-desktops-gpu) - Manage GPUs attached to desktops
-      - [add](Commands.md#rpk-desktops-gpu-add) - Add a GPU to a desktop
-      - [set](Commands.md#rpk-desktops-gpu-set) - Update a desktop GPU
-      - [del](Commands.md#rpk-desktops-gpu-del) - Remove a GPU from a desktop
-    - [nic](Commands.md#rpk-desktops-nic) - Manage network interface cards (NICs) for desktops
-      - [add](Commands.md#rpk-desktops-nic-add) - Add a NIC to a desktop
-      - [set](Commands.md#rpk-desktops-nic-set) - Update a desktop NIC
-      - [del](Commands.md#rpk-desktops-nic-del) - Remove a NIC from a desktop
-  - [laptops](Commands.md#rpk-laptops) - Manage Laptop computers and their components
-    - [add](Commands.md#rpk-laptops-add) - Add a new Laptop
-    - [list](Commands.md#rpk-laptops-list) - List all Laptops
-    - [get](Commands.md#rpk-laptops-get) - Retrieve a Laptop by name
-    - [describe](Commands.md#rpk-laptops-describe) - Show detailed information about a Laptop
-    - [del](Commands.md#rpk-laptops-del) - Delete a Laptop from the inventory
-    - [summary](Commands.md#rpk-laptops-summary) - Show a summarized hardware report for all Laptops
-    - [tree](Commands.md#rpk-laptops-tree) - Display the dependency tree for a Laptop
-    - [cpu](Commands.md#rpk-laptops-cpu) - Manage CPUs attached to Laptops
-      - [add](Commands.md#rpk-laptops-cpu-add) - Add a CPU to a Laptop
-      - [set](Commands.md#rpk-laptops-cpu-set) - Update a Laptop CPU
-      - [del](Commands.md#rpk-laptops-cpu-del) - Remove a CPU from a Laptop
-    - [drive](Commands.md#rpk-laptops-drive) - Manage storage drives attached to Laptops
-      - [add](Commands.md#rpk-laptops-drive-add) - Add a drive to a Laptop
-      - [set](Commands.md#rpk-laptops-drive-set) - Update a Laptop drive
-      - [del](Commands.md#rpk-laptops-drive-del) - Remove a drive from a Laptop
-    - [gpu](Commands.md#rpk-laptops-gpu) - Manage GPUs attached to Laptops
-      - [add](Commands.md#rpk-laptops-gpu-add) - Add a GPU to a Laptop
-      - [set](Commands.md#rpk-laptops-gpu-set) - Update a Laptop GPU
-      - [del](Commands.md#rpk-laptops-gpu-del) - Remove a GPU from a Laptop
-  - [services](Commands.md#rpk-services) - Manage services and their configurations
-    - [summary](Commands.md#rpk-services-summary) - Show a summary report for all services
-    - [add](Commands.md#rpk-services-add) - Add a new service
-    - [list](Commands.md#rpk-services-list) - List all services
-    - [get](Commands.md#rpk-services-get) - Retrieve a service by name
-    - [describe](Commands.md#rpk-services-describe) - Show detailed information about a service
-    - [set](Commands.md#rpk-services-set) - Update properties of a service
-    - [del](Commands.md#rpk-services-del) - Delete a service
-    - [subnets](Commands.md#rpk-services-subnets) - List subnets associated with a service, optionally filtered by CIDR
+- [rpk](docs/Commands.md#rpk)
+  - [summary](docs/Commands.md#rpk-summary) - Show a summarized report of all resources in the system
+  - [servers](docs/Commands.md#rpk-servers) - Manage servers and their components
+    - [summary](docs/Commands.md#rpk-servers-summary) - Show a summarized hardware report for all servers
+    - [add](docs/Commands.md#rpk-servers-add) - Add a new server to the inventory
+    - [get](docs/Commands.md#rpk-servers-get) - List all servers or retrieve a specific server by name
+    - [describe](docs/Commands.md#rpk-servers-describe) - Display detailed information about a specific server
+    - [set](docs/Commands.md#rpk-servers-set) - Update properties of an existing server
+    - [del](docs/Commands.md#rpk-servers-del) - Delete a server from the inventory
+    - [rename](docs/Commands.md#rpk-servers-rename) - Rename a server to a new name
+    - [tree](docs/Commands.md#rpk-servers-tree) - Display the dependency tree of a server
+    - [cpu](docs/Commands.md#rpk-servers-cpu) - Manage CPUs attached to a server
+      - [add](docs/Commands.md#rpk-servers-cpu-add) - Add a CPU to a specific server
+      - [set](docs/Commands.md#rpk-servers-cpu-set) - Update configuration of a server CPU
+      - [del](docs/Commands.md#rpk-servers-cpu-del) - Remove a CPU from a server
+    - [drive](docs/Commands.md#rpk-servers-drive) - Manage drives attached to a server
+      - [add](docs/Commands.md#rpk-servers-drive-add) - Add a storage drive to a server
+      - [set](docs/Commands.md#rpk-servers-drive-set) - Update properties of a server drive
+      - [del](docs/Commands.md#rpk-servers-drive-del) - Remove a drive from a server
+    - [gpu](docs/Commands.md#rpk-servers-gpu) - Manage GPUs attached to a server
+      - [add](docs/Commands.md#rpk-servers-gpu-add) - Add a GPU to a server
+      - [set](docs/Commands.md#rpk-servers-gpu-set) - Update properties of a server GPU
+      - [del](docs/Commands.md#rpk-servers-gpu-del) - Remove a GPU from a server
+    - [nic](docs/Commands.md#rpk-servers-nic) - Manage network interface cards (NICs) for a server
+      - [add](docs/Commands.md#rpk-servers-nic-add) - Add a NIC to a server
+      - [set](docs/Commands.md#rpk-servers-nic-set) - Update properties of a server NIC
+      - [del](docs/Commands.md#rpk-servers-nic-del) - Remove a NIC from a server
+    - [label](docs/Commands.md#rpk-servers-label) - Manage labels on a server
+      - [add](docs/Commands.md#rpk-servers-label-add) - Add a label to a server
+      - [remove](docs/Commands.md#rpk-servers-label-remove) - Remove a label from a server
+    - [tag](docs/Commands.md#rpk-servers-tag) - Manage tags on a server
+      - [add](docs/Commands.md#rpk-servers-tag-add) - Add a tag to a server
+      - [remove](docs/Commands.md#rpk-servers-tag-remove) - Remove a tag from a server
+  - [switches](docs/Commands.md#rpk-switches) - Manage network switches
+    - [summary](docs/Commands.md#rpk-switches-summary) - Show a hardware report for all switches
+    - [add](docs/Commands.md#rpk-switches-add) - Add a new network switch to the inventory
+    - [list](docs/Commands.md#rpk-switches-list) - List all switches in the system
+    - [get](docs/Commands.md#rpk-switches-get) - Retrieve details of a specific switch by name
+    - [describe](docs/Commands.md#rpk-switches-describe) - Show detailed information about a switch
+    - [set](docs/Commands.md#rpk-switches-set) - Update properties of a switch
+    - [del](docs/Commands.md#rpk-switches-del) - Delete a switch from the inventory
+    - [rename](docs/Commands.md#rpk-switches-rename) - Rename a switch to a new name
+    - [port](docs/Commands.md#rpk-switches-port) - Manage ports on a network switch
+      - [add](docs/Commands.md#rpk-switches-port-add) - Add a port to a switch
+      - [set](docs/Commands.md#rpk-switches-port-set) - Update a switch port
+      - [del](docs/Commands.md#rpk-switches-port-del) - Remove a port from a switch
+    - [label](docs/Commands.md#rpk-switches-label) - Manage labels on a switch
+      - [add](docs/Commands.md#rpk-switches-label-add) - Add a label to a switch
+      - [remove](docs/Commands.md#rpk-switches-label-remove) - Remove a label from a switch
+    - [tag](docs/Commands.md#rpk-switches-tag) - Manage tags on a switch
+      - [add](docs/Commands.md#rpk-switches-tag-add) - Add a tag to a switch
+      - [remove](docs/Commands.md#rpk-switches-tag-remove) - Remove a tag from a switch
+  - [routers](docs/Commands.md#rpk-routers) - Manage network routers
+    - [summary](docs/Commands.md#rpk-routers-summary) - Show a hardware report for all routers
+    - [add](docs/Commands.md#rpk-routers-add) - Add a new network router to the inventory
+    - [list](docs/Commands.md#rpk-routers-list) - List all routers in the system
+    - [get](docs/Commands.md#rpk-routers-get) - Retrieve details of a specific router by name
+    - [describe](docs/Commands.md#rpk-routers-describe) - Show detailed information about a router
+    - [set](docs/Commands.md#rpk-routers-set) - Update properties of a router
+    - [del](docs/Commands.md#rpk-routers-del) - Delete a router from the inventory
+    - [rename](docs/Commands.md#rpk-routers-rename) - Rename a router to a new name
+    - [port](docs/Commands.md#rpk-routers-port) - Manage ports on a router
+      - [add](docs/Commands.md#rpk-routers-port-add) - Add a port to a router
+      - [set](docs/Commands.md#rpk-routers-port-set) - Update a router port
+      - [del](docs/Commands.md#rpk-routers-port-del) - Remove a port from a router
+    - [label](docs/Commands.md#rpk-routers-label) - Manage labels on a router
+      - [add](docs/Commands.md#rpk-routers-label-add) - Add a label to a router
+      - [remove](docs/Commands.md#rpk-routers-label-remove) - Remove a label from a router
+    - [tag](docs/Commands.md#rpk-routers-tag) - Manage tags on a router
+      - [add](docs/Commands.md#rpk-routers-tag-add) - Add a tag to a router
+      - [remove](docs/Commands.md#rpk-routers-tag-remove) - Remove a tag from a router
+  - [firewalls](docs/Commands.md#rpk-firewalls) - Manage firewalls
+    - [summary](docs/Commands.md#rpk-firewalls-summary) - Show a hardware report for all firewalls
+    - [add](docs/Commands.md#rpk-firewalls-add) - Add a new firewall to the inventory
+    - [list](docs/Commands.md#rpk-firewalls-list) - List all firewalls in the system
+    - [get](docs/Commands.md#rpk-firewalls-get) - Retrieve details of a specific firewall by name
+    - [describe](docs/Commands.md#rpk-firewalls-describe) - Show detailed information about a firewall
+    - [set](docs/Commands.md#rpk-firewalls-set) - Update properties of a firewall
+    - [del](docs/Commands.md#rpk-firewalls-del) - Delete a firewall from the inventory
+    - [rename](docs/Commands.md#rpk-firewalls-rename) - Rename a firewall to a new name
+    - [port](docs/Commands.md#rpk-firewalls-port) - Manage ports on a firewall
+      - [add](docs/Commands.md#rpk-firewalls-port-add) - Add a port to a firewall
+      - [set](docs/Commands.md#rpk-firewalls-port-set) - Update a firewall port
+      - [del](docs/Commands.md#rpk-firewalls-port-del) - Remove a port from a firewall
+    - [label](docs/Commands.md#rpk-firewalls-label) - Manage labels on a firewall
+      - [add](docs/Commands.md#rpk-firewalls-label-add) - Add a label to a firewall
+      - [remove](docs/Commands.md#rpk-firewalls-label-remove) - Remove a label from a firewall
+    - [tag](docs/Commands.md#rpk-firewalls-tag) - Manage tags on a firewall
+      - [add](docs/Commands.md#rpk-firewalls-tag-add) - Add a tag to a firewall
+      - [remove](docs/Commands.md#rpk-firewalls-tag-remove) - Remove a tag from a firewall
+  - [systems](docs/Commands.md#rpk-systems) - Manage systems and their dependencies
+    - [summary](docs/Commands.md#rpk-systems-summary) - Show a summary report for all systems
+    - [add](docs/Commands.md#rpk-systems-add) - Add a new system to the inventory
+    - [list](docs/Commands.md#rpk-systems-list) - List all systems
+    - [get](docs/Commands.md#rpk-systems-get) - Retrieve a system by name
+    - [describe](docs/Commands.md#rpk-systems-describe) - Display detailed information about a system
+    - [set](docs/Commands.md#rpk-systems-set) - Update properties of a system
+    - [del](docs/Commands.md#rpk-systems-del) - Delete a system from the inventory
+    - [rename](docs/Commands.md#rpk-systems-rename) - Rename a system to a new name
+    - [tree](docs/Commands.md#rpk-systems-tree) - Display the dependency tree for a system
+    - [label](docs/Commands.md#rpk-systems-label) - Manage labels on a system
+      - [add](docs/Commands.md#rpk-systems-label-add) - Add a label to a system
+      - [remove](docs/Commands.md#rpk-systems-label-remove) - Remove a label from a system
+    - [tag](docs/Commands.md#rpk-systems-tag) - Manage tags on a system
+      - [add](docs/Commands.md#rpk-systems-tag-add) - Add a tag to a system
+      - [remove](docs/Commands.md#rpk-systems-tag-remove) - Remove a tag from a system
+  - [accesspoints](docs/Commands.md#rpk-accesspoints) - Manage access points
+    - [summary](docs/Commands.md#rpk-accesspoints-summary) - Show a hardware report for all access points
+    - [add](docs/Commands.md#rpk-accesspoints-add) - Add a new access point
+    - [list](docs/Commands.md#rpk-accesspoints-list) - List all access points
+    - [get](docs/Commands.md#rpk-accesspoints-get) - Retrieve an access point by name
+    - [describe](docs/Commands.md#rpk-accesspoints-describe) - Show detailed information about an access point
+    - [set](docs/Commands.md#rpk-accesspoints-set) - Update properties of an access point
+    - [del](docs/Commands.md#rpk-accesspoints-del) - Delete an access point
+    - [rename](docs/Commands.md#rpk-accesspoints-rename) - Rename an access point to a new name
+    - [label](docs/Commands.md#rpk-accesspoints-label) - Manage labels on an access point
+      - [add](docs/Commands.md#rpk-accesspoints-label-add) - Add a label to an access point
+      - [remove](docs/Commands.md#rpk-accesspoints-label-remove) - Remove a label from an access point
+    - [tag](docs/Commands.md#rpk-accesspoints-tag) - Manage tags on an access point
+      - [add](docs/Commands.md#rpk-accesspoints-tag-add) - Add a tag to an access point
+      - [remove](docs/Commands.md#rpk-accesspoints-tag-remove) - Remove a tag from an access point
+  - [ups](docs/Commands.md#rpk-ups) - Manage UPS units
+    - [summary](docs/Commands.md#rpk-ups-summary) - Show a hardware report for all UPS units
+    - [add](docs/Commands.md#rpk-ups-add) - Add a new UPS unit
+    - [list](docs/Commands.md#rpk-ups-list) - List all UPS units
+    - [get](docs/Commands.md#rpk-ups-get) - Retrieve a UPS unit by name
+    - [describe](docs/Commands.md#rpk-ups-describe) - Show detailed information about a UPS unit
+    - [set](docs/Commands.md#rpk-ups-set) - Update properties of a UPS unit
+    - [del](docs/Commands.md#rpk-ups-del) - Delete a UPS unit
+    - [rename](docs/Commands.md#rpk-ups-rename) - Rename a UPS unit to a new name
+    - [label](docs/Commands.md#rpk-ups-label) - Manage labels on a UPS unit
+      - [add](docs/Commands.md#rpk-ups-label-add) - Add a label to a UPS unit
+      - [remove](docs/Commands.md#rpk-ups-label-remove) - Remove a label from a UPS unit
+    - [tag](docs/Commands.md#rpk-ups-tag) - Manage tags on a UPS unit
+      - [add](docs/Commands.md#rpk-ups-tag-add) - Add a tag to a UPS unit
+      - [remove](docs/Commands.md#rpk-ups-tag-remove) - Remove a tag from a UPS unit
+  - [desktops](docs/Commands.md#rpk-desktops) - Manage desktop computers and their components
+    - [add](docs/Commands.md#rpk-desktops-add) - Add a new desktop
+    - [list](docs/Commands.md#rpk-desktops-list) - List all desktops
+    - [get](docs/Commands.md#rpk-desktops-get) - Retrieve a desktop by name
+    - [describe](docs/Commands.md#rpk-desktops-describe) - Show detailed information about a desktop
+    - [set](docs/Commands.md#rpk-desktops-set) - Update properties of a desktop
+    - [del](docs/Commands.md#rpk-desktops-del) - Delete a desktop from the inventory
+    - [rename](docs/Commands.md#rpk-desktops-rename) - Rename a desktop to a new name
+    - [summary](docs/Commands.md#rpk-desktops-summary) - Show a summarized hardware report for all desktops
+    - [tree](docs/Commands.md#rpk-desktops-tree) - Display the dependency tree for a desktop
+    - [cpu](docs/Commands.md#rpk-desktops-cpu) - Manage CPUs attached to desktops
+      - [add](docs/Commands.md#rpk-desktops-cpu-add) - Add a CPU to a desktop
+      - [set](docs/Commands.md#rpk-desktops-cpu-set) - Update a desktop CPU
+      - [del](docs/Commands.md#rpk-desktops-cpu-del) - Remove a CPU from a desktop
+    - [drive](docs/Commands.md#rpk-desktops-drive) - Manage storage drives attached to desktops
+      - [add](docs/Commands.md#rpk-desktops-drive-add) - Add a drive to a desktop
+      - [set](docs/Commands.md#rpk-desktops-drive-set) - Update a desktop drive
+      - [del](docs/Commands.md#rpk-desktops-drive-del) - Remove a drive from a desktop
+    - [gpu](docs/Commands.md#rpk-desktops-gpu) - Manage GPUs attached to desktops
+      - [add](docs/Commands.md#rpk-desktops-gpu-add) - Add a GPU to a desktop
+      - [set](docs/Commands.md#rpk-desktops-gpu-set) - Update a desktop GPU
+      - [del](docs/Commands.md#rpk-desktops-gpu-del) - Remove a GPU from a desktop
+    - [nic](docs/Commands.md#rpk-desktops-nic) - Manage network interface cards (NICs) for desktops
+      - [add](docs/Commands.md#rpk-desktops-nic-add) - Add a NIC to a desktop
+      - [set](docs/Commands.md#rpk-desktops-nic-set) - Update a desktop NIC
+      - [del](docs/Commands.md#rpk-desktops-nic-del) - Remove a NIC from a desktop
+    - [label](docs/Commands.md#rpk-desktops-label) - Manage labels on a desktop
+      - [add](docs/Commands.md#rpk-desktops-label-add) - Add a label to a desktop
+      - [remove](docs/Commands.md#rpk-desktops-label-remove) - Remove a label from a desktop
+    - [tag](docs/Commands.md#rpk-desktops-tag) - Manage tags on a desktop
+      - [add](docs/Commands.md#rpk-desktops-tag-add) - Add a tag to a desktop
+      - [remove](docs/Commands.md#rpk-desktops-tag-remove) - Remove a tag from a desktop
+  - [laptops](docs/Commands.md#rpk-laptops) - Manage Laptop computers and their components
+    - [add](docs/Commands.md#rpk-laptops-add) - Add a new Laptop
+    - [list](docs/Commands.md#rpk-laptops-list) - List all Laptops
+    - [get](docs/Commands.md#rpk-laptops-get) - Retrieve a Laptop by name
+    - [describe](docs/Commands.md#rpk-laptops-describe) - Show detailed information about a Laptop
+    - [set](docs/Commands.md#rpk-laptops-set) - Update properties of a laptop
+    - [del](docs/Commands.md#rpk-laptops-del) - Delete a Laptop from the inventory
+    - [rename](docs/Commands.md#rpk-laptops-rename) - Rename a Laptop to a new name
+    - [summary](docs/Commands.md#rpk-laptops-summary) - Show a summarized hardware report for all Laptops
+    - [tree](docs/Commands.md#rpk-laptops-tree) - Display the dependency tree for a Laptop
+    - [cpu](docs/Commands.md#rpk-laptops-cpu) - Manage CPUs attached to Laptops
+      - [add](docs/Commands.md#rpk-laptops-cpu-add) - Add a CPU to a Laptop
+      - [set](docs/Commands.md#rpk-laptops-cpu-set) - Update a Laptop CPU
+      - [del](docs/Commands.md#rpk-laptops-cpu-del) - Remove a CPU from a Laptop
+    - [drive](docs/Commands.md#rpk-laptops-drive) - Manage storage drives attached to Laptops
+      - [add](docs/Commands.md#rpk-laptops-drive-add) - Add a drive to a Laptop
+      - [set](docs/Commands.md#rpk-laptops-drive-set) - Update a Laptop drive
+      - [del](docs/Commands.md#rpk-laptops-drive-del) - Remove a drive from a Laptop
+    - [gpu](docs/Commands.md#rpk-laptops-gpu) - Manage GPUs attached to Laptops
+      - [add](docs/Commands.md#rpk-laptops-gpu-add) - Add a GPU to a Laptop
+      - [set](docs/Commands.md#rpk-laptops-gpu-set) - Update a Laptop GPU
+      - [del](docs/Commands.md#rpk-laptops-gpu-del) - Remove a GPU from a Laptop
+    - [label](docs/Commands.md#rpk-laptops-label) - Manage labels on a laptop
+      - [add](docs/Commands.md#rpk-laptops-label-add) - Add a label to a laptop
+      - [remove](docs/Commands.md#rpk-laptops-label-remove) - Remove a label from a laptop
+    - [tag](docs/Commands.md#rpk-laptops-tag) - Manage tags on a laptop
+      - [add](docs/Commands.md#rpk-laptops-tag-add) - Add a tag to a laptop
+      - [remove](docs/Commands.md#rpk-laptops-tag-remove) - Remove a tag from a laptop
+  - [services](docs/Commands.md#rpk-services) - Manage services and their configurations
+    - [summary](docs/Commands.md#rpk-services-summary) - Show a summary report for all services
+    - [add](docs/Commands.md#rpk-services-add) - Add a new service
+    - [list](docs/Commands.md#rpk-services-list) - List all services
+    - [get](docs/Commands.md#rpk-services-get) - Retrieve a service by name
+    - [describe](docs/Commands.md#rpk-services-describe) - Show detailed information about a service
+    - [set](docs/Commands.md#rpk-services-set) - Update properties of a service
+    - [del](docs/Commands.md#rpk-services-del) - Delete a service
+    - [rename](docs/Commands.md#rpk-services-rename) - Rename a service to a new name
+    - [subnets](docs/Commands.md#rpk-services-subnets) - List subnets associated with a service, optionally filtered by CIDR
+    - [label](docs/Commands.md#rpk-services-label) - Manage labels on a service
+      - [add](docs/Commands.md#rpk-services-label-add) - Add a label to a service
+      - [remove](docs/Commands.md#rpk-services-label-remove) - Remove a label from a service
+    - [tag](docs/Commands.md#rpk-services-tag) - Manage tags on a service
+      - [add](docs/Commands.md#rpk-services-tag-add) - Add a tag to a service
+      - [remove](docs/Commands.md#rpk-services-tag-remove) - Remove a tag from a service
+  - [ansible](docs/Commands.md#rpk-ansible) - Generate and manage Ansible inventory
+    - [inventory](docs/Commands.md#rpk-ansible-inventory) - Generate an Ansible inventory
+  - [ssh](docs/Commands.md#rpk-ssh) - Generate SSH configuration from infrastructure
+    - [export](docs/Commands.md#rpk-ssh-export) - Generate an SSH config file
+  - [hosts](docs/Commands.md#rpk-hosts) - Generate a hosts file from infrastructure
+    - [export](docs/Commands.md#rpk-hosts-export) - Generate a /etc/hosts compatible file
+  - [graph](docs/Commands.md#rpk-graph) - Render inventory as graph diagrams
+    - [topology](docs/Commands.md#rpk-graph-topology) - Emit a Mermaid flowchart of the physical topology (hardware + connections)
+    - [logical](docs/Commands.md#rpk-graph-logical) - Emit a Mermaid flowchart of services & systems grouped by subnet and host
+  - [tags](docs/Commands.md#rpk-tags) - Discover tags across resources
+    - [list](docs/Commands.md#rpk-tags-list) - List all tags in use with usage counts
+    - [show](docs/Commands.md#rpk-tags-show) - List resources carrying a specific tag
+  - [connections](docs/Commands.md#rpk-connections) - Manage physical or logical port connections
+    - [add](docs/Commands.md#rpk-connections-add) - Create a connection between two ports
+    - [remove](docs/Commands.md#rpk-connections-remove) - Remove the connection from a specific port

Разница между файлами не показана из-за своего большого размера
+ 721 - 126
docs/Commands.md


+ 34 - 3
vhs/capture.js

@@ -3,6 +3,8 @@ const fs = require('fs');
 
 
 const URLS = [
 const URLS = [
   "http://localhost:5287",
   "http://localhost:5287",
+  "http://localhost:5287/visualise/topology",
+  "http://localhost:5287/visualise/logical",
   "http://localhost:5287/cli",
   "http://localhost:5287/cli",
   "http://localhost:5287/yaml",
   "http://localhost:5287/yaml",
   "http://localhost:5287/hardware/tree",
   "http://localhost:5287/hardware/tree",
@@ -25,17 +27,46 @@ const URLS = [
     const filename = url.replace(/^https?:\/\//, '').replace(/\//g, '_') + ".png";
     const filename = url.replace(/^https?:\/\//, '').replace(/\//g, '_') + ".png";
     console.log("Capturing", url);
     console.log("Capturing", url);
 
 
+    // Diagram routes are taller than the standard viewport; stretch it so
+    // the GraphView's `h-full` container shows the whole diagram in-frame.
+    const isVisualise = url.includes("/visualise/");
+    if (isVisualise) {
+      await page.setViewportSize({ width: 2400, height: 5000 });
+    } else {
+      await page.setViewportSize({ width: 1366, height: 768 });
+    }
+
     await page.goto(url, {
     await page.goto(url, {
       waitUntil: "networkidle",
       waitUntil: "networkidle",
       timeout: 30000
       timeout: 30000
     });
     });
 
 
-    // extra settle time for SPA hydration
-    await page.waitForTimeout(2000);
+    // extra settle time for SPA hydration; Mermaid renders async so the
+    // visualise routes need a longer window before screenshotting.
+    await page.waitForTimeout(isVisualise ? 5000 : 2000);
+
+    // The visualise route wraps the diagram in an overflow:auto container
+    // bounded to 75vh — fine for the live UI, but it clips taller diagrams
+    // in screenshots. For the capture only, expand any ancestor of the SVG
+    // to its natural height and disable overflow clipping.
+    if (isVisualise) {
+      await page.evaluate(() => {
+        const svg = document.querySelector("[id^='visualise-graph-host'] svg, #visualise-graph-host svg");
+        if (!svg) return;
+        let el = svg.parentElement;
+        while (el && el !== document.body) {
+          el.style.height = "auto";
+          el.style.maxHeight = "none";
+          el.style.overflow = "visible";
+          el = el.parentElement;
+        }
+      });
+      await page.waitForTimeout(500);
+    }
 
 
     await page.screenshot({
     await page.screenshot({
       path: `webui_screenshots/${filename}`,
       path: `webui_screenshots/${filename}`,
-      fullPage: false
+      fullPage: isVisualise
     });
     });
   }
   }
 
 

BIN
vhs/rpk-demo.gif


+ 24 - 0
vhs/rpk.tape

@@ -53,3 +53,27 @@ Sleep 0.5
 Type "rpk services subnets"
 Type "rpk services subnets"
 Enter
 Enter
 Sleep 2
 Sleep 2
+
+Type "clear"
+Enter
+Sleep 0.5
+
+# New in v2.0.0 — tags
+Type "rpk servers tag add proxmox-node01 prod"
+Enter
+Sleep 1
+Type "rpk servers tag add proxmox-node02 prod"
+Enter
+Sleep 1
+Type "rpk tags show prod"
+Enter
+Sleep 3
+
+Type "clear"
+Enter
+Sleep 0.5
+
+# New in v2.0.0 — graph diagrams (preview the Mermaid source)
+Type "rpk graph topology | head -15"
+Enter
+Sleep 3

+ 1004 - 509
vhs/sample_config/config.yaml

@@ -1,513 +1,1008 @@
+version: 3
 resources:
 resources:
-  # ------------------------
-  # Servers
-  # ------------------------
-  - kind: Server
-    name: proxmox-node01
-    cpus:
-      - model: AMD EPYC 7302P
-        cores: 16
-        threads: 32
-    ram:
-      size: 128gb
-      mts: 3200
-    drives:
-      - type: ssd
-        size: 1tb
-      - type: ssd
-        size: 1tb
-    nics:
-      - type: rj45
-        speed: 1gb
-        ports: 2
-      - type: sfp+
-        speed: 10gb
-        ports: 2
-    ipmi: true
-
-  - kind: Server
-    name: proxmox-node02
-    cpus:
-      - model: Intel Xeon Silver 4210
-        cores: 10
-        threads: 20
-    ram:
-      size: 96gb
-      mts: 2666
-    drives:
-      - type: ssd
-        size: 1tb
-      - type: hdd
-        size: 4tb
-    nics:
-      - type: rj45
-        speed: 1gb
-        ports: 2
-      - type: sfp+
-        speed: 10gb
-        ports: 1
-    ipmi: true
-
-  - kind: Server
-    name: truenas-storage
-    cpus:
-      - model: Intel Xeon E-2236
-        cores: 6
-        threads: 12
-    ram:
-      size: 64gb
-      mts: 2666
-    drives:
-      - type: hdd
-        size: 8tb
-      - type: hdd
-        size: 8tb
-      - type: hdd
-        size: 8tb
-      - type: hdd
-        size: 8tb
-    nics:
-      - type: rj45
-        speed: 1gb
-        ports: 1
-      - type: sfp+
-        speed: 10gb
-        ports: 1
-    ipmi: true
-
-  # ------------------------
-  # Network
-  # ------------------------
-  - kind: Firewall
-    name: pfsense-fw
-    model: Netgate-6100
-    ports:
-      - type: rj45
-        speed: 1gb
-        count: 4
-      - type: sfp+
-        speed: 10gb
-        count: 2
-    managed: true
-    poe: false
-
-  - kind: Router
-    name: core-router
-    model: Ubiquiti-ER-4
-    ports:
-      - type: rj45
-        speed: 1gb
-        count: 4
-      - type: sfp
-        speed: 10gb
-        count: 1
-    managed: true
-    poe: false
-
-  - kind: Switch
-    name: core-switch
-    model: UniFi-USW-Enterprise-24
-    ports:
-      - type: rj45
-        speed: 1gb
-        count: 12
-      - type: rj45
-        speed: 2.5gb
-        count: 8
-      - type: sfp+
-        speed: 10gb
-        count: 4
-    managed: true
-    poe: true
-
-  - kind: Switch
-    name: access-switch
-    model: UniFi-USW-16-PoE
-    ports:
-      - type: rj45
-        speed: 1gb
-        count: 16
-      - type: sfp
-        speed: 1gb
-        count: 2
-    managed: true
-    poe: true
-
-  - kind: AccessPoint
-    name: lounge-ap
-    model: UniFi-U6-Pro
-    speed: 2.5gb
-
-  # ------------------------
-  # Power
-  # ------------------------
-  - kind: Ups
-    name: rack-ups
-    model: APC-SmartUPS-2200
-    va: 2200
-
-  # ------------------------
-  # Desktops
-  # ------------------------
-  - kind: Desktop
-    name: workstation-linux
-    cpus:
-      - model: AMD Ryzen 9 5900X
-        cores: 12
-        threads: 24
-    ram:
-      size: 64gb
-      mts: 3600
-    drives:
-      - type: ssd
-        size: 1tb
-      - type: ssd
-        size: 2tb
-    nics:
-      - type: rj45
-        speed: 1gb
-        ports: 1
-    gpus:
-      - model: NVIDIA RTX 3080
-        vram: 10gb
-
-  - kind: Desktop
-    name: gaming-pc
-    cpus:
-      - model: Intel Core i7-12700K
-        cores: 12
-        threads: 20
-    ram:
-      size: 32gb
-      mts: 3200
-    drives:
-      - type: ssd
-        size: 1tb
-    nics:
-      - type: rj45
-        speed: 1gb
-        ports: 1
-    gpus:
-      - model: NVIDIA RTX 3070
-        vram: 8gb
-
-  # ------------------------
-  # Laptop
-  # ------------------------
-  - kind: Laptop
-    name: dev-laptop
-    cpus:
-      - model: Intel Core i7-1260P
-        cores: 12
-        threads: 16
-    ram:
-      size: 32gb
-      mts: 5200
-    drives:
-      - type: ssd
-        size: 1tb
-  # --------------------------------------------------
-  # Smart Home
-  # --------------------------------------------------
-  - kind: Service
-    name: home-assistant
-    network:
-      ip: 192.168.0.10
-      port: 8123
-      protocol: TCP
-      url: http://homeassistant.lan:8123
-    runsOn: vm-home-assistant
-
-  # --------------------------------------------------
-  # Media & Photos
-  # --------------------------------------------------
-  - kind: Service
-    name: plex
-    network:
-      ip: 192.168.0.20
-      port: 32400
-      protocol: TCP
-      url: http://plex.lan:32400
-    runsOn: vm-media-server
-
-  - kind: Service
-    name: jellyfin
-    network:
-      ip: 192.168.0.21
-      port: 8096
-      protocol: TCP
-      url: http://jellyfin.lan:8096
-    runsOn: vm-media-server
-
-  - kind: Service
-    name: immich
-    network:
-      ip: 192.168.0.22
-      port: 8080
-      protocol: TCP
-      url: http://immich.lan:8080
-    runsOn: vm-media-server
-
-  # --------------------------------------------------
-  # Storage & Backup
-  # --------------------------------------------------
-  - kind: Service
-    name: truenas-webui
-    network:
-      ip: 192.168.0.30
-      port: 443
-      protocol: TCP
-      url: https://truenas.lan
-    runsOn: truenas-core-os
-
-  - kind: Service
-    name: minio
-    network:
-      ip: 192.168.0.31
-      port: 9000
-      protocol: TCP
-      url: http://minio.lan:9000
-    runsOn: vm-media-server
-
-  # --------------------------------------------------
-  # Monitoring & Ops
-  # --------------------------------------------------
-  - kind: Service
-    name: prometheus
-    network:
-      ip: 192.168.0.40
-      port: 9090
-      protocol: TCP
-      url: http://prometheus.lan:9090
-    runsOn: vm-monitoring
-
-  - kind: Service
-    name: grafana
-    network:
-      ip: 192.168.0.41
-      port: 3000
-      protocol: TCP
-      url: http://grafana.lan:3000
-    runsOn: vm-monitoring
-
-  - kind: Service
-    name: alertmanager
-    network:
-      ip: 192.168.0.42
-      port: 9093
-      protocol: TCP
-      url: http://alertmanager.lan:9093
-    runsOn: vm-monitoring
-
-  # --------------------------------------------------
-  # Dev & Internal Tools
-  # --------------------------------------------------
-  - kind: Service
-    name: gitea
-    network:
-      ip: 192.168.0.50
-      port: 3001
-      protocol: TCP
-      url: http://git.lan:3001
-    runsOn: vm-monitoring
-
-  - kind: Service
-    name: docker-registry
-    network:
-      ip: 192.168.0.51
-      port: 5000
-      protocol: TCP
-      url: http://registry.lan:5000
-    runsOn: vm-monitoring
-
-  - kind: Service
-    name: portainer
-    network:
-      ip: 192.168.0.52
-      port: 9000
-      protocol: TCP
-      url: http://portainer.lan:9000
-    runsOn: vm-monitoring
-
-  # --------------------------------------------------
-  # Network Services
-  # --------------------------------------------------
-  - kind: Service
-    name: pihole
-    network:
-      ip: 192.168.0.53
-      port: 80
-      protocol: TCP
-      url: http://pihole.lan
-    runsOn: vm-monitoring
-
-  - kind: Service
-    name: firewall-webui
-    network:
-      ip: 192.168.0.1
-      port: 443
-      protocol: TCP
-      url: https://firewall.lan
-    runsOn: firewall-os
-
-  - kind: Service
-    name: router-webui
-    network:
-      ip: 192.168.0.254
-      port: 443
-      protocol: TCP
-      url: https://router.lan
-    runsOn: router-os
-  # --------------------------------------------------
-  # Hypervisors (Bare Metal)
-  # --------------------------------------------------
-  - kind: System
-    type: Hypervisor
-    name: proxmox-cluster-node01
-    os: proxmox
+# ============================================================================
+# Hardware
+# ============================================================================
+- kind: Server
+  ram:
+    size: 128
+    mts: 3200
+  ipmi: true
+  cpus:
+  - model: AMD EPYC 7302P
     cores: 16
     cores: 16
-    ram: 128gb
-    drives:
-      - size: 1tb
-      - size: 1tb
-    runsOn: proxmox-node01
-
-  - kind: System
-    type: Hypervisor
-    name: proxmox-cluster-node02
-    os: proxmox
+    threads: 32
+  drives:
+  - type: ssd
+    size: 1024
+  - type: ssd
+    size: 1024
+  ports:
+  - type: rj45
+    speed: 1
+    count: 2
+  - type: sfp+
+    speed: 10
+    count: 2
+  name: proxmox-node01
+- kind: Server
+  ram:
+    size: 96
+    mts: 2666
+  ipmi: true
+  cpus:
+  - model: Intel Xeon Silver 4210
     cores: 10
     cores: 10
-    ram: 96gb
-    drives:
-      - size: 1tb
-      - size: 4tb
-    runsOn: proxmox-node02
-
-  # --------------------------------------------------
-  # Storage OS (Bare Metal)
-  # --------------------------------------------------
-  - kind: System
-    type: Baremetal
-    name: truenas-core-os
-    os: truenas
+    threads: 20
+  drives:
+  - type: ssd
+    size: 1024
+  - type: hdd
+    size: 4096
+  ports:
+  - type: rj45
+    speed: 1
+    count: 2
+  - type: sfp+
+    speed: 10
+    count: 1
+  name: proxmox-node02
+- kind: Server
+  ram:
+    size: 64
+    mts: 2666
+  ipmi: true
+  cpus:
+  - model: Intel Xeon E-2236
     cores: 6
     cores: 6
-    ram: 64gb
-    drives:
-      - size: 8tb
-      - size: 8tb
-      - size: 8tb
-      - size: 8tb
-    runsOn: truenas-storage
-
-  # --------------------------------------------------
-  # IPMI / BMC Management
-  # --------------------------------------------------
-  - kind: System
-    type: Baremetal
-    name: ipmi-proxmox-node01
-    os: idrac
-    cores: 1
-    ram: 1gb
-    runsOn: proxmox-node01
-
-  - kind: System
-    type: Baremetal
-    name: ipmi-proxmox-node02
-    os: ipmi
-    cores: 1
-    ram: 1gb
-    runsOn: proxmox-node02
-
-  - kind: System
-    type: Baremetal
-    name: ipmi-truenas-storage
-    os: ipmi
-    cores: 1
-    ram: 1gb
-    runsOn: truenas-storage
-
-  # --------------------------------------------------
-  # Core Network Systems
-  # --------------------------------------------------
-  - kind: System
-    type: Baremetal
-    name: firewall-os
-    os: pfsense
-    cores: 4
-    ram: 8gb
-    drives:
-      - size: 32gb
-    runsOn: pfsense-fw
-
-  - kind: System
-    type: Baremetal
-    name: router-os
-    os: edgeos
-    cores: 4
-    ram: 4gb
-    drives:
-      - size: 4gb
-    runsOn: core-router
-
-  - kind: System
-    type: Baremetal
-    name: unifi-core-switch-os
-    os: unifi-os
-    cores: 2
-    ram: 2gb
-    drives:
-      - size: 8gb
-    runsOn: core-switch
-
-  - kind: System
-    type: Baremetal
-    name: unifi-access-switch-os
-    os: unifi-os
-    cores: 2
-    ram: 2gb
-    drives:
-      - size: 8gb
-    runsOn: access-switch
-
-  - kind: System
-    type: Baremetal
-    name: unifi-lounge-ap-os
-    os: unifi-firmware
-    cores: 2
-    ram: 1gb
-    drives:
-      - size: 4gb
-    runsOn: lounge-ap
-
-  # --------------------------------------------------
-  # Virtual Machines
-  # --------------------------------------------------
-  - kind: System
-    type: VM
-    name: vm-home-assistant
-    os: hassos
-    cores: 2
-    ram: 4gb
-    drives:
-      - size: 64gb
-    runsOn: proxmox-node01
-
-  - kind: System
-    type: VM
-    name: vm-media-server
-    os: ubuntu-22.04
-    cores: 4
-    ram: 8gb
-    drives:
-      - size: 500gb
-    runsOn: proxmox-node02
-
-  - kind: System
-    type: VM
-    name: vm-monitoring
-    os: debian-12
-    cores: 2
-    ram: 4gb
-    drives:
-      - size: 64gb
-    runsOn: proxmox-node01
+    threads: 12
+  drives:
+  - type: hdd
+    size: 8192
+  - type: hdd
+    size: 8192
+  - type: hdd
+    size: 8192
+  - type: hdd
+    size: 8192
+  ports:
+  - type: rj45
+    speed: 1
+    count: 1
+  - type: sfp+
+    speed: 10
+    count: 1
+  name: truenas-storage
+- kind: Server
+  ram:
+    size: 32
+    mts: 3200
+  ipmi: false
+  cpus:
+  - model: Intel Core i5-1240P
+    cores: 12
+    threads: 16
+  drives:
+  - type: ssd
+    size: 1024
+  ports:
+  - type: rj45
+    speed: 2.5
+    count: 1
+  name: docker-host
+- kind: Firewall
+  model: Netgate-6100
+  managed: true
+  poe: false
+  ports:
+  - type: rj45
+    speed: 1
+    count: 4
+  - type: sfp+
+    speed: 10
+    count: 2
+  name: pfsense-fw
+- kind: Router
+  model: Ubiquiti-ER-4
+  managed: true
+  poe: false
+  ports:
+  - type: rj45
+    speed: 1
+    count: 4
+  - type: sfp+
+    speed: 10
+    count: 1
+  name: core-router
+- kind: Switch
+  model: UniFi-USW-Enterprise-24
+  managed: true
+  poe: true
+  ports:
+  - type: rj45
+    speed: 1
+    count: 12
+  - type: rj45
+    speed: 2.5
+    count: 8
+  - type: sfp+
+    speed: 10
+    count: 4
+  name: core-switch
+- kind: Switch
+  model: UniFi-USW-16-PoE
+  managed: true
+  poe: true
+  ports:
+  - type: rj45
+    speed: 1
+    count: 16
+  - type: sfp
+    speed: 1
+    count: 2
+  name: access-switch
+- kind: AccessPoint
+  model: UniFi-U6-Pro
+  speed: 2.5
+  name: lounge-ap
+- kind: AccessPoint
+  model: UniFi-U6-Lite
+  speed: 1
+  name: basement-ap
+- kind: Ups
+  model: APC-SmartUPS-2200
+  va: 2200
+  name: rack-ups
+- kind: Desktop
+  ram:
+    size: 64
+    mts: 3600
+  cpus:
+  - model: AMD Ryzen 9 5900X
+    cores: 12
+    threads: 24
+  drives:
+  - type: ssd
+    size: 1024
+  - type: ssd
+    size: 2048
+  gpus:
+  - model: NVIDIA RTX 3080
+    vram: 10
+  ports:
+  - type: rj45
+    speed: 1
+    count: 1
+  name: workstation-linux
+- kind: Desktop
+  ram:
+    size: 32
+    mts: 3200
+  cpus:
+  - model: Intel Core i7-12700K
+    cores: 12
+    threads: 20
+  drives:
+  - type: ssd
+    size: 1024
+  gpus:
+  - model: NVIDIA RTX 3070
+    vram: 8
+  ports:
+  - type: rj45
+    speed: 1
+    count: 1
+  name: gaming-pc
+- kind: Laptop
+  ram:
+    size: 32
+    mts: 5200
+  cpus:
+  - model: Intel Core i7-1260P
+    cores: 12
+    threads: 16
+  drives:
+  - type: ssd
+    size: 1024
+  name: dev-laptop
+
+# ============================================================================
+# Systems
+# ============================================================================
+# Hypervisors / baremetal hosts
+- kind: System
+  type: Hypervisor
+  os: proxmox
+  cores: 16
+  ram: 128
+  drives:
+  - size: 1024
+  - size: 1024
+  ip: 192.168.1.10
+  name: proxmox-cluster-node01
+  runsOn:
+  - proxmox-node01
+- kind: System
+  type: Hypervisor
+  os: proxmox
+  cores: 10
+  ram: 96
+  drives:
+  - size: 1024
+  - size: 4096
+  ip: 192.168.1.11
+  name: proxmox-cluster-node02
+  runsOn:
+  - proxmox-node02
+- kind: System
+  type: Baremetal
+  os: truenas-scale
+  cores: 6
+  ram: 64
+  drives:
+  - size: 8192
+  - size: 8192
+  - size: 8192
+  - size: 8192
+  ip: 192.168.1.20
+  name: truenas-core-os
+  runsOn:
+  - truenas-storage
+- kind: System
+  type: Baremetal
+  os: debian-12
+  cores: 12
+  ram: 32
+  drives:
+  - size: 1024
+  ip: 192.168.1.30
+  name: docker-host-os
+  runsOn:
+  - docker-host
+
+# IPMI / BMC management
+- kind: System
+  type: Baremetal
+  os: idrac
+  cores: 1
+  ram: 1
+  ip: 10.0.0.30
+  name: ipmi-proxmox-node01
+  runsOn:
+  - proxmox-node01
+- kind: System
+  type: Baremetal
+  os: ipmi
+  cores: 1
+  ram: 1
+  ip: 10.0.0.31
+  name: ipmi-proxmox-node02
+  runsOn:
+  - proxmox-node02
+- kind: System
+  type: Baremetal
+  os: ipmi
+  cores: 1
+  ram: 1
+  ip: 10.0.0.32
+  name: ipmi-truenas-storage
+  runsOn:
+  - truenas-storage
+
+# Network appliances
+- kind: System
+  type: Baremetal
+  os: pfsense
+  cores: 4
+  ram: 8
+  drives:
+  - size: 32
+  ip: 10.0.0.1
+  name: firewall-os
+  runsOn:
+  - pfsense-fw
+- kind: System
+  type: Baremetal
+  os: edgeos
+  cores: 4
+  ram: 4
+  drives:
+  - size: 4
+  ip: 10.0.0.2
+  name: router-os
+  runsOn:
+  - core-router
+- kind: System
+  type: Baremetal
+  os: unifi-os
+  cores: 2
+  ram: 2
+  drives:
+  - size: 8
+  ip: 10.0.0.10
+  name: unifi-core-switch-os
+  runsOn:
+  - core-switch
+- kind: System
+  type: Baremetal
+  os: unifi-os
+  cores: 2
+  ram: 2
+  drives:
+  - size: 8
+  ip: 10.0.0.11
+  name: unifi-access-switch-os
+  runsOn:
+  - access-switch
+- kind: System
+  type: Baremetal
+  os: unifi-firmware
+  cores: 2
+  ram: 1
+  drives:
+  - size: 4
+  ip: 10.0.0.20
+  name: unifi-lounge-ap-os
+  runsOn:
+  - lounge-ap
+- kind: System
+  type: Baremetal
+  os: unifi-firmware
+  cores: 2
+  ram: 1
+  drives:
+  - size: 4
+  ip: 10.0.0.21
+  name: unifi-basement-ap-os
+  runsOn:
+  - basement-ap
+
+# Virtual machines
+- kind: System
+  type: VM
+  os: hassos
+  cores: 2
+  ram: 4
+  drives:
+  - size: 64
+  ip: 192.168.20.10
+  name: vm-home-assistant
+  runsOn:
+  - proxmox-node01
+- kind: System
+  type: VM
+  os: ubuntu-22.04
+  cores: 4
+  ram: 8
+  drives:
+  - size: 500
+  ip: 192.168.10.20
+  name: vm-media-server
+  runsOn:
+  - proxmox-node02
+- kind: System
+  type: VM
+  os: debian-12
+  cores: 2
+  ram: 4
+  drives:
+  - size: 64
+  ip: 192.168.10.30
+  name: vm-monitoring
+  runsOn:
+  - proxmox-node01
+- kind: System
+  type: VM
+  os: debian-12
+  cores: 4
+  ram: 8
+  drives:
+  - size: 128
+  ip: 192.168.10.40
+  name: vm-k3s-master
+  runsOn:
+  - proxmox-node01
+- kind: System
+  type: VM
+  os: debian-12
+  cores: 4
+  ram: 8
+  drives:
+  - size: 128
+  ip: 192.168.10.41
+  name: vm-k3s-worker-01
+  runsOn:
+  - proxmox-node02
+- kind: System
+  type: VM
+  os: debian-12
+  cores: 4
+  ram: 8
+  drives:
+  - size: 128
+  ip: 192.168.10.42
+  name: vm-k3s-worker-02
+  runsOn:
+  - proxmox-node02
+
+# LXC containers (lightweight service hosts)
+- kind: System
+  type: LXC
+  os: debian-12
+  cores: 2
+  ram: 4
+  drives:
+  - size: 32
+  ip: 192.168.10.50
+  name: lxc-arr
+  runsOn:
+  - proxmox-node02
+- kind: System
+  type: LXC
+  os: debian-12
+  cores: 2
+  ram: 4
+  drives:
+  - size: 32
+  ip: 192.168.10.51
+  name: lxc-downloads
+  runsOn:
+  - proxmox-node02
+- kind: System
+  type: LXC
+  os: debian-12
+  cores: 2
+  ram: 2
+  drives:
+  - size: 16
+  ip: 192.168.10.60
+  name: lxc-network
+  runsOn:
+  - proxmox-node01
+- kind: System
+  type: LXC
+  os: debian-12
+  cores: 2
+  ram: 2
+  drives:
+  - size: 16
+  ip: 192.168.10.61
+  name: lxc-auth
+  runsOn:
+  - proxmox-node01
+- kind: System
+  type: LXC
+  os: debian-12
+  cores: 2
+  ram: 4
+  drives:
+  - size: 64
+  ip: 192.168.10.62
+  name: lxc-files
+  runsOn:
+  - proxmox-node02
+- kind: System
+  type: LXC
+  os: debian-12
+  cores: 1
+  ram: 2
+  drives:
+  - size: 16
+  ip: 192.168.10.63
+  name: lxc-dashboard
+  runsOn:
+  - proxmox-node01
+
+# ============================================================================
+# Services
+# ============================================================================
+# --- Smart home (IoT VLAN) ---
+- kind: Service
+  network:
+    ip: 192.168.20.10
+    port: 8123
+    protocol: TCP
+    url: http://homeassistant.lan:8123
+  name: home-assistant
+  runsOn:
+  - vm-home-assistant
+- kind: Service
+  network:
+    ip: 192.168.20.10
+    port: 1883
+    protocol: TCP
+    url: mqtt://homeassistant.lan:1883
+  name: mosquitto
+  runsOn:
+  - vm-home-assistant
+- kind: Service
+  network:
+    ip: 192.168.20.10
+    port: 8080
+    protocol: TCP
+    url: http://homeassistant.lan:8080
+  name: zigbee2mqtt
+  runsOn:
+  - vm-home-assistant
+
+# --- Media stack ---
+- kind: Service
+  network:
+    ip: 192.168.10.20
+    port: 32400
+    protocol: TCP
+    url: http://plex.lan:32400
+  name: plex
+  runsOn:
+  - vm-media-server
+- kind: Service
+  network:
+    ip: 192.168.10.20
+    port: 8096
+    protocol: TCP
+    url: http://jellyfin.lan:8096
+  name: jellyfin
+  runsOn:
+  - vm-media-server
+- kind: Service
+  network:
+    ip: 192.168.10.20
+    port: 8083
+    protocol: TCP
+    url: http://audiobookshelf.lan:8083
+  name: audiobookshelf
+  runsOn:
+  - vm-media-server
+- kind: Service
+  network:
+    ip: 192.168.10.20
+    port: 4533
+    protocol: TCP
+    url: http://navidrome.lan:4533
+  name: navidrome
+  runsOn:
+  - vm-media-server
+- kind: Service
+  network:
+    ip: 192.168.10.20
+    port: 2283
+    protocol: TCP
+    url: https://immich.lan
+  name: immich
+  runsOn:
+  - vm-media-server
+- kind: Service
+  network:
+    ip: 192.168.10.20
+    port: 2342
+    protocol: TCP
+    url: http://photoprism.lan:2342
+  name: photoprism
+  runsOn:
+  - vm-media-server
+
+# --- *arr stack & downloads ---
+- kind: Service
+  network:
+    ip: 192.168.10.50
+    port: 8989
+    protocol: TCP
+    url: http://sonarr.lan:8989
+  name: sonarr
+  runsOn:
+  - lxc-arr
+- kind: Service
+  network:
+    ip: 192.168.10.50
+    port: 7878
+    protocol: TCP
+    url: http://radarr.lan:7878
+  name: radarr
+  runsOn:
+  - lxc-arr
+- kind: Service
+  network:
+    ip: 192.168.10.50
+    port: 8686
+    protocol: TCP
+    url: http://lidarr.lan:8686
+  name: lidarr
+  runsOn:
+  - lxc-arr
+- kind: Service
+  network:
+    ip: 192.168.10.50
+    port: 6767
+    protocol: TCP
+    url: http://bazarr.lan:6767
+  name: bazarr
+  runsOn:
+  - lxc-arr
+- kind: Service
+  network:
+    ip: 192.168.10.50
+    port: 9696
+    protocol: TCP
+    url: http://prowlarr.lan:9696
+  name: prowlarr
+  runsOn:
+  - lxc-arr
+- kind: Service
+  network:
+    ip: 192.168.10.50
+    port: 5055
+    protocol: TCP
+    url: http://overseerr.lan:5055
+  name: overseerr
+  runsOn:
+  - lxc-arr
+- kind: Service
+  network:
+    ip: 192.168.10.51
+    port: 8080
+    protocol: TCP
+    url: http://qbittorrent.lan:8080
+  name: qbittorrent
+  runsOn:
+  - lxc-downloads
+- kind: Service
+  network:
+    ip: 192.168.10.51
+    port: 8081
+    protocol: TCP
+    url: http://sabnzbd.lan:8081
+  name: sabnzbd
+  runsOn:
+  - lxc-downloads
+
+# --- Network services ---
+- kind: Service
+  network:
+    ip: 192.168.10.60
+    port: 80
+    protocol: TCP
+    url: http://adguard.lan
+  name: adguard-home
+  runsOn:
+  - lxc-network
+- kind: Service
+  network:
+    ip: 192.168.10.60
+    port: 5335
+    protocol: TCP
+    url: udp://unbound.lan:5335
+  name: unbound
+  runsOn:
+  - lxc-network
+- kind: Service
+  network:
+    ip: 192.168.10.60
+    port: 81
+    protocol: TCP
+    url: http://npm.lan:81
+  name: nginx-proxy-manager
+  runsOn:
+  - lxc-network
+- kind: Service
+  network:
+    ip: 192.168.10.60
+    port: 51820
+    protocol: UDP
+    url: wg://wireguard.lan:51820
+  name: wireguard
+  runsOn:
+  - lxc-network
+
+# --- Auth & secrets ---
+- kind: Service
+  network:
+    ip: 192.168.10.61
+    port: 9000
+    protocol: TCP
+    url: https://auth.lan
+  name: authentik
+  runsOn:
+  - lxc-auth
+- kind: Service
+  network:
+    ip: 192.168.10.61
+    port: 8000
+    protocol: TCP
+    url: https://vault.lan
+  name: vaultwarden
+  runsOn:
+  - lxc-auth
+
+# --- Files & productivity ---
+- kind: Service
+  network:
+    ip: 192.168.10.62
+    port: 443
+    protocol: TCP
+    url: https://nextcloud.lan
+  name: nextcloud
+  runsOn:
+  - lxc-files
+- kind: Service
+  network:
+    ip: 192.168.10.62
+    port: 8384
+    protocol: TCP
+    url: http://syncthing.lan:8384
+  name: syncthing
+  runsOn:
+  - lxc-files
+- kind: Service
+  network:
+    ip: 192.168.10.62
+    port: 8000
+    protocol: TCP
+    url: http://paperless.lan:8000
+  name: paperless-ngx
+  runsOn:
+  - lxc-files
+
+# --- Monitoring & ops ---
+- kind: Service
+  network:
+    ip: 192.168.10.30
+    port: 9090
+    protocol: TCP
+    url: http://prometheus.lan:9090
+  name: prometheus
+  runsOn:
+  - vm-monitoring
+- kind: Service
+  network:
+    ip: 192.168.10.30
+    port: 3000
+    protocol: TCP
+    url: http://grafana.lan:3000
+  name: grafana
+  runsOn:
+  - vm-monitoring
+- kind: Service
+  network:
+    ip: 192.168.10.30
+    port: 9093
+    protocol: TCP
+    url: http://alertmanager.lan:9093
+  name: alertmanager
+  runsOn:
+  - vm-monitoring
+- kind: Service
+  network:
+    ip: 192.168.10.30
+    port: 3100
+    protocol: TCP
+    url: http://loki.lan:3100
+  name: loki
+  runsOn:
+  - vm-monitoring
+- kind: Service
+  network:
+    ip: 192.168.10.63
+    port: 3001
+    protocol: TCP
+    url: http://uptime.lan:3001
+  name: uptime-kuma
+  runsOn:
+  - lxc-dashboard
+- kind: Service
+  network:
+    ip: 192.168.10.63
+    port: 7575
+    protocol: TCP
+    url: http://homarr.lan:7575
+  name: homarr
+  runsOn:
+  - lxc-dashboard
+- kind: Service
+  network:
+    ip: 192.168.10.63
+    port: 8080
+    protocol: TCP
+    url: http://dozzle.lan:8080
+  name: dozzle
+  runsOn:
+  - lxc-dashboard
+
+# --- Dev / source / CI ---
+- kind: Service
+  network:
+    ip: 192.168.10.40
+    port: 3000
+    protocol: TCP
+    url: http://gitea.lan:3000
+  name: gitea
+  runsOn:
+  - vm-k3s-master
+- kind: Service
+  network:
+    ip: 192.168.10.40
+    port: 80
+    protocol: TCP
+    url: http://drone.lan
+  name: drone-ci
+  runsOn:
+  - vm-k3s-master
+- kind: Service
+  network:
+    ip: 192.168.1.30
+    port: 9000
+    protocol: TCP
+    url: http://portainer.lan:9000
+  name: portainer
+  runsOn:
+  - docker-host-os
+- kind: Service
+  network:
+    ip: 192.168.1.30
+    port: 5000
+    protocol: TCP
+    url: http://registry.lan:5000
+  name: docker-registry
+  runsOn:
+  - docker-host-os
+- kind: Service
+  network:
+    ip: 192.168.1.30
+    port: 9001
+    protocol: TCP
+    url: http://minio.lan:9001
+  name: minio
+  runsOn:
+  - docker-host-os
+
+# --- Storage UI ---
+- kind: Service
+  network:
+    ip: 192.168.1.20
+    port: 443
+    protocol: TCP
+    url: https://truenas.lan
+  name: truenas-webui
+  runsOn:
+  - truenas-core-os
+
+# --- Network admin UIs ---
+- kind: Service
+  network:
+    ip: 10.0.0.1
+    port: 443
+    protocol: TCP
+    url: https://firewall.lan
+  name: firewall-webui
+  runsOn:
+  - firewall-os
+- kind: Service
+  network:
+    ip: 10.0.0.2
+    port: 443
+    protocol: TCP
+    url: https://router.lan
+  name: router-webui
+  runsOn:
+  - router-os
+- kind: Service
+  network:
+    ip: 10.0.0.10
+    port: 443
+    protocol: TCP
+    url: https://unifi.lan
+  name: unifi-controller
+  runsOn:
+  - unifi-core-switch-os
+
+# ============================================================================
+# Connections (physical port wiring)
+# ============================================================================
+connections:
+# WAN ─ firewall ─ router (uplink chain)
+- a:
+    resource: pfsense-fw
+    portGroup: 1
+    portIndex: 0
+  b:
+    resource: core-router
+    portGroup: 1
+    portIndex: 0
+  label: WAN uplink
+# router ─ core-switch (10G trunk)
+- a:
+    resource: core-router
+    portGroup: 1
+    portIndex: 0
+  b:
+    resource: core-switch
+    portGroup: 2
+    portIndex: 0
+  label: core trunk
+# core-switch ─ access-switch (1G uplink)
+- a:
+    resource: core-switch
+    portGroup: 0
+    portIndex: 0
+  b:
+    resource: access-switch
+    portGroup: 1
+    portIndex: 0
+  label: uplink
+# core-switch ─ proxmox-node01 (10G)
+- a:
+    resource: core-switch
+    portGroup: 2
+    portIndex: 1
+  b:
+    resource: proxmox-node01
+    portGroup: 1
+    portIndex: 0
+  label: 10G
+# core-switch ─ proxmox-node02 (10G)
+- a:
+    resource: core-switch
+    portGroup: 2
+    portIndex: 2
+  b:
+    resource: proxmox-node02
+    portGroup: 1
+    portIndex: 0
+  label: 10G
+# core-switch ─ truenas-storage (10G)
+- a:
+    resource: core-switch
+    portGroup: 2
+    portIndex: 3
+  b:
+    resource: truenas-storage
+    portGroup: 1
+    portIndex: 0
+  label: 10G
+# core-switch ─ docker-host (2.5G)
+- a:
+    resource: core-switch
+    portGroup: 1
+    portIndex: 0
+  b:
+    resource: docker-host
+    portGroup: 0
+    portIndex: 0
+  label: 2.5G
+# access-switch ─ lounge-ap (PoE)
+- a:
+    resource: access-switch
+    portGroup: 0
+    portIndex: 0
+  b:
+    resource: lounge-ap
+    portGroup: 0
+    portIndex: 0
+  label: PoE
+# access-switch ─ basement-ap (PoE)
+- a:
+    resource: access-switch
+    portGroup: 0
+    portIndex: 1
+  b:
+    resource: basement-ap
+    portGroup: 0
+    portIndex: 0
+  label: PoE
+# access-switch ─ workstation-linux
+- a:
+    resource: access-switch
+    portGroup: 0
+    portIndex: 2
+  b:
+    resource: workstation-linux
+    portGroup: 0
+    portIndex: 0
+# access-switch ─ gaming-pc
+- a:
+    resource: access-switch
+    portGroup: 0
+    portIndex: 3
+  b:
+    resource: gaming-pc
+    portGroup: 0
+    portIndex: 0

+ 0 - 208
vhs/sample_config/hardware.yaml

@@ -1,208 +0,0 @@
-resources:
-  # ------------------------
-  # Servers
-  # ------------------------
-  - kind: Server
-    name: proxmox-node01
-    cpus:
-      - model: AMD EPYC 7302P
-        cores: 16
-        threads: 32
-    ram:
-      size: 128gb
-      mts: 3200
-    drives:
-      - type: ssd
-        size: 1tb
-      - type: ssd
-        size: 1tb
-    nics:
-      - type: rj45
-        speed: 1gb
-        ports: 2
-      - type: sfp+
-        speed: 10gb
-        ports: 2
-    ipmi: true
-
-  - kind: Server
-    name: proxmox-node02
-    cpus:
-      - model: Intel Xeon Silver 4210
-        cores: 10
-        threads: 20
-    ram:
-      size: 96gb
-      mts: 2666
-    drives:
-      - type: ssd
-        size: 1tb
-      - type: hdd
-        size: 4tb
-    nics:
-      - type: rj45
-        speed: 1gb
-        ports: 2
-      - type: sfp+
-        speed: 10gb
-        ports: 1
-    ipmi: true
-
-  - kind: Server
-    name: truenas-storage
-    cpus:
-      - model: Intel Xeon E-2236
-        cores: 6
-        threads: 12
-    ram:
-      size: 64gb
-      mts: 2666
-    drives:
-      - type: hdd
-        size: 8tb
-      - type: hdd
-        size: 8tb
-      - type: hdd
-        size: 8tb
-      - type: hdd
-        size: 8tb
-    nics:
-      - type: rj45
-        speed: 1gb
-        ports: 1
-      - type: sfp+
-        speed: 10gb
-        ports: 1
-    ipmi: true
-
-  # ------------------------
-  # Network
-  # ------------------------
-  - kind: Firewall
-    name: pfsense-fw
-    model: Netgate-6100
-    ports:
-      - type: rj45
-        speed: 1gb
-        count: 4
-      - type: sfp+
-        speed: 10gb
-        count: 2
-    managed: true
-    poe: false
-
-  - kind: Router
-    name: core-router
-    model: Ubiquiti-ER-4
-    ports:
-      - type: rj45
-        speed: 1gb
-        count: 4
-      - type: sfp
-        speed: 10gb
-        count: 1
-    managed: true
-    poe: false
-
-  - kind: Switch
-    name: core-switch
-    model: UniFi-USW-Enterprise-24
-    ports:
-      - type: rj45
-        speed: 1gb
-        count: 12
-      - type: rj45
-        speed: 2.5gb
-        count: 8
-      - type: sfp+
-        speed: 10gb
-        count: 4
-    managed: true
-    poe: true
-
-  - kind: Switch
-    name: access-switch
-    model: UniFi-USW-16-PoE
-    ports:
-      - type: rj45
-        speed: 1gb
-        count: 16
-      - type: sfp
-        speed: 1gb
-        count: 2
-    managed: true
-    poe: true
-
-  - kind: AccessPoint
-    name: lounge-ap
-    model: UniFi-U6-Pro
-    speed: 2.5gb
-
-  # ------------------------
-  # Power
-  # ------------------------
-  - kind: Ups
-    name: rack-ups
-    model: APC-SmartUPS-2200
-    va: 2200
-
-  # ------------------------
-  # Desktops
-  # ------------------------
-  - kind: Desktop
-    name: workstation-linux
-    cpus:
-      - model: AMD Ryzen 9 5900X
-        cores: 12
-        threads: 24
-    ram:
-      size: 64gb
-      mts: 3600
-    drives:
-      - type: ssd
-        size: 1tb
-      - type: ssd
-        size: 2tb
-    nics:
-      - type: rj45
-        speed: 1gb
-        ports: 1
-    gpus:
-      - model: NVIDIA RTX 3080
-        vram: 10gb
-
-  - kind: Desktop
-    name: gaming-pc
-    cpus:
-      - model: Intel Core i7-12700K
-        cores: 12
-        threads: 20
-    ram:
-      size: 32gb
-      mts: 3200
-    drives:
-      - type: ssd
-        size: 1tb
-    nics:
-      - type: rj45
-        speed: 1gb
-        ports: 1
-    gpus:
-      - model: NVIDIA RTX 3070
-        vram: 8gb
-
-  # ------------------------
-  # Laptop
-  # ------------------------
-  - kind: Laptop
-    name: dev-laptop
-    cpus:
-      - model: Intel Core i7-1260P
-        cores: 12
-        threads: 16
-    ram:
-      size: 32gb
-      mts: 5200
-    drives:
-      - type: ssd
-        size: 1tb

+ 0 - 153
vhs/sample_config/services.yaml

@@ -1,153 +0,0 @@
-resources:
-  # --------------------------------------------------
-  # Smart Home
-  # --------------------------------------------------
-  - kind: Service
-    name: home-assistant
-    network:
-      ip: 192.168.0.10
-      port: 8123
-      protocol: TCP
-      url: http://homeassistant.lan:8123
-    runsOn: vm-home-assistant
-
-  # --------------------------------------------------
-  # Media & Photos
-  # --------------------------------------------------
-  - kind: Service
-    name: plex
-    network:
-      ip: 192.168.0.20
-      port: 32400
-      protocol: TCP
-      url: http://plex.lan:32400
-    runsOn: vm-media-server
-
-  - kind: Service
-    name: jellyfin
-    network:
-      ip: 192.168.0.21
-      port: 8096
-      protocol: TCP
-      url: http://jellyfin.lan:8096
-    runsOn: vm-media-server
-
-  - kind: Service
-    name: immich
-    network:
-      ip: 192.168.0.22
-      port: 8080
-      protocol: TCP
-      url: http://immich.lan:8080
-    runsOn: vm-media-server
-
-  # --------------------------------------------------
-  # Storage & Backup
-  # --------------------------------------------------
-  - kind: Service
-    name: truenas-webui
-    network:
-      ip: 192.168.0.30
-      port: 443
-      protocol: TCP
-      url: https://truenas.lan
-    runsOn: truenas-core-os
-
-  - kind: Service
-    name: minio
-    network:
-      ip: 192.168.0.31
-      port: 9000
-      protocol: TCP
-      url: http://minio.lan:9000
-    runsOn: vm-media-server
-
-  # --------------------------------------------------
-  # Monitoring & Ops
-  # --------------------------------------------------
-  - kind: Service
-    name: prometheus
-    network:
-      ip: 192.168.0.40
-      port: 9090
-      protocol: TCP
-      url: http://prometheus.lan:9090
-    runsOn: vm-monitoring
-
-  - kind: Service
-    name: grafana
-    network:
-      ip: 192.168.0.41
-      port: 3000
-      protocol: TCP
-      url: http://grafana.lan:3000
-    runsOn: vm-monitoring
-
-  - kind: Service
-    name: alertmanager
-    network:
-      ip: 192.168.0.42
-      port: 9093
-      protocol: TCP
-      url: http://alertmanager.lan:9093
-    runsOn: vm-monitoring
-
-  # --------------------------------------------------
-  # Dev & Internal Tools
-  # --------------------------------------------------
-  - kind: Service
-    name: gitea
-    network:
-      ip: 192.168.0.50
-      port: 3001
-      protocol: TCP
-      url: http://git.lan:3001
-    runsOn: vm-monitoring
-
-  - kind: Service
-    name: docker-registry
-    network:
-      ip: 192.168.0.51
-      port: 5000
-      protocol: TCP
-      url: http://registry.lan:5000
-    runsOn: vm-monitoring
-
-  - kind: Service
-    name: portainer
-    network:
-      ip: 192.168.0.52
-      port: 9000
-      protocol: TCP
-      url: http://portainer.lan:9000
-    runsOn: vm-monitoring
-
-  # --------------------------------------------------
-  # Network Services
-  # --------------------------------------------------
-  - kind: Service
-    name: pihole
-    network:
-      ip: 192.168.0.53
-      port: 80
-      protocol: TCP
-      url: http://pihole.lan
-    runsOn: vm-monitoring
-
-  - kind: Service
-    name: firewall-webui
-    network:
-      ip: 192.168.0.1
-      port: 443
-      protocol: TCP
-      url: https://firewall.lan
-    runsOn: firewall-os
-
-  - kind: Service
-    name: router-webui
-    network:
-      ip: 192.168.0.254
-      port: 443
-      protocol: TCP
-      url: https://router.lan
-    runsOn: router-os

+ 0 - 154
vhs/sample_config/systems.yaml

@@ -1,154 +0,0 @@
-resources:
-  # --------------------------------------------------
-  # Hypervisors (Bare Metal)
-  # --------------------------------------------------
-  - kind: System
-    type: Hypervisor
-    name: proxmox-cluster-node01
-    os: proxmox
-    cores: 16
-    ram: 128gb
-    drives:
-      - size: 1tb
-      - size: 1tb
-    runsOn: proxmox-node01
-
-  - kind: System
-    type: Hypervisor
-    name: proxmox-cluster-node02
-    os: proxmox
-    cores: 10
-    ram: 96gb
-    drives:
-      - size: 1tb
-      - size: 4tb
-    runsOn: proxmox-node02
-
-  # --------------------------------------------------
-  # Storage OS (Bare Metal)
-  # --------------------------------------------------
-  - kind: System
-    type: Baremetal
-    name: truenas-core-os
-    os: truenas
-    cores: 6
-    ram: 64gb
-    drives:
-      - size: 8tb
-      - size: 8tb
-      - size: 8tb
-      - size: 8tb
-    runsOn: truenas-storage
-
-  # --------------------------------------------------
-  # IPMI / BMC Management
-  # --------------------------------------------------
-  - kind: System
-    type: Baremetal
-    name: ipmi-proxmox-node01
-    os: idrac
-    cores: 1
-    ram: 1gb
-    runsOn: proxmox-node01
-
-  - kind: System
-    type: Baremetal
-    name: ipmi-proxmox-node02
-    os: ipmi
-    cores: 1
-    ram: 1gb
-    runsOn: proxmox-node02
-
-  - kind: System
-    type: Baremetal
-    name: ipmi-truenas-storage
-    os: ipmi
-    cores: 1
-    ram: 1gb
-    runsOn: truenas-storage
-
-  # --------------------------------------------------
-  # Core Network Systems
-  # --------------------------------------------------
-  - kind: System
-    type: Baremetal
-    name: firewall-os
-    os: pfsense
-    cores: 4
-    ram: 8gb
-    drives:
-      - size: 32gb
-    runsOn: pfsense-fw
-
-  - kind: System
-    type: Baremetal
-    name: router-os
-    os: edgeos
-    cores: 4
-    ram: 4gb
-    drives:
-      - size: 4gb
-    runsOn: core-router
-
-  - kind: System
-    type: Baremetal
-    name: unifi-core-switch-os
-    os: unifi-os
-    cores: 2
-    ram: 2gb
-    drives:
-      - size: 8gb
-    runsOn: core-switch
-
-  - kind: System
-    type: Baremetal
-    name: unifi-access-switch-os
-    os: unifi-os
-    cores: 2
-    ram: 2gb
-    drives:
-      - size: 8gb
-    runsOn: access-switch
-
-  - kind: System
-    type: Baremetal
-    name: unifi-lounge-ap-os
-    os: unifi-firmware
-    cores: 2
-    ram: 1gb
-    drives:
-      - size: 4gb
-    runsOn: lounge-ap
-
-  # --------------------------------------------------
-  # Virtual Machines
-  # --------------------------------------------------
-  - kind: System
-    type: VM
-    name: vm-home-assistant
-    os: hassos
-    cores: 2
-    ram: 4gb
-    drives:
-      - size: 64gb
-    runsOn: proxmox-node01
-
-  - kind: System
-    type: VM
-    name: vm-media-server
-    os: ubuntu-22.04
-    cores: 4
-    ram: 8gb
-    drives:
-      - size: 500gb
-    runsOn: proxmox-node02
-
-  - kind: System
-    type: VM
-    name: vm-monitoring
-    os: debian-12
-    cores: 2
-    ram: 4gb
-    drives:
-      - size: 64gb
-    runsOn: proxmox-node01

+ 7 - 1
vhs/webui_capture.sh

@@ -10,7 +10,13 @@ DELAY=200  # delay between frames in GIF (ms)
 # -----------------------------
 # -----------------------------
 # Convert to GIF using ImageMagick
 # Convert to GIF using ImageMagick
 # -----------------------------
 # -----------------------------
+# The /visualise/ screenshots are captured at a much taller viewport so the
+# full diagram fits in one frame — those are too tall to roll into the
+# uniform-size rotating GIF, so we leave them out (they live as standalone
+# images in webui_screenshots/ for embedding directly in the README/docs).
 echo "Creating GIF..."
 echo "Creating GIF..."
-convert -delay $DELAY -loop 0 "$OUTPUT_DIR"/*.png "$GIF_OUTPUT"
+convert -delay $DELAY -loop 0 \
+  $(ls "$OUTPUT_DIR"/*.png | grep -v "_visualise_") \
+  "$GIF_OUTPUT"
 
 
 echo "Done! GIF saved to $GIF_OUTPUT"
 echo "Done! GIF saved to $GIF_OUTPUT"

BIN
vhs/webui_screenshots/localhost:5287.png


BIN
vhs/webui_screenshots/localhost:5287_cli.png


BIN
vhs/webui_screenshots/localhost:5287_hardware_tree.png


BIN
vhs/webui_screenshots/localhost:5287_resources_hardware_proxmox-node01.png


BIN
vhs/webui_screenshots/localhost:5287_servers_list.png


BIN
vhs/webui_screenshots/localhost:5287_services_list.png


BIN
vhs/webui_screenshots/localhost:5287_systems_list.png


BIN
vhs/webui_screenshots/localhost:5287_visualise_logical.png


BIN
vhs/webui_screenshots/localhost:5287_visualise_topology.png


BIN
vhs/webui_screenshots/localhost:5287_yaml.png


BIN
vhs/webui_screenshots/output.gif


Некоторые файлы не были показаны из-за большого количества измененных файлов