Skip to main content

Cml

@calcuttin/cmlv2026.07.01.6· 6d agoMODELSWORKFLOWSSKILLS
01README

Cisco Modeling Labs (CML) controller automation — sync lab/node/link inventory, import topologies, and manage lab lifecycle via the CML REST API.

02Models1
@calcuttin/cml/labv2026.07.01.6cml_lab.ts

Global Arguments

ArgumentTypeDescription
baseUrlstringCML controller base URL (e.g. https://cml.example.com)
token?stringPre-generated JWT from CML UI (Copy JWT) — faster than username/password
username?stringCML username
password?stringCML password
skipTlsVerifybooleanSkip 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
ArgumentTypeDescription
includeNodesbooleanWrite one node resource per CML node
includeLinksbooleanWrite one link resource per CML link
fn lookup(labTitle: string)
Look up a lab by title and write lab + node + link resources
ArgumentTypeDescription
labTitlestringLab title to operate on
fn createLab(title: string, description?: string)
Create a new empty CML lab
ArgumentTypeDescription
titlestringTitle for the new lab
description?stringOptional lab description
fn listTopologies(tag?: string, category?: string)
List Cisco DevNet topologies from topologies/catalog.json (one resource per entry)
ArgumentTypeDescription
tag?stringFilter by tag (e.g. ccnp-relevant, ccna-prep, ccna)
category?stringFilter 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)
ArgumentTypeDescription
forcebooleanRe-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)
ArgumentTypeDescription
topologyIdstringCatalog ID from topologies/catalog.json (run listTopologies)
title?stringOverride lab title on import
startAfterImportbooleanStart 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)
ArgumentTypeDescription
topologyPathstringPath to topology YAML relative to repo root (e.g. topologies/cisco-devnet/basic-forwarding-behavior.yaml)
title?stringOverride lab title on import (defaults to title in YAML)
startAfterImportbooleanStart all nodes after import completes
fn startLab(labTitle: string)
Start all nodes in a CML lab by title
ArgumentTypeDescription
labTitlestringLab title to operate on
fn stopLab(labTitle: string)
Stop all nodes in a CML lab by title
ArgumentTypeDescription
labTitlestringLab title to operate on
fn wipeLab(labTitle: string)
Wipe all node runtime state in a lab (configs preserved)
ArgumentTypeDescription
labTitlestringLab title to operate on
fn deleteLab(labTitle: string)
Delete a CML lab by title
ArgumentTypeDescription
labTitlestringLab 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
03Workflows5
@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
04Skills1
cml1 file
05Previous Versions2
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
07Platforms
08Labels