Cml
@calcuttin/cmlv2026.07.01.6
Security Notice
This extension includes AI agent skills that can modify AI assistant behavior. Review the skill files before installing.
01README
Cisco Modeling Labs (CML) controller automation — sync lab/node/link inventory, import topologies, and manage lab lifecycle via the CML REST API.
02Models
@calcuttin/cml/labv2026.07.01.6cml_lab.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| baseUrl | string | CML controller base URL (e.g. https://cml.example.com) |
| token? | string | Pre-generated JWT from CML UI (Copy JWT) — faster than username/password |
| username? | string | CML username |
| password? | string | CML password |
| skipTlsVerify | boolean | Skip TLS certificate verification (common for lab CML installs) |
fn getSystemInfo()
Fetch CML controller version, readiness, and feature flags
fn sync(includeNodes: boolean, includeLinks: boolean)
Sync all labs — one lab resource per title plus node/link resources
| Argument | Type | Description |
|---|---|---|
| includeNodes | boolean | Write one node resource per CML node |
| includeLinks | boolean | Write one link resource per CML link |
fn lookup(labTitle: string)
Look up a lab by title and write lab + node + link resources
| Argument | Type | Description |
|---|---|---|
| labTitle | string | Lab title to operate on |
fn createLab(title: string, description?: string)
Create a new empty CML lab
| Argument | Type | Description |
|---|---|---|
| title | string | Title for the new lab |
| description? | string | Optional lab description |
fn listTopologies(tag?: string, category?: string)
List Cisco DevNet topologies from topologies/catalog.json (one resource per entry)
| Argument | Type | Description |
|---|---|---|
| tag? | string | Filter by tag (e.g. ccnp-relevant, ccna-prep, ccna) |
| category? | string | Filter by exact category string |
fn downloadTopologies(force: boolean)
Download compatible Cisco DevNet cml-community topologies into topologies/cisco-devnet/ and rebuild catalog.json (filtered to node types on your CML controller)
| Argument | Type | Description |
|---|---|---|
| force | boolean | Re-download YAML files even when local copies already match upstream |
fn importTopology(topologyId: string, title?: string, startAfterImport: boolean)
Import a topology by catalog ID (see listTopologies)
| Argument | Type | Description |
|---|---|---|
| topologyId | string | Catalog ID from topologies/catalog.json (run listTopologies) |
| title? | string | Override lab title on import |
| startAfterImport | boolean | Start all nodes after import completes |
fn importLab(topologyPath: string, title?: string, startAfterImport: boolean)
Import a topology YAML file from the repo into CML (POST /api/v0/import)
| Argument | Type | Description |
|---|---|---|
| topologyPath | string | Path to topology YAML relative to repo root (e.g. topologies/cisco-devnet/basic-forwarding-behavior.yaml) |
| title? | string | Override lab title on import (defaults to title in YAML) |
| startAfterImport | boolean | Start all nodes after import completes |
fn startLab(labTitle: string)
Start all nodes in a CML lab by title
| Argument | Type | Description |
|---|---|---|
| labTitle | string | Lab title to operate on |
fn stopLab(labTitle: string)
Stop all nodes in a CML lab by title
| Argument | Type | Description |
|---|---|---|
| labTitle | string | Lab title to operate on |
fn wipeLab(labTitle: string)
Wipe all node runtime state in a lab (configs preserved)
| Argument | Type | Description |
|---|---|---|
| labTitle | string | Lab title to operate on |
fn deleteLab(labTitle: string)
Delete a CML lab by title
| Argument | Type | Description |
|---|---|---|
| labTitle | string | Lab title to operate on |
Resources
lab(infinite)— CML lab summary with embedded node/link inventory
node(infinite)— Individual CML lab node (router, switch, host, etc.)
link(infinite)— Individual CML lab link between two node interfaces
system(infinite)— CML controller system information
topology(infinite)— Entry from topologies/catalog.json (Cisco DevNet labs)
catalog(infinite)— Result of downloading DevNet topologies into the repo
03Workflows
@calcuttin/sync-cml-labsa1b2c3d4-1111-4000-8000-000000000001
Sync all CML labs, nodes, and links into cml-controller
syncAuthenticate with CML and fan-out lab inventory
1.system-infocml-controller.getSystemInfo— Record CML controller version and readiness
2.sync-inventorycml-controller.sync— Sync all labs with node and link resources
@calcuttin/download-devnet-topologiesa1b2c3d4-1111-4000-8000-000000000002
Download compatible Cisco DevNet cml-community topologies into topologies/cisco-devnet/ and rebuild topologies/catalog.json
downloadFetch DevNet YAML labs filtered to node types on your CML controller
1.download-catalogcml-controller.downloadTopologies— Download topologies from GitHub and write catalog.json
@calcuttin/import-topologya1b2c3d4-1111-4000-8000-000000000003
Import a DevNet topology by catalog ID and start it
importImport topology YAML from local catalog into CML
1.import-labcml-controller.importTopology— Import by catalog ID
@calcuttin/import-topology-and-synca1b2c3d4-1111-4000-8000-000000000004
Import a DevNet topology by catalog ID, start it, and sync inventory
import-and-syncImport topology then refresh lab/node/link resources
1.import-labcml-controller.importTopology— Import by catalog ID
2.sync-inventorycml-controller.sync— Sync all labs with node and link resources
@calcuttin/import-ccnp-topologya1b2c3d4-1111-4000-8000-000000000005
Import the CCNP basic-forwarding-behavior DevNet lab and start it
importImport CCNP-relevant OSPF + switching topology from catalog
1.import-labcml-controller.importTopology— Import basic-forwarding-behavior from DevNet catalog
04Skills
cml1 file
05Previous Versions
2026.07.01.5Jul 1, 2026
2026.07.01.4Jul 1, 2026
06Stats
A
100 / 100
Downloads
0
Archive size
27.1 KB
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License declared1/1earned
- Verified public repository2/2earned
Repository
https://github.com/calcuttin/swamp-cml07Platforms
08Labels