Skip to content

Release 0.77#

2026-06-28 ยท Full Changelog

Apply topology changes#

The new apply command reconciles the topology you want with the lab that is already running. If the lab is not deployed yet, apply behaves like deploy; if the lab is running, it compares the desired topology with the live runtime and applies supported deltas without destroying and redeploying the whole lab.

The first implementation focuses on topology shape changes: adding and deleting nodes, adding and deleting supported links, starting stopped nodes, restoring parked dataplane interfaces, and restarting or recreating existing nodes for a limited set of state-backed node definition changes.

containerlab apply -t lab.clab.yml --dry-run
containerlab apply -t lab.clab.yml

Link changes can be handled live, with a restart, or with a recreate depending on the node kind. Linux, SR Linux, and SR-SIM can apply link changes live; cEOS restarts; vrnetlab-backed and unknown kinds use the conservative recreate mode. You can override this with link-apply-mode when you have validated that a NOS handles hot-plugged interfaces.

Use redeploy when you need a clean artifact state, startup configuration changes, or link parameter/type changes that apply intentionally does not mutate in place.

Thanks @FloSch62 @kaelemc #3207

Cisco XRd vRouter#

The new cisco_xrd_vrouter kind brings Cisco IOS XRd vRouter into containerlab as a vrnetlab-backed micro-VM node. XRd vRouter's dataplane interfaces are PCI-only, so containerlab wires ordinary lab links into emulated NICs presented to the XRd vRouter guest.

Nodes boot with SSH, NETCONF, and gNMI enabled and use clab:clab@123 credentials. Dataplane interfaces default to vmxnet3 NICs, which XRd presents as TenGigE0/0/0/X; set XRD_NIC_TYPE: igb if you need the older GigabitEthernet0/0/0/X naming.

topology:
  nodes:
    xrd1:
      kind: cisco_xrd_vrouter
      image: vrnetlab/cisco_xrd-vrouter:25.4.2
    xrd2:
      kind: cisco_xrd_vrouter
      image: vrnetlab/cisco_xrd-vrouter:25.4.2
  links:
    - endpoints: ["xrd1:eth1", "xrd2:eth1"]

Thanks @alxrxs #3247 #3248

SSH IdentityFile in credentials#

Topology credentials can now include identity-file. When set, containerlab renders an IdentityFile directive into the generated per-lab SSH client config, so ssh <node> automatically uses the right private key without passing -i.

topology:
  defaults:
    credentials:
      username: admin
      identity-file: ~/.ssh/lab-admin
  nodes:
    srl1:
      kind: nokia_srlinux

The key path follows the same precedence levels as other credentials (nodes, groups, kinds, defaults), resolves relative paths from the topology file location, expands ~, and quotes paths with spaces in the rendered SSH config.

Thanks @mvanhorn #3241

Documentation refresh#

The documentation toolchain moved to Zensical while keeping the existing mkdocs.yml configuration. Local docs development still starts with make serve-docs, and the home page, tags, navigation, and several example pages were refreshed to match the new engine.

Thanks @FloSch62 #3242 #3245 #3246

Miscellaneous#

  • SR Linux SSH public key provisioning now respects the 32-key SR Linux limit, logs a warning when more keys are discovered, and chooses the retained keys deterministically. Thanks @mvanhorn #3239
  • containerlab graph now skips non point-to-point links instead of panicking on single-endpoint links such as dummy. Thanks @mvanhorn #3244