Tim Jones 2 месяцев назад
Родитель
Сommit
29997eebf2
6 измененных файлов с 1928 добавлено и 2 удалено
  1. 708 0
      COMMANDS.md
  2. 707 0
      README.md
  3. 1 1
      RackPeek/Program.cs
  4. 1 1
      RackPeek/Yaml/YamlResourceCollection.cs
  5. 114 0
      generate_commands_markdown.sh
  6. 397 0
      servers.yaml

+ 708 - 0
COMMANDS.md

@@ -0,0 +1,708 @@
+# CLI Commands
+
+## `rpk`
+```
+USAGE:
+    rpk [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    switches    Manage switches                  
+    systems     Manage systems                   
+    ap          Show access point hardware report
+    desktops    Show desktop hardware report     
+    ups         Show UPS hardware report         
+    servers     Manage servers                   
+```
+
+## `rpk switches`
+```
+DESCRIPTION:
+Manage switches
+
+USAGE:
+    rpk switches [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    summary            Show switch hardware report             
+    add <name>         Add a new switch                        
+    list               List switches                           
+    get <name>         Get a switches by name                  
+    describe <name>    Show detailed information about a switch
+    set <name>         Update switch properties                
+    del <name>         Delete a switch                         
+```
+
+## `rpk switches summary`
+```
+DESCRIPTION:
+Show switch hardware report
+
+USAGE:
+    rpk switches summary [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk switches add`
+```
+DESCRIPTION:
+Add a new switch
+
+USAGE:
+    rpk switches add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk switches list`
+```
+DESCRIPTION:
+List switches
+
+USAGE:
+    rpk switches list [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk switches get`
+```
+DESCRIPTION:
+Get a switches by name
+
+USAGE:
+    rpk switches get <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk switches describe`
+```
+DESCRIPTION:
+Show detailed information about a switch
+
+USAGE:
+    rpk switches describe <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk switches set`
+```
+DESCRIPTION:
+Update switch properties
+
+USAGE:
+    rpk switches set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help       Prints help information
+        --Model                             
+        --managed                           
+        --poe                               
+```
+
+## `rpk switches del`
+```
+DESCRIPTION:
+Delete a switch
+
+USAGE:
+    rpk switches del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems`
+```
+DESCRIPTION:
+Manage systems
+
+USAGE:
+    rpk systems [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    summary            Show system report                      
+    add <name>         Add a new system                        
+    list               List systems                            
+    get <name>         Get a system by name                    
+    describe <name>    Show detailed information about a system
+    set <name>         Update system properties                
+    del <name>         Delete a system                         
+```
+
+## `rpk systems summary`
+```
+DESCRIPTION:
+Show system report
+
+USAGE:
+    rpk systems summary [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems add`
+```
+DESCRIPTION:
+Add a new system
+
+USAGE:
+    rpk systems add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems list`
+```
+DESCRIPTION:
+List systems
+
+USAGE:
+    rpk systems list [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems get`
+```
+DESCRIPTION:
+Get a system by name
+
+USAGE:
+    rpk systems get <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems describe`
+```
+DESCRIPTION:
+Show detailed information about a system
+
+USAGE:
+    rpk systems describe <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems set`
+```
+DESCRIPTION:
+Update system properties
+
+USAGE:
+    rpk systems set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help       Prints help information
+        --type                              
+        --os                                
+        --cores                             
+        --ram                               
+        --runs-on                           
+```
+
+## `rpk systems del`
+```
+DESCRIPTION:
+Delete a system
+
+USAGE:
+    rpk systems del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk ap`
+```
+DESCRIPTION:
+Show access point hardware report
+
+USAGE:
+    rpk ap [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk desktops`
+```
+DESCRIPTION:
+Show desktop hardware report
+
+USAGE:
+    rpk desktops [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk ups`
+```
+DESCRIPTION:
+Show UPS hardware report
+
+USAGE:
+    rpk ups [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers`
+```
+DESCRIPTION:
+Manage servers
+
+USAGE:
+    rpk servers [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    summary            Show server hardware report              
+    add <name>         Add a new server                         
+    get <name>         List servers or get a server by name     
+    describe <name>    Show detailed information about a server 
+    set <name>         Update server properties                 
+    del <name>         Delete a server                          
+    tree <name>        Displays a dependency tree for the server
+    cpu                Manage server CPUs                       
+    drive              Manage server drives                     
+    gpu                Manage server GPUs                       
+    nic                Manage server NICs                       
+```
+
+## `rpk servers summary`
+```
+DESCRIPTION:
+Show server hardware report
+
+USAGE:
+    rpk servers summary [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers add`
+```
+DESCRIPTION:
+Add a new server
+
+USAGE:
+    rpk servers add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers get`
+```
+DESCRIPTION:
+List servers or get a server by name
+
+USAGE:
+    rpk servers get <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers describe`
+```
+DESCRIPTION:
+Show detailed information about a server
+
+USAGE:
+    rpk servers describe <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers set`
+```
+DESCRIPTION:
+Update server properties
+
+USAGE:
+    rpk servers set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help        Prints help information
+        --ram <GB>                           
+        --ipmi                               
+```
+
+## `rpk servers del`
+```
+DESCRIPTION:
+Delete a server
+
+USAGE:
+    rpk servers del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers tree`
+```
+DESCRIPTION:
+Displays a dependency tree for the server
+
+USAGE:
+    rpk servers tree <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers cpu`
+```
+DESCRIPTION:
+Manage server CPUs
+
+USAGE:
+    rpk servers cpu [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    add <name>    Add a CPU to a server     
+    set <name>    Update a CPU on a server  
+    del <name>    Remove a CPU from a server
+```
+
+## `rpk servers cpu add`
+```
+DESCRIPTION:
+Add a CPU to a server
+
+USAGE:
+    rpk servers cpu add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help                 Prints help information
+        --model <MODEL>                               
+        --cores <CORES>                               
+        --threads <THREADS>                           
+```
+
+## `rpk servers cpu set`
+```
+DESCRIPTION:
+Update a CPU on a server
+
+USAGE:
+    rpk servers cpu set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help                 Prints help information
+        --index <INDEX>                               
+        --model <MODEL>                               
+        --cores <CORES>                               
+        --threads <THREADS>                           
+```
+
+## `rpk servers cpu del`
+```
+DESCRIPTION:
+Remove a CPU from a server
+
+USAGE:
+    rpk servers cpu del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+```
+
+## `rpk servers drive`
+```
+DESCRIPTION:
+Manage server drives
+
+USAGE:
+    rpk servers drive [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    add <name>    Add a drive to a server     
+    set <name>    Update a drive on a server  
+    del <name>    Remove a drive from a server
+```
+
+## `rpk servers drive add`
+```
+DESCRIPTION:
+Add a drive to a server
+
+USAGE:
+    rpk servers drive add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help           Prints help information
+        --type <TYPE>                           
+        --size <SIZE>                           
+```
+
+## `rpk servers drive set`
+```
+DESCRIPTION:
+Update a drive on a server
+
+USAGE:
+    rpk servers drive set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+        --type <TYPE>                             
+        --size <SIZE>                             
+```
+
+## `rpk servers drive del`
+```
+DESCRIPTION:
+Remove a drive from a server
+
+USAGE:
+    rpk servers drive del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+```
+
+## `rpk servers gpu`
+```
+DESCRIPTION:
+Manage server GPUs
+
+USAGE:
+    rpk servers gpu [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    add <name>    Add a GPU to a server     
+    set <name>    Update a GPU on a server  
+    del <name>    Remove a GPU from a server
+```
+
+## `rpk servers gpu add`
+```
+DESCRIPTION:
+Add a GPU to a server
+
+USAGE:
+    rpk servers gpu add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --model <MODEL>                           
+        --vram <VRAM>                             
+```
+
+## `rpk servers gpu set`
+```
+DESCRIPTION:
+Update a GPU on a server
+
+USAGE:
+    rpk servers gpu set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+        --model <MODEL>                           
+        --vram <VRAM>                             
+```
+
+## `rpk servers gpu del`
+```
+DESCRIPTION:
+Remove a GPU from a server
+
+USAGE:
+    rpk servers gpu del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+```
+
+## `rpk servers nic`
+```
+DESCRIPTION:
+Manage server NICs
+
+USAGE:
+    rpk servers nic [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    add <name>    Add a NIC to a server     
+    set <name>    Update a NIC on a server  
+    del <name>    Remove a NIC from a server
+```
+
+## `rpk servers nic add`
+```
+DESCRIPTION:
+Add a NIC to a server
+
+USAGE:
+    rpk servers nic add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --type <TYPE>                             
+        --speed <SPEED>                           
+        --ports <PORTS>                           
+```
+
+## `rpk servers nic set`
+```
+DESCRIPTION:
+Update a NIC on a server
+
+USAGE:
+    rpk servers nic set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+        --type <TYPE>                             
+        --speed <SPEED>                           
+        --ports <PORTS>                           
+```
+
+## `rpk servers nic del`
+```
+DESCRIPTION:
+Remove a NIC from a server
+
+USAGE:
+    rpk servers nic del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+```
+

+ 707 - 0
README.md

@@ -3,3 +3,710 @@
 RackPeek is a lightweight CLI tool for managing and documenting your IT infrastructure and home lab.
 Track servers, switches, routers, desktops, access points, UPS systems, and more — including software systems, services, and networks — all from the command line.
 It’s designed to help you inventory, configure, and audit your environment in a consistent, reusable way.
+
+## `rpk`
+```
+USAGE:
+    rpk [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    switches    Manage switches                  
+    systems     Manage systems                   
+    ap          Show access point hardware report
+    desktops    Show desktop hardware report     
+    ups         Show UPS hardware report         
+    servers     Manage servers                   
+```
+
+## `rpk switches`
+```
+DESCRIPTION:
+Manage switches
+
+USAGE:
+    rpk switches [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    summary            Show switch hardware report             
+    add <name>         Add a new switch                        
+    list               List switches                           
+    get <name>         Get a switches by name                  
+    describe <name>    Show detailed information about a switch
+    set <name>         Update switch properties                
+    del <name>         Delete a switch                         
+```
+
+## `rpk switches summary`
+```
+DESCRIPTION:
+Show switch hardware report
+
+USAGE:
+    rpk switches summary [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk switches add`
+```
+DESCRIPTION:
+Add a new switch
+
+USAGE:
+    rpk switches add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk switches list`
+```
+DESCRIPTION:
+List switches
+
+USAGE:
+    rpk switches list [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk switches get`
+```
+DESCRIPTION:
+Get a switches by name
+
+USAGE:
+    rpk switches get <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk switches describe`
+```
+DESCRIPTION:
+Show detailed information about a switch
+
+USAGE:
+    rpk switches describe <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk switches set`
+```
+DESCRIPTION:
+Update switch properties
+
+USAGE:
+    rpk switches set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help       Prints help information
+        --Model                             
+        --managed                           
+        --poe                               
+```
+
+## `rpk switches del`
+```
+DESCRIPTION:
+Delete a switch
+
+USAGE:
+    rpk switches del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems`
+```
+DESCRIPTION:
+Manage systems
+
+USAGE:
+    rpk systems [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    summary            Show system report                      
+    add <name>         Add a new system                        
+    list               List systems                            
+    get <name>         Get a system by name                    
+    describe <name>    Show detailed information about a system
+    set <name>         Update system properties                
+    del <name>         Delete a system                         
+```
+
+## `rpk systems summary`
+```
+DESCRIPTION:
+Show system report
+
+USAGE:
+    rpk systems summary [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems add`
+```
+DESCRIPTION:
+Add a new system
+
+USAGE:
+    rpk systems add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems list`
+```
+DESCRIPTION:
+List systems
+
+USAGE:
+    rpk systems list [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems get`
+```
+DESCRIPTION:
+Get a system by name
+
+USAGE:
+    rpk systems get <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems describe`
+```
+DESCRIPTION:
+Show detailed information about a system
+
+USAGE:
+    rpk systems describe <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk systems set`
+```
+DESCRIPTION:
+Update system properties
+
+USAGE:
+    rpk systems set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help       Prints help information
+        --type                              
+        --os                                
+        --cores                             
+        --ram                               
+        --runs-on                           
+```
+
+## `rpk systems del`
+```
+DESCRIPTION:
+Delete a system
+
+USAGE:
+    rpk systems del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk ap`
+```
+DESCRIPTION:
+Show access point hardware report
+
+USAGE:
+    rpk ap [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk desktops`
+```
+DESCRIPTION:
+Show desktop hardware report
+
+USAGE:
+    rpk desktops [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk ups`
+```
+DESCRIPTION:
+Show UPS hardware report
+
+USAGE:
+    rpk ups [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers`
+```
+DESCRIPTION:
+Manage servers
+
+USAGE:
+    rpk servers [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    summary            Show server hardware report              
+    add <name>         Add a new server                         
+    get <name>         List servers or get a server by name     
+    describe <name>    Show detailed information about a server 
+    set <name>         Update server properties                 
+    del <name>         Delete a server                          
+    tree <name>        Displays a dependency tree for the server
+    cpu                Manage server CPUs                       
+    drive              Manage server drives                     
+    gpu                Manage server GPUs                       
+    nic                Manage server NICs                       
+```
+
+## `rpk servers summary`
+```
+DESCRIPTION:
+Show server hardware report
+
+USAGE:
+    rpk servers summary [OPTIONS]
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers add`
+```
+DESCRIPTION:
+Add a new server
+
+USAGE:
+    rpk servers add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers get`
+```
+DESCRIPTION:
+List servers or get a server by name
+
+USAGE:
+    rpk servers get <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers describe`
+```
+DESCRIPTION:
+Show detailed information about a server
+
+USAGE:
+    rpk servers describe <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers set`
+```
+DESCRIPTION:
+Update server properties
+
+USAGE:
+    rpk servers set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help        Prints help information
+        --ram <GB>                           
+        --ipmi                               
+```
+
+## `rpk servers del`
+```
+DESCRIPTION:
+Delete a server
+
+USAGE:
+    rpk servers del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers tree`
+```
+DESCRIPTION:
+Displays a dependency tree for the server
+
+USAGE:
+    rpk servers tree <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help    Prints help information
+```
+
+## `rpk servers cpu`
+```
+DESCRIPTION:
+Manage server CPUs
+
+USAGE:
+    rpk servers cpu [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    add <name>    Add a CPU to a server     
+    set <name>    Update a CPU on a server  
+    del <name>    Remove a CPU from a server
+```
+
+## `rpk servers cpu add`
+```
+DESCRIPTION:
+Add a CPU to a server
+
+USAGE:
+    rpk servers cpu add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help                 Prints help information
+        --model <MODEL>                               
+        --cores <CORES>                               
+        --threads <THREADS>                           
+```
+
+## `rpk servers cpu set`
+```
+DESCRIPTION:
+Update a CPU on a server
+
+USAGE:
+    rpk servers cpu set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help                 Prints help information
+        --index <INDEX>                               
+        --model <MODEL>                               
+        --cores <CORES>                               
+        --threads <THREADS>                           
+```
+
+## `rpk servers cpu del`
+```
+DESCRIPTION:
+Remove a CPU from a server
+
+USAGE:
+    rpk servers cpu del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+```
+
+## `rpk servers drive`
+```
+DESCRIPTION:
+Manage server drives
+
+USAGE:
+    rpk servers drive [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    add <name>    Add a drive to a server     
+    set <name>    Update a drive on a server  
+    del <name>    Remove a drive from a server
+```
+
+## `rpk servers drive add`
+```
+DESCRIPTION:
+Add a drive to a server
+
+USAGE:
+    rpk servers drive add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help           Prints help information
+        --type <TYPE>                           
+        --size <SIZE>                           
+```
+
+## `rpk servers drive set`
+```
+DESCRIPTION:
+Update a drive on a server
+
+USAGE:
+    rpk servers drive set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+        --type <TYPE>                             
+        --size <SIZE>                             
+```
+
+## `rpk servers drive del`
+```
+DESCRIPTION:
+Remove a drive from a server
+
+USAGE:
+    rpk servers drive del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+```
+
+## `rpk servers gpu`
+```
+DESCRIPTION:
+Manage server GPUs
+
+USAGE:
+    rpk servers gpu [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    add <name>    Add a GPU to a server     
+    set <name>    Update a GPU on a server  
+    del <name>    Remove a GPU from a server
+```
+
+## `rpk servers gpu add`
+```
+DESCRIPTION:
+Add a GPU to a server
+
+USAGE:
+    rpk servers gpu add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --model <MODEL>                           
+        --vram <VRAM>                             
+```
+
+## `rpk servers gpu set`
+```
+DESCRIPTION:
+Update a GPU on a server
+
+USAGE:
+    rpk servers gpu set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+        --model <MODEL>                           
+        --vram <VRAM>                             
+```
+
+## `rpk servers gpu del`
+```
+DESCRIPTION:
+Remove a GPU from a server
+
+USAGE:
+    rpk servers gpu del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+```
+
+## `rpk servers nic`
+```
+DESCRIPTION:
+Manage server NICs
+
+USAGE:
+    rpk servers nic [OPTIONS] <COMMAND>
+
+OPTIONS:
+    -h, --help    Prints help information
+
+COMMANDS:
+    add <name>    Add a NIC to a server     
+    set <name>    Update a NIC on a server  
+    del <name>    Remove a NIC from a server
+```
+
+## `rpk servers nic add`
+```
+DESCRIPTION:
+Add a NIC to a server
+
+USAGE:
+    rpk servers nic add <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --type <TYPE>                             
+        --speed <SPEED>                           
+        --ports <PORTS>                           
+```
+
+## `rpk servers nic set`
+```
+DESCRIPTION:
+Update a NIC on a server
+
+USAGE:
+    rpk servers nic set <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+        --type <TYPE>                             
+        --speed <SPEED>                           
+        --ports <PORTS>                           
+```
+
+## `rpk servers nic del`
+```
+DESCRIPTION:
+Remove a NIC from a server
+
+USAGE:
+    rpk servers nic del <name> [OPTIONS]
+
+ARGUMENTS:
+    <name>     
+
+OPTIONS:
+    -h, --help             Prints help information
+        --index <INDEX>                           
+```
+

+ 1 - 1
RackPeek/Program.cs

@@ -189,7 +189,7 @@ public static class CliBootstrap
         // Spectre bootstrap
         app.Configure(config =>
         {
-            config.SetApplicationName("rackpeek");
+            config.SetApplicationName("rpk");
 
             // ----------------------------
             // Server commands (CRUD-style)

+ 1 - 1
RackPeek/Yaml/YamlResourceCollection.cs

@@ -28,7 +28,7 @@ public sealed class YamlResourceCollection
             if (!_knownFiles.Contains(file))
                 _knownFiles.Add(file);
 
-            var yaml = File.ReadAllText(file);
+            var yaml = File.Exists(file) ? File.ReadAllText(file) : "";
             var resources = Deserialize(yaml);
 
             foreach (var resource in resources)

+ 114 - 0
generate_commands_markdown.sh

@@ -0,0 +1,114 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+PROJECT_PATH="."
+OUTPUT_FILE="COMMANDS.md"
+declare -A VISITED
+
+# ----------------------------
+# Helpers
+# ----------------------------
+
+strip_colors() {
+  sed -r "s/\x1B\[[0-9;]*[mK]//g"
+}
+
+run_help() {
+  # $@ contains the parts, e.g., "switches" "summary" "list"
+  echo "Running: dotnet run --project ./RackPeek -- \"$@\"" >&2
+
+  local output
+  if ! output=$(dotnet run --project ./RackPeek -- "$@" 2>&1 | strip_colors); then
+    echo "WARNING: command failed: dotnet run --project ./RackPeek -- $*" >&2
+    echo "$output" >&2
+    return 1
+  fi
+
+  echo "$output"
+}
+
+# Extracts commands from help output
+get_commands() {
+  local help_output="$1"
+
+  echo "$help_output" | awk '
+    BEGIN { in_commands = 0 }
+
+    /^COMMANDS:/ { in_commands = 1; next }
+
+    in_commands {
+      if ($0 ~ /^[[:space:]]{4}[a-zA-Z0-9-]+[[:space:]]+/) {
+        print $1
+        next
+      }
+      if ($0 !~ /^[[:space:]]*$/) {
+        exit
+      }
+    }
+  '
+}
+
+# ----------------------------
+# Recursion
+# ----------------------------
+
+generate_help_recursive() {
+  local current_path=("$@")
+  
+  # 1. Create a "Map Key" for the VISITED hash (must not be empty)
+  local flat_cmd="${current_path[*]}"
+  local map_key="${flat_cmd:-root}"
+
+  # 2. Create a "Display Header" for the Markdown file
+  #    If empty, just "rpk". If not empty, "rpk <commands>"
+  local display_header
+  if [[ -z "$flat_cmd" ]]; then
+    display_header="rpk"
+  else
+    display_header="rpk $flat_cmd"
+  fi
+
+  # Prevent infinite loops using the Map Key
+  if [[ -n "${VISITED["$map_key"]:-}" ]]; then
+    return
+  fi
+  VISITED["$map_key"]=1
+
+  # Run help
+  local help_output
+  if ! help_output=$(run_help "${current_path[@]}" --help); then
+    echo "Skipping: $map_key (help failed)" >&2
+    return
+  fi
+
+  # Append to Markdown file using the Display Header
+  {
+    echo "## \`${display_header}\`"
+    echo '```'
+    echo "$help_output"
+    echo '```'
+    echo ""
+  } >> "$OUTPUT_FILE"
+
+  # Extract subcommands
+  local commands
+  mapfile -t commands < <(get_commands "$help_output")
+
+  for cmd in "${commands[@]}"; do
+    echo "Recursing into: ${display_header} ${cmd}" >&2
+    generate_help_recursive "${current_path[@]}" "$cmd"
+  done
+}
+
+# ----------------------------
+# Main
+# ----------------------------
+
+{
+  echo "# CLI Commands"
+  echo ""
+} > "$OUTPUT_FILE"
+
+generate_help_recursive
+
+echo "Generated $OUTPUT_FILE successfully."

+ 397 - 0
servers.yaml

@@ -0,0 +1,397 @@
+resources:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) Silver 4110
+        cores: 8
+        threads: 16
+    ram:
+      size: 64
+      mts: 2400
+    drives:
+      - type: ssd
+        size: 480
+      - type: ssd
+        size: 480
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 2
+      - type: sfp+
+        speed: 10
+        ports: 2
+    gpus:
+    ipmi: true
+    name: dell-c6400-node01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) Silver 4110
+        cores: 8
+        threads: 16
+    ram:
+      size: 128
+      mts: 2400
+    drives:
+      - type: ssd
+        size: 960
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 2
+      - type: sfp+
+        speed: 10
+        ports: 2
+    gpus:
+    ipmi: true
+    name: dell-c6400-node02
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) Silver 4110
+        cores: 8
+        threads: 16
+    ram:
+      size: 64
+      mts: 2400
+    drives:
+      - type: ssd
+        size: 480
+      - type: ssd
+        size: 480
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 2
+      - type: sfp+
+        speed: 10
+        ports: 2
+    gpus:
+    ipmi: true
+    name: dell-c6400-node03
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) Silver 4110
+        cores: 8
+        threads: 16
+    ram:
+      size: 128
+      mts: 2400
+    drives:
+      - type: ssd
+        size: 960
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 2
+      - type: sfp+
+        speed: 10
+        ports: 2
+    gpus:
+    ipmi: true
+    name: dell-c6400-node04
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) E5-2620 v4
+        cores: 8
+        threads: 16
+    ram:
+      size: 64
+      mts: 2133
+    drives:
+      - type: hdd
+        size: 8192
+      - type: hdd
+        size: 8192
+      - type: hdd
+        size: 8192
+      - type: hdd
+        size: 8192
+      - type: ssd
+        size: 120
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 1
+      - type: sfp+
+        speed: 10
+        ports: 1
+    gpus:
+    ipmi: true
+    name: truenas-storage01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Core(TM) i5-8500
+        cores: 6
+        threads: 6
+    ram:
+      size: 32
+      mts: 2666
+    drives:
+      - type: ssd
+        size: 512
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 4
+    gpus:
+    ipmi: false
+    name: proxmox-edge01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Celeron(R) J4125
+        cores: 4
+        threads: 4
+    ram:
+      size: 8
+      mts: 2400
+    drives:
+      - type: ssd
+        size: 64
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 4
+    gpus:
+    ipmi: false
+    name: opnsense-fw01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) E3-1270 v6
+        cores: 4
+        threads: 8
+    ram:
+      size: 16
+      mts: 2400
+    drives:
+      - type: ssd
+        size: 256
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 1
+    gpus:
+    ipmi: true
+    name: mgmt-bastion01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) E5-2630 v4
+        cores: 10
+        threads: 20
+    ram:
+      size: 64
+      mts: 2133
+    drives:
+      - type: hdd
+        size: 6144
+      - type: hdd
+        size: 6144
+      - type: hdd
+        size: 6144
+      - type: hdd
+        size: 6144
+      - type: ssd
+        size: 240
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 2
+      - type: sfp+
+        speed: 10
+        ports: 1
+    gpus:
+    ipmi: true
+    name: truenas-backup01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) Silver 4214
+        cores: 12
+        threads: 24
+    ram:
+      size: 128
+      mts: 2666
+    drives:
+      - type: ssd
+        size: 1024
+    nics:
+      - type: sfp+
+        speed: 10
+        ports: 2
+    gpus:
+      - model: NVIDIA Tesla P40
+        vram: 24
+      - model: NVIDIA Tesla P40
+        vram: 24
+      - model: NVIDIA Tesla P4
+        vram: 8
+    ipmi: true
+    name: compute-gpu01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) E3-1240 v5
+        cores: 4
+        threads: 8
+    ram:
+      size: 32
+      mts: 2133
+    drives:
+      - type: ssd
+        size: 512
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 2
+    gpus:
+    ipmi: true
+    name: proxmox-lab01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) E-2224
+        cores: 4
+        threads: 4
+    ram:
+      size: 16
+      mts: 2666
+    drives:
+      - type: ssd
+        size: 256
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 2
+    gpus:
+    ipmi: true
+    name: k8s-control01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) E-2224
+        cores: 4
+        threads: 4
+    ram:
+      size: 16
+      mts: 2666
+    drives:
+      - type: ssd
+        size: 256
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 2
+    gpus:
+    ipmi: true
+    name: k8s-control02
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) Silver 4108
+        cores: 8
+        threads: 16
+    ram:
+      size: 64
+      mts: 2400
+    drives:
+      - type: ssd
+        size: 1024
+      - type: ssd
+        size: 1024
+    nics:
+      - type: sfp+
+        speed: 10
+        ports: 1
+    gpus:
+    ipmi: true
+    name: elk-logging01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Core(TM) i3-8100
+        cores: 4
+        threads: 4
+    ram:
+      size: 16
+      mts: 2400
+    drives:
+      - type: ssd
+        size: 256
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 2
+    gpus:
+    ipmi: false
+    name: edge-node01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) E5-1650 v3
+        cores: 6
+        threads: 12
+    ram:
+      size: 64
+      mts: 2133
+    drives:
+      - type: ssd
+        size: 480
+      - type: hdd
+        size: 4096
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 4
+    gpus:
+    ipmi: true
+    name: backup-proxmox01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Core(TM) i7-8700
+        cores: 6
+        threads: 12
+    ram:
+      size: 32
+      mts: 2666
+    drives:
+      - type: ssd
+        size: 512
+    nics:
+      - type: rj45
+        speed: 1
+        ports: 1
+    gpus:
+    ipmi: false
+    name: lab-general01
+    tags:
+  - kind: Server
+    cpus:
+      - model: Intel(R) Xeon(R) E5-2650 v3
+        cores: 10
+        threads: 20
+    ram:
+      size: 128
+      mts: 2133
+    drives:
+      - type: hdd
+        size: 4096
+      - type: hdd
+        size: 4096
+      - type: hdd
+        size: 4096
+      - type: hdd
+        size: 4096
+    nics:
+      - type: sfp+
+        speed: 10
+        ports: 2
+    gpus:
+    ipmi: true
+    name: dell-r730-archive01
+    tags: