liken
liken is a small operating system. It boots a machine directly into
Kubernetes.
A machine runs the Linux kernel, k3s, and one small init process.
There is no systemd, no shell, and no package manager. The whole
system ships as one image of about 400 MB, and a machine with 1 GB of
memory can run it.
You manage the machines with kubectl, the same way you manage the
workloads. A five-machine cluster, 14 hours after a rolling
upgrade:
$ kubectl get clusters
NAME STATUS MACHINES VERSION NEWEST AVAILABLE AGE
homelab Ready 5/5 2026.08.12-001 2026.08.12-001 2026.08.12-001 18d
$ kubectl get machines
NAME ROLE STATUS UPTIME ADDRESS LIKEN KERNEL AGE
node-1 leader Ready 14h 10.10.0.1/24 2026.08.12-001 7.1.5-070105-generic 18d
node-2 leader Ready 14h 10.10.0.2/24 2026.08.12-001 7.1.5-070105-generic 18d
node-3 leader Ready 13h 10.10.0.3/24 2026.08.12-001 7.1.5-070105-generic 18d
node-4 follower Ready 13h 10.10.0.4/24 2026.08.12-001 7.1.5-070105-generic 18d
node-5 follower Ready 13h 10.10.0.5/24 2026.08.12-001 7.1.5-070105-generic 18d
Each machine also reports the hardware it found, in its status. Ask with the same tools you already use:
$ kubectl get machine node-4 -o json \
| jq '.status.hardware | {cpus, memoryBytes, disks: [.blockDevices[].model]}'
{
"cpus": 4,
"memoryBytes": 16512733184,
"disks": [
"Samsung SSD 970 EVO Plus 500GB",
"WDC WD40EFRX-68N32N0"
]
}
The project is one repository. It contains a Go init written for this project, the Linux kernel and k3s from their upstream releases, and the build that assembles them into a bootable image. Read the repository to see what your machine runs.
Releases are published at releases.liken.sh. Upgrades come straight from the channel: you catalog a release and set the version, and the machines reboot into it one turn at a time.
The manual tells you how to run your own cluster.
How liken works explains the
model, and Install a cluster gives the
steps from a downloaded release to kubectl get nodes.