containerlab, distributed

Distributed containerlabs, powered by Kubernetes.

Clabernetes or c9s (pronounced: see-nines) turns every network node and wire into an independently reconciled resource, then runs your containerlab workloads across the cluster.

Node + Link APITopology compilerKubernetes reconciliation

Distributed declarative labs

Declaratively defined · distributed by K8s

A pod per network node

Familiar containerlab syntax, Kubernetes native

Topology Custom Resource.

Declare a c9s Topology resource embedding the familiar containerlab definition. Its controller compiles your lab into Node and Link resources, then runs it across Kubernetes.

two-node.c9s.yamlYAML
apiVersion: c9s.run/v1alpha1
kind: Topology
metadata:
  name: two-node-lab
spec:
  definition:
    containerlab: |
      name: two-node-lab
      topology:
        nodes:
          srl:
            kind: nokia_srlinux
            image: ghcr.io/nokia/srlinux
          sonic:
            kind: sonic-vm
            image: sonic-vm:latest

        links:
          - endpoints:
              - "srl:e1-1"
              - "sonic:eth1"

Node definitions

One Nokia SR Linux router and one SONiC switch. Give each node a name, a kind, and a container image.

2 Node resources → 2 device Pods

Designed for small and huge labs

A Kubernetes API for network infrastructure.

Keep containerlab vocabulary while gaining the reconciliation, policy, and distribution model of Kubernetes.

How it works

From intent to running lab.

Author direct resources or bring an existing topology. c9s handles the controller and device Pod lifecycle.

01

Describe

Topology or direct CRs

02

Reconcile

Nodes, links, and policy

03

Run

One device Pod per node

Ready to build?

Your first distributed lab is one quickstart away.

Launch a disposable KinD cluster, install c9s, and connect your first network nodes.

Open the quickstart