workspace/skills/cml-node-operations/SKILL.md
CML node operations — start, stop, console access, CLI execution, config management, node details. Use when starting or stopping a CML node, running show commands on a lab router, setting startup configs, or reading console logs.
npx skillsauth add automateyournetwork/netclaw cml-node-operationsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
cml-mcp (pip-installed, stdio transport)CML_URL, CML_USERNAME, CML_PASSWORD environment variablescml-mcp[pyats] for CLI execution via pyATS| Tool | Parameters | What It Does |
|------|-----------|-------------|
| start_node | lab_id/lab_title, node_id/node_label | Start (boot) a single node |
| stop_node | lab_id/lab_title, node_id/node_label | Stop (shutdown) a single node |
| get_node | lab_id/lab_title, node_id/node_label | Get node details: state, CPU, RAM, interfaces, config |
| get_nodes | lab_id/lab_title | List all nodes with their current states |
| wipe_node | lab_id/lab_title, node_id/node_label | Wipe a node's configuration (reset to default) |
| Tool | Parameters | What It Does |
|------|-----------|-------------|
| set_node_config | lab_id/lab_title, node_id/node_label, config | Set a node's startup configuration |
| get_node_config | lab_id/lab_title, node_id/node_label | Get a node's current configuration |
| download_lab_configs | lab_id/lab_title | Download all node configs from a running lab |
| Tool | Parameters | What It Does |
|------|-----------|-------------|
| get_node_console | lab_id/lab_title, node_id/node_label | Get console connection details (URL, protocol) |
| get_node_console_log | lab_id/lab_title, node_id/node_label, lines? | Retrieve console log output from a running node |
| execute_command | lab_id/lab_title, node_id/node_label, command | Execute a CLI command on a running node (requires pyATS) |
| State | Meaning |
|-------|---------|
| DEFINED_ON_CORE | Node exists but is not running |
| BOOTING | Node is in the process of booting |
| BOOTED | Node has finished booting and is reachable |
| STOPPED | Node has been shut down |
When a user wants to configure a specific node:
get_node to see current stateset_node_config with the full configurationstart_node to boot itexecute_command to run show version or show ip int briefWhen a user wants to back up or review configs:
get_lab to check statedownload_lab_configs gets everything at onceget_node_config for individual nodesWhen a user needs to see what happened during boot or troubleshoot a node:
get_node — node must be BOOTED or BOOTINGget_node_console_log to retrieve recent console output%PARSER-4-BADCFG — invalid configuration commands%LINK-3-UPDOWN — interface state changes%OSPF-5-ADJCHG — OSPF adjacency changes%BGP-5-ADJCHANGE — BGP neighbor state changes%SYS-5-RESTART — system restart messagesWhen a user wants to run show commands or make live changes:
get_node to check stateexecute_command with the CLI commandexecute_command per commandCommon commands to execute:
show ip interface brief
show ip ospf neighbor
show ip bgp summary
show running-config
show cdp neighbor
show version
show ip route
show interfaces status
When a user wants to start fresh with a node:
stop_nodewipe_node resets to factory defaultset_node_config with the new startup configurationstart_nodehostname {HOSTNAME}
!
interface Loopback0
ip address {LOOPBACK_IP} 255.255.255.255
!
interface GigabitEthernet0/0
ip address {MGMT_IP} {MASK}
no shutdown
!
interface GigabitEthernet0/1
ip address {P2P_IP} {MASK}
no shutdown
!
router ospf 1
router-id {LOOPBACK_IP}
network {LOOPBACK_IP} 0.0.0.0 area 0
network {P2P_NETWORK} {WILDCARD} area 0
!
line con 0
logging synchronous
line vty 0 4
login local
transport input ssh
!
end
hostname {HOSTNAME}
!
interface Loopback0
ip address {LOOPBACK_IP} 255.255.255.255
!
interface GigabitEthernet0/1
ip address {PEER_IP} {MASK}
no shutdown
!
router bgp {LOCAL_AS}
bgp router-id {LOOPBACK_IP}
bgp log-neighbor-changes
neighbor {NEIGHBOR_IP} remote-as {REMOTE_AS}
!
address-family ipv4
network {LOOPBACK_IP} mask 255.255.255.255
neighbor {NEIGHBOR_IP} activate
exit-address-family
!
end
hostname {HOSTNAME}
!
feature ospf
feature bgp
feature nv overlay
feature vn-segment-vlan-based
!
interface loopback0
ip address {LOOPBACK_IP}/32
!
interface Ethernet1/1
description To-Spine1
no switchport
ip address {P2P_IP}/30
no shutdown
!
router ospf 1
router-id {LOOPBACK_IP}
!
router bgp {AS}
router-id {LOOPBACK_IP}
neighbor {SPINE_IP} remote-as {AS}
update-source loopback0
address-family l2vpn evpn
send-community extended
!
end
hostname {HOSTNAME}
!
interface Loopback0
ipv4 address {LOOPBACK_IP} 255.255.255.255
!
interface GigabitEthernet0/0/0/0
ipv4 address {P2P_IP} {MASK}
no shutdown
!
router isis CORE
is-type level-2-only
net 49.0001.{SYSTEM_ID}.00
address-family ipv4 unicast
metric-style wide
!
interface Loopback0
passive
address-family ipv4 unicast
!
!
interface GigabitEthernet0/0/0/0
address-family ipv4 unicast
!
!
!
end
execute_command requires pyATS — the cml-mcp[pyats] extra must be installedset_node_config sets the startup config; apply it before bootCML_URL — CML server URLCML_USERNAME — CML usernameCML_PASSWORD — CML passwordCML_VERIFY_SSL — Verify SSL certificate (true/false)testing
Human-in-the-loop escalation via HumanRail — route low-confidence agent decisions, pre-destructive operation approvals, and ambiguous incident tickets to real human engineers. Human answers are verified and returned as structured output. Workers are paid via Lightning Network. Use when the agent is uncertain, when a destructive change needs explicit human sign-off beyond a ServiceNow CR, or when an ambiguous ticket requires human triage before automated handling.
testing
Manage EVE-NG node lifecycle. Use when listing nodes, checking runtime state, creating or deleting nodes, starting or stopping nodes or whole labs, verifying node details, or wiping node NVRAM back to factory defaults.
development
Manage EVE-NG labs and platform inventory. Use when listing labs, checking lab metadata, creating or deleting labs, importing or exporting lab archives, checking EVE-NG health or auth, or verifying available node images before build work.
tools
Execute live CLI commands on running EVE-NG nodes over telnet console. Use when running show commands, making live config changes, verifying protocol state, testing connectivity, checking console readiness, or interacting with IOS, Junos, VPCS, EOS, or NX-OS nodes.