Containerlab, with a canvas.
Same YAML. Now in your browser.
Containerlab is the cleanest way to spin up container-native labs from the CLI - and netplex. isn't here to argue with that. It speaks the same YAML and the same lab-as-code workflow, then adds what a CLI can't: a visual canvas, real vendor VMs without the vrnetlab dance, access from any browser on any OS, and real multi-user. Keep your pipeline. Give your team a GUI.
Containerlab is CLI-and-YAML by design - brilliant for automation engineers, a wall for everyone else on the team. Its own docs point you to hand-written topology files; the built-in clab graph renders a static diagram, not an editor. netplex. keeps the YAML and the CLI and puts a live canvas in front of them - so the juniors, the students and the network architect can all build, not just the scripters.
A great tool - if you live in the CLI.
Not everyone does.
No native canvas - YAML by hand
Every topology is a hand-written .clab.yml: nodes, kinds, endpoints, link lists. The VS Code extension helps, and clab graph draws a picture after the fact - but there is no drag-a-node, draw-a-link editor. Onboarding anyone who isn't fluent in the schema is slow.
Vendor VMs mean the vrnetlab dance
Containers are effortless. Real vendor VMs - vMX, vSRX, CSR, XRv - are not: each one is a vrnetlab image you build yourself with per-image make, a compatibility matrix, 3-25 minute boots, and labs that balloon toward 48 GB.
Linux + Docker on your machine
Containerlab runs where Docker/Podman runs - a Linux host. macOS and Windows are second-class: the WSL2 dance, ARM64 image gaps on Apple Silicon, and no tc traffic-control inside Docker Desktop for link impairments.
Single-user by nature
Containerlab is a CLI tool, so access is host access. Membership of the root-equivalent clab_admins group runs labs - there is no built-in login, no per-user RBAC, no teams or quotas. Sharing a host between a class or a team is a manual, trust-everyone affair.
No classroom model
There is no student pod, no per-learner isolation, no grading. Teaching 25 people with Containerlab means 25 Linux boxes with Docker, or one shared host where everyone can see and stop everyone else's nodes.
Consoles and capture live elsewhere
To console into a node you docker exec or SSH; to capture packets you reach for tcpdump/Wireshark on the host. All perfectly fine for a CLI native - but it's four tools and a terminal, not one screen your whole team can open in a browser.
Containerlab vs netplex.
Same YAML. More ways in.
| Feature | Containerlab Free / open source |
netplex. tier shown per row |
|---|---|---|
| Lab-as-code (YAML) | Yes — the whole model | Yes — .npx + YAML export |
| Deploy / destroy / inspect CLI | Yes — clab deploy/destroy/inspect | Yes — netplex CLI + Python SDK |
| Visual canvas editor | No — clab graph is a static diagram | Yes — full browser Studio |
| Runs on your machine | Linux + Docker/Podman required | Nothing local — any browser |
| macOS / Windows / Apple Silicon | Second-class (WSL2, ARM64 gaps) | First-class — thin client |
| Container nodes | Yes — native, its core strength | Yes — any Docker image |
| Full vendor VMs (vMX, vSRX, CSR…) | vrnetlab — build each image, 3-25 min boots | Drop a qcow2 → vendor profile auto-applied |
| Import existing vrnetlab container images | Native | Not directly — bring the qcow2, run via QEMU |
| Import your .clab.yml topology | — | Yes — via the netplex CLI / API |
| Link impairment: delay / jitter / loss / rate | Yes — tc / netem | Architectnetem + OVS |
| Packet corruption impairment | Yes | Not yet |
| CI/CD integration | Yes — run the CLI in CI | netplex test — GitHub / GitLab actions |
| Multi-user / RBAC / teams / quotas | No — single-user, clab_admins group | Teamauth, RBAC, quotas |
| Classroom / student pods / grading | Not built in | Classisolated pods, grading |
| Browser consoles + packet capture | docker exec / SSH + host tcpdump | Browser-native — no install |
Containerlab facts from containerlab.dev docs + vrnetlab; netplex. rows are code-verified against the platform source (parity audit, July 2026). Rows where Containerlab leads are marked honestly.
Straight with you — where Containerlab still wins
If your images are already vrnetlab containers, netplex. won't import those container images directly - bring the source qcow2 and it runs via QEMU with a vendor profile applied. Containerlab also has a packet-corruption impairment knob that netplex. doesn't have yet (delay, jitter, loss and rate are all there). And if your entire workflow is `clab deploy` inside a CI runner and nothing else, Containerlab is already perfect - netplex. speaks the same YAML, so you lose nothing by keeping it there. Everything else on this page is live and verified against our source, not roadmap.
Keep the YAML. Add everything a CLI can't give a team.
netplex. is a server product, not a CLI tool - so the same lab-as-code you already write becomes something a browser, a classroom and a CI pipeline can all reach at once.
A canvas over your code
Build by dragging nodes and drawing links, or write .npx/YAML by hand - both are first-class and stay in sync. The people who love the CLI keep it; everyone else gets a picture they can edit.
Vendor VMs without vrnetlab
Drop a qcow2 into the Library and the image pipeline classifies it, applies the vendor's recommended CPU/RAM/NIC profile and boot-tests it. No per-image make, no compatibility matrix, no 48 GB container builds.
Any browser, any OS
The netplex. host runs the lab; every user drives it from a browser - Mac, Windows, Chromebook, Apple Silicon included. No local Docker, no WSL2, no ARM64 image hunt.
Real multi-user
Logins, RBAC, teams and quotas are built in. A shared host stops meaning "everyone is root" - each user gets their own workspace, and the Class tier gives each student an isolated pod.
Import your .clab.yml
Point the netplex. CLI or API at an existing topology.clab.yml. Nodes, kinds, links and inline configs map to the .npx model; external config-file references are flagged so nothing goes missing silently.
Still CI-friendly
netplex test plugs into GitHub Actions and GitLab CI to stand a lab up, assert against it and tear it down - the same reproducible, lab-as-code discipline you came to Containerlab for.
Your topology file is already valid input.
Nothing to rewrite.
Keep your .clab.yml
Your existing topology.clab.yml stays exactly as it is - it's the input, not something to convert by hand.
Import via CLI or API
Point the netplex. CLI or REST API at the file. Kinds, nodes, links and inline configs map across; external file refs are flagged, not dropped.
Drive it from a browser
Open the canvas, start the lab, console into any node and capture packets - with no Docker or Linux on your own machine.
Kinds mapped
Container kinds map to Docker nodes; vr-* kinds map to QEMU vendor types; bridge/ovs-bridge become switch nodes.
Inline configs carry
Startup config embedded inline in the topology imports as an active profile. External config-file paths are surfaced as warnings.
EVE-NG and GNS3 too
The same importer family handles EVE-NG .unl and GNS3 .gns3project - consolidate every lab format into one platform.
Keep the CLI you love.
Give the lab a front door.
Start on the free Associate tier. Import a .clab.yml, open the canvas, and hand your team a browser link instead of a Docker setup guide.
Australian schools get the full platform free — install and teacher training included. Learn more →