Skip to content

VIRTUAL MACHINES. CONTAINER WORKFLOWS.

Network operating systems.
Neatly boxed.

Boxen turns a network OS virtual machine into a portable container image. Bring a vendor disk and a YAML profile; Boxen handles the first boot, prepares the operating system, and packages it for your next Containerlab or c9s lab.

Get started See how it works

Written in Go · Driven by YAML · Built for network labs running on Containerlab or c9s

Boxen

Built for and c9s

Boxen packs a network OS VM into a container image.

The container still runs QEMU VM inside, there is no way around it, however by packaging it in a container, you get a familiar way to store, distribute, and launch it. Boxen automates the packaging process and handles everything Containerlab or c9s needs to successfully boot and run the image.

01 / DEFINE

Describe your box

A profile defines the VM hardware, boot prompts, baseline configuration, and runtime steps. Start with an included profile or adapt one for your platform.

02 / PACKAGE

Prepare it once

boxen build starts a builder, converts the disk to QCOW2, boots the OS, and saves a prepared disk and profile in a local container image.

03 / RUN

Make it a lab

Containerlab starts your image. Boxen boots QEMU, connects the interfaces, applies the node configuration, and reports readiness.

YOUR FIRST IMAGE

boxen build --disk /path/to/cumulus-linux-5.16.1-vx-amd64-qemu.qcow2 \
  --profile nvidia_cumulusvx --tag 5.16.1

The result is boxen-nvidia_cumulusvx:5.16.1. Point your topology at that image and deploy. The quick start walks through the complete workflow.

Boxen vs VRnetLab

Boxen and VRnetLab both package network OS virtual machines into container images. Boxen puts the preparation and runtime instructions in YAML profiles, with a common architecture across network OSes.

01 / YAML PROFILES

Low code approach

Describe how to prepare and run an image in a YAML profile. Every supported network OS uses the same architecture and shared runtime.

02 / CLI RUNNER

Intuitive CLI runner

Build, package, and run images through a consistent CLI with clear flags and built-in help. Load and share the resulting images with familiar Docker commands.

03 / CUSTOM OS

Decoupled build process

Add a custom OS with a single YAML profile and pass it to boxen build --profile. Keep and iterate on your profile locally; no pull request or upstream merge is required.

Everything you need to build the next lab

Get up and running

Installation covers the Linux host, Docker, KVM, and the Boxen binary. Follow the quick start to package an image and deploy two nodes.

Understand the lifecycle

Learn the packaging process, the run process, and how management networking reaches the guest.

Make a profile your own

Explore the profile structure, console steps, template values, and QEMU configuration.

Keep your images useful

Manage images, share them through a registry, refresh the runtime without repackaging, and troubleshoot boot or connectivity issues.

Boxen is under active development. Check the included platforms for profile-specific requirements and join the Containerlab community to discuss new platform support.