A Visual Studio Code extension that integrates containerlab directly into your editor, providing a convenient tree view for managing labs and their containers.
- Auto-discovery of local
*.clab.yml
or*.clab.yaml
files in your workspace. - Tree view showing labs (green/red/gray/yellow icons) based on container states:
- Green: all containers in the lab are running
- Gray: undeployed (no containers found)
- Red: all containers are stopped
- Yellow: partially running (some containers running, others stopped)
- Right-click context menus on labs:
- Deploy, Destroy, Redeploy (with or without cleanup)
- Open Lab File, Copy Lab File Path
- Graph topologies (local Web or draw.io modes)
- Inspect single lab
- Add Lab to Workspace
- Open Folder in New Window
- Right-click context menus on containers:
- Start, Stop
- Attach shell (with user-defined exec commands per node kind)
- SSH
- View logs
- Copy submenu for container properties:
- Name, ID, IPv4, IPv6, Kind, Image
- Inspect commands:
- Inspect (All Labs): shows a webview with all labs in a grouped table
- Inspect Lab: show only the selected lab’s containers in a webview
- Graph:
- Graph Lab (Web): runs
containerlab graph
in a Terminal - Graph Lab (draw.io): runs
containerlab graph --drawio
, then opens the.drawio
file - Graph Lab (draw.io, Interactive): runs in Terminal with in interactive mode
- Graph Lab (Web): runs
- containerlab must be installed and accessible via
sudo containerlab
in your systemPATH
. - Docker (or another container runtime) must be set up and running if your labs rely on container-based nodes.
- (Optional) A local folder with
*.clab.yml
or*.clab.yaml
topologies, opened in VS Code.
- Install the extension.
- Open a folder or workspace in VS Code containing
.clab.yml
or.clab.yaml
files. - Click on the Containerlab icon in the Activity Bar to view your labs.
- Right-click on a lab or container to see context menu commands (Deploy, Destroy, Redeploy, etc.).
These are some key commands contributed by the extension:
- Deploy / Deploy (cleanup)
- Redeploy / Redeploy (cleanup)
- Destroy / Destroy (cleanup)
- Deploy lab file (choose a
.clab.yml/.yaml
from a file picker)
- Inspect (All Labs): Summaries all labs in one webview
- Inspect Lab: Summaries the containers for a single lab
- Graph Lab (Web): runs in Terminal
- Graph Lab (draw.io): uses a spinner and opens the
.drawio
file - Graph Lab (draw.io, Interactive): same but with additional
--drawio-args "-I"
.
- Start node, Stop node
- Attach shell (exec into container—respects
containerlab.node.execCommandMapping
in settings) - SSH
- View logs (tails
docker logs -f ...
) - Copy menu (Name, ID, IPv4, IPv6, Kind, Image)
- Add Lab to Workspace: adds the lab’s folder to the current VS Code workspace
- Open Folder in New Window: opens a separate VS Code window rooted at the lab’s folder
All these commands are accessible via:
- Context menus on labs/containers (in the Containerlab Explorer)
- Editor title (top-right) when editing a
.clab.(yml|yaml)
- Command Palette (
Ctrl+Shift+P
orCmd+Shift+P
, then type “Containerlab:”)
You can customize the following settings under containerlab.*
:
containerlab.defaultSshUser
(string)
Default SSH user for the SSH command (e.g."admin"
).containerlab.sudoEnabledByDefault
(boolean)
Whether to prependsudo
to containerlab commands. Default:true
.containerlab.refreshInterval
(number)
How often (in ms) the Containerlab Explorer refreshes. Default:10000
.containerlab.node.execCommandMapping
(object)
Mapping of nodekind
to the exec command used by Attach shell.
For example, if you have"nokia_srlinux": "sr_cli"
, thendocker exec -it <container> sr_cli
is used.
- None reported. If you spot any bug or have a feature request, please open an issue on our repository.
If you’d like to request features or report issues:
-
Open an issue on our GitHub repository.
-
PRs are welcome! Let us know how we can improve the extension.
-
GitHub Issues: Create an issue on GitHub.
-
Discord: Join our Discord community
Enjoy managing your containerlab topologies directly from VS Code!