· · 5 min read Intermediate

Talos Linux Vendor Lock-In: Five Questions, Run on My Own Nodes

Talos Linux is MPL-2.0 and Sidero can't relicense it alone. The vendor risk sits in the defaults, the BSL code around the core, and a team Yardi bought on 14 September.

A hacker cuts a cable from an open server tower to a payphone while a green ogre bolts turnstiles around it

TL;DR I ran the five questions from my licence post on the OS under my own cluster. The licence holds. The Talos Linux vendor lock-in sits in two defaults that point at Sidero’s servers, the BSL code Sidero keeps adding around the MPL core, and a company Yardi has owned since 14 September.

My licence post ends with five questions to ask of every component you run. I didn’t ask them of Talos, which is the operating system every node in my homelab boots. Nine days before that post went out, Yardi had bought Sidero Labs, the company that makes it.

My note for this post already had an answer. Talos is MPL-2.0, so the licence isn’t the risk. The risk is bus factor and a small ecosystem, and the fix is an own build pipeline and an own registry mirror.

Was the note right? Partly. Here’s where it wasn’t.

The licence can’t move without everyone

Question one is who owns the copyright, and whether there’s a CLA .

The LICENSE file has exactly one commit in its history, the initial one on 3 November 2017, and it said Mozilla Public License 2.0 then. CONTRIBUTING.md asks for a DCO sign-off on every commit and there’s no CLA anywhere in the repository. Every contributor keeps their copyright, so Sidero can’t relicense Talos on its own.

Omni, Sidero’s management platform, shows what the other setup looks like. Since January its contributing guide takes contributions under 0BSD , and says why, the “flexibility to re-license the project in the future”.

So the obvious worry was the wrong one.

What a node talks to out of the box

If the licence can’t move, the next question is what a running node needs from Sidero. My note said nothing. The docs say two things.

Discovery first. “By default, Talos uses the service registry”, and the discovery page names Sidero’s public instance at discovery.talos.dev. The server is under BSL 1.1 with no additional use grant, and self-hosting it takes “a commercial license”. You can switch it off by removing the DiscoveryServiceConfig documents, so that one’s a config change.

Then the installer. Since Talos 1.14, released 3 September, “the ghcr.io/siderolabs/installer image is no longer published”, according to the upgrade guide. Installers come from factory.talos.dev. Both of my Talos posts on this blog, the introduction and the NixOS comparison, show an upgrade command pointing at ghcr.io/siderolabs/installer. They were right for v1.6 and v1.7, the versions they show.

Could I build my own? Yes, and the build docs say the result “can be pushed to any registry you have access to”. But the default build pulls prebuilt layers from ghcr.io/siderolabs, and rebuilding every layer means working through five repositories, not one make. A registry mirror covers container pulls. Installer and boot images need your own imager runs or a self-hosted Image Factory , which is MPL-2.0 apart from an enterprise/ directory.

Question two is the trademark, and it settles what a fork may call itself. Sidero’s design system README says forking is welcome and that the licence “grants no trademark rights”. A redistributed build needs its own name.

Who pays, and what they did before

Here the note was right, and short. Over the last twelve months one maintainer wrote 47% of the commits to Talos, the top three wrote 76%, and at least 90% came from Sidero people.

Question three is who pays them. Yardi does now. Sidero says Talos “remains fully open source under the MPL-2.0 license” and that it runs as a standalone company. The pricing page sells Talos Enterprise Linux at $1,000 per node per year, ten nodes minimum, “the same codebase with a commercial layer on top”.

Question five is whether they’ve done it before. Not to Talos. Around it, yes.

DateWhat happened
2021-10-28Discovery service relicensed from MPL to BSL
2024-02-29Omni published under BSL from the first commit
2025-12-08Image Factory gets its BSL enterprise/ directory
2026-05-28go-vex’s change date set to N/A, so it never converts
2026-06-17Omni’s grant narrowed to count anything the business “depends” on as production

So Sidero keeps the core open and puts the new commercial code in BSL right next to it. I don’t hold that against them, somebody has to pay for that 90%. It does tell me where to look when the next change comes.

Where I’d go, and what my note got wrong

Question four is whether an exit can start from where I am. The machine config is YAML, and talosctl etcd snapshot gives a plain etcd snapshot. Moving a node onto my own build should be talosctl upgrade --image with my installer, but I haven’t tested that. Leaving Talos entirely means reinstalling each node, because there’s no in-place path to another OS.

So I checked my note’s list of Talos properties against Flatcar and NixOS as well. Two of my Talos claims didn’t survive. There’s no dm-verity and no composefs in Talos, and “no drift” is too strong, because talosctl edit machineconfig changes a live node without touching Git.

TalosFlatcarNixOS
Read-only OSsquashfs, verified only with Secure Boot/usr with dm-verity, / writablestore mounted ro, not verified
Atomic update, rollbackA/BA/Bgenerations
No shell, no sshdyessshd on by defaultshell present, sshd off
Declarativeyes, API edits driftfirst boot onlyyes, nix-env drifts
Secure Boot, TPMboth, opt-inTPM onlyTPM in-tree, Secure Boot via Lanzaboote
Ephemeral, resetyespersistent, flatcar-resetopt-in, no reset command

Nothing else on that table does what Talos does on a Kubernetes node, which is why my nodes run it.

My note priced the exit at a registry mirror. The real list is discovery switched off, an imager build per release or an Image Factory to run, and a new name if I ever hand the build to someone else.