This month, we’re highlighting Seabird, a native open-source desktop client for Kubernetes. Although currently in alpha, it’s already receiving positive feedback as the overarching goal for the project and client itself is to simplify exploring your Kubernetes cluster resources.
Part of its appeal is its lack of bloat, with the client written in Go (93.6% of its code according to GitHub with the rest mostly CSS), and “native” in the sense it uses GTK, the cross-platform open source development tool, maintained by the GNOME project and its community, which is used by many open source apps and Linux distributions to create graphical user interfaces.
At this point, you may be asking yourself whether we need another K8s client, and we’ll mention a few options, below, but, essentially, the growth in new K8s clients in recent years stems from what happened to Lens Desktop. Lens was originally an open-source client project with a huge user base but subsequently became proprietary and paid-for under its new owner, Mirantis.
We’ve mentioned Headlamp previously in our newsletter (which you can sign up for here). Headlamp is an extensible web UI for Kubernetes that benefits from being a CNCF Sandbox Project. It can be set up as either a desktop client or deployed in-cluster and accessed via web UI. Its main selling point is a plugin system for creating a custom setup for your org and applying RBAC controls to user permissions, which makes it appealing for platform engineering teams.
Around a year ago, we also saw aptakube released when Guilherme Oenning announced he was quitting his day job as a platform engineer to make a K8s multi-cluster desktop client. Initially, this required a $100 one-off license, which has settled down to $89 for a perpetual license. At launch, aptakube’s main selling features included:
Lower memory and CPU usage - aptakube was developed using the Tarui framework and Rust in contrast to many of the clients built using Electron.
Multi-cluster support - the ability to connect to multiple clusters simultaneously and see all the pods in the same view is particularly beneficial for anyone using mirrored clusters across multiple regions.
Aggregated log views - features the ability to stream logs from all pods that are in a deployment, service, DaemonSet, and so on.
Terminal - aptakube uses a terminal that runs a shell and not a web emulator or Web UI.
As mentioned, Lens Desktop (sometimes called Open Lens) is a popular desktop client that boasts over a million users. Open Lens started life as an open source project in 2020 but was snapped up by Mirantis in the same year. Mirantis rightly recognized its potential to eliminate a lot of the complexity of administering Kubernetes. However, since the acquisition, the tension between the initial open source approach and commercial plans has increased.
You can see this reflected in comments around Oenning’s decision to work full-time on aptakube. As one Reddit user quipped in response to his announcement in 2023: “I'm using Lens [Desktop]. No point in using this being overpriced, IMHO.” While another responded with, “Good luck with betting on Mirantis. They’ll continue peeling back features, and soon enough, you'll be paying.”
Since 2020, Open Lens has gradually moved towards a commercial model with a number of sudden, unpopular additions, for example, in May 2022, an unskippable login was suddenly forced on users.
Meanwhile, many features were stripped from the open source edition and reserved for the paid-for versions, such as a pod log viewer and container executable features. Over time, this has made the OSS version less and less useful to engineers who initially saw it as a way to contribute to and support an open source tool intended to benefit all K8s users.
The reasoning for the feature-stripping was around maintenance costs, but, as is often the case when an open source product is mainly supported by one company, it also nudged more users of the open source version to pick up the commercial Lens Pro edition for $249 a year per seat.
Ultimately, it wasn’t long before the open source version of Lens Desktop was dropped entirely and officially retired. The project announced that Open Lens was no longer going to be maintained, and any future contributions would need to work through the Lens API on the Mirantis-supported proprietary Lens Desktop.
Seabird is a response to the loss of Open Lens to the community. Discussing the release on Hacker News at the end of January, Jakob Gillich, the main developer behind the client, says he built Seabird as a replacement for open source Lens Desktop. Partly, because he felt there were some “long-standing issues with [Lens],” but also because Mirantis decided to ‘retire’ the open source version and “this is one piece of software I think needs to be open.”
Speaking to Jacob Gillich, Seabird’s project lead via email, Jacob says they have no formal roadmap at this early stage. “Our plans are to build the best Kubernetes desktop app we can while keeping the code open source and funding a few developers (including myself) to work on it.”
As far as features are concerned, Seabird doesn’t have the same depth as Open Lens did when it was open source, but as Jacob explains: ”a great user experience is more important than cramming the maximum number of features into a limited space.”
Gillich has indicated that when the product is released, he is likely to ask users to purchase an optional annual subscription at a low cost. In his announcement, he suggested “something like $20/year.” Although, at the time, he acknowledged that he hadn’t thrashed out all the details yet. In a recent email exchange, Jacob explained in more detail, indicating that if Seabird can generate enough income to fund a small team of developers, he’d “be perfectly happy.” No paid support option is live yet, but the project does plan to introduce a paid subscription that gives users direct priority support in return.
Importantly, Jacob has confirmed that everyone will still be able to use the full software for free, but he hopes that a small percentage will pay for it simply because they like the software and want to support it.
Client downloads for all supported operating systems are available with each release (currently Linux, Windows, and MacOS). Windows and MacOS editions have simple .msi and .dmg installers, respectively, but for Linux, the project recommends downloading the official Flatpak from Flathub. Alternatively, you can build from source for Fedora- and Debian-based distributions:
sudo dnf install gtk4-devel gtksourceview5-devel libadwaita-devel gobject-introspection-devel glib2-devel vte291-gtk4-devel golang
sudo apt install libgtk-4-dev libgtksourceview-5-dev libadwaita-1-dev libgirepository1.0-dev libglib2.0-dev-bin libvte-2.91-gtk4-dev golang-go
To create the embedded resource file required, you must run:
go generate ./...
And then build
go build
Once installed, clicking 'New Cluster' on the client's splash screen enables you to add a cluster to the client by filling in a few fields: a cluster name, host details, and authentication method, followed by selecting an appropriate kubeconfig file to load for cluster access.
When we spoke to the project, Seabird was currently working on terminal support to enable admins to execute into containers, which became part of the 0.1 release. At this point, Jacob says, “we'll have all basic functionality covered, but it remains to be seen whether we'll add some of Open Len's advanced features, such as Prometheus or Helm integration,” Jacob told us. Jacob also says they are currently leaning towards only supporting Kubernetes-native APIs, but that it's open for discussion within the community. If you’d like to join the community around Seabird, you can keep up-to-date with developments via the official site, and you can download the latest releases, with versions for Linux, Windows and Mac, from the GitHub repository.
UPDATE - Seabird 0.2 was released at the beginning of March along with a development blog detailing the new features, which include column sorting, some responsive and platform design work and a Resources Editor providing API references.
Seabird is released under the Mozilla Public License v2.0.
GitHub: https://github.com/getseabird/seabird
Official site: https://getseabird.github.io/
Get expert advice on the right cloud-native technology for your specific use case—Book a call today!