Open-source project
cockpit-project/cockpit avatar
cockpit-project/cockpit

Cockpit: a sysadmin login session in a web browser

Cockpit is a web-based graphical interface for servers.

15,158 stars1,352 forksPythonLicense varies

At a glance

What is it?
Cockpit is a web-based graphical interface that runs on the server itself and drives the real Linux session underneath. This review covers what it does, how it is installed, and where it stops being the right tool.
Who is it for?
Adopt Cockpit if you administer a handful of Linux servers over SSH today and want a browser view of services, storage, networking, logs and containers without giving up the terminal. Skip it if you need fleet-wide configuration management, declarative state or audit trails, because Cockpit is an interactive session tool, not a configuration management system.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 5 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Cockpit actually is, and who it is for

Cockpit describes itself as "a sysadmin login session in a web browser". That phrasing matters more than the usual label of web control panel. The README states that Cockpit interacts directly with the operating system from a real Linux session, which means the browser is a front end onto the same machine state that a shell would see, not a separate configuration database that syncs outward.

The audience is the person who already has SSH access and root or sudo rights on a Linux server. The README lists the tasks it targets: starting containers, storage administration, network configuration and inspecting logs. All four are things a sysadmin would otherwise do by typing commands. Cockpit does not ask you to stop typing commands. The README says jumping between the terminal and the web tool is no problem, and gives a concrete example of the shared state: a service started via Cockpit can be stopped via the terminal, and an error that occurs in the terminal can be seen in the Cockpit journal interface.

That shared state is the whole pitch. If you have used a control panel that keeps its own inventory and drifts from the host, the distinction will be obvious. Cockpit is closer to a second view of the machine than to a management layer above it.

The mechanism: a host session, not a remote agent

The repository layout supports the claim in the README. The top level contains src/, pkg/, po/, test/, tools/, selinux/ and a containers/ directory, plus a Makefile.am and configure.ac, which is an autotools build rather than a Node project. The package.json file says so explicitly in its own description field: Cockpit is not a Node package, and the dependencies listed there are development-time dependencies that are not needed to build the tarball. React, PatternFly and xterm appear in that file because the browser interface is built with them, not because you install Cockpit through npm.

The Python side is visible in pyproject.toml, which declares a build backend at src/build_backend and a mypy configuration with a long list of modules that are ignored when missing, including dbus, libvirt, pika, pcp and gi. Those names are the integration surface: D-Bus for system services, libvirt for virtual machines, PCP for performance metrics, GObject introspection for the desktop client. The strict-typing overrides name modules such as cockpit.channels.http_channel, cockpit.channels.metrics, cockpit.channels.pcp and cockpit.channels.stream, so the channel abstraction is where the browser connection is handled.

One consequence of this design is worth stating plainly. Because Cockpit talks to the host it is installed on, the machine you are looking at in the browser is the machine running the web service. The README notes that you can add other machines that have Cockpit installed and are accessible via SSH and jump between those hosts, so a single Cockpit instance can act as an entry point to several servers. It is not an agent that reports into a central controller.

Installing Cockpit and opening the first session

The README does not carry installation steps itself. It points to an installation guide at cockpit-project.org/running.html and warns that some systems need extra work, with a link to the project FAQ section on installation. It also states that Cockpit is available in numerous Linux distributions and is usually packaged as cockpit. So the install command depends on your distribution, and the package name to look for is cockpit.

The README gives no command to copy, so the only instruction that can be quoted from it is the package name itself:

bash
cockpit

On distributions that use apt, install that package; on distributions that use dnf, install the same package name. After installation, the web service has to be running before a browser can reach it. The README does not name the systemd unit or the port in the text available here, so check the running guide for the service name and the URL to open on your distribution. What you should see after login is the overview screen shown in the README screenshots, with navigation into accounts, networking and the other areas.

There is a second, different way to get the interface. The project ships a Flatpak called Cockpit Client, published on Flathub as org.cockpit_project.CockpitClient, and the README says it includes SSH login support to Linux servers. That variant is useful when the machine you are sitting at is not the machine you want to administer, or when your desktop distribution does not package Cockpit.

For people extending Cockpit rather than using it, the README points to HACKING.md for the development environment and tests, and to a developer documentation wiki for the contribution process. Translations are handled in Weblate. None of that is needed to run the product.

Where Cockpit stops being the right tool

Cockpit is an interactive interface. Nothing in the README describes a configuration file that declares desired state, a plan-and-apply cycle, or a record of what changed and who changed it. If your problem is keeping forty servers identical, or proving after an incident that a firewall rule was changed on a specific date, Cockpit is the wrong layer. It gives you a session, and a session leaves no artifact beyond whatever the underlying system logs.

The second limitation is scope. Cockpit only manages what it has an integration for. The mypy overrides in pyproject.toml list dbus, libvirt, pika, pcp and gi as optional imports, which tells you the feature set is assembled from host services that may or may not be present. On a minimal server without those services, parts of the interface will not have anything to talk to. The README's own note that some systems need extra work during installation points in the same direction: this is not a single static binary that behaves identically everywhere.

A third point is operational rather than functional. Exposing a web login on a server adds an authentication surface that did not exist when the only way in was SSH. The README defers security matters to a separate SECURITY.md in the project's .github repository rather than covering them inline, so anyone deploying Cockpit should read that document before opening the port beyond a management network. The README does not describe a default network restriction, so treat reachability as something you configure deliberately.

How Cockpit differs from Webmin and from Ansible

The closest comparison in kind is Webmin, another browser-based administration interface for Linux servers. The difference in approach is what the interface is attached to. Webmin historically manages services through its own module set and its own configuration files. Cockpit, by its own description, is a session on the host: the README's example is that a service started in Cockpit can be stopped from the terminal, which only holds if both are looking at the same system state rather than at a panel-specific store. If you want one tool that owns the configuration of everything it manages, that is a different design goal from Cockpit's.

The comparison with Ansible is not really a comparison, because they solve different problems and the README makes no claim to overlap. Ansible describes desired state in playbooks and applies it across many hosts; Cockpit gives a human a live view of one host at a time, with the option to add more hosts over SSH and jump between them. A reasonable setup uses both: Ansible for the repeatable baseline, Cockpit for the interactive work that does not belong in a playbook, such as reading a journal during an incident or attaching storage.

There is also the Flatpak client as a third option in the same family. It is Cockpit's own answer to the case where the machine in front of you is not the machine you administer, and the README frames it as SSH login support rather than as a separate product.

Maintenance, licensing and what a version bump costs you

The repository is not archived and the last push was on 2026-09-21, so the project is being worked on now. Release cadence is visible in the recent tags: 367 on 2026-08-27, 366 on 2026-08-13, and 356.3 on 2026-08-13. The presence of both a fast-moving 36x line and a 356.3 release on the same day indicates that older series receive maintenance updates alongside the current one, which is what you want if you are pinned to a distribution version.

Upgrade cost depends on how you installed it. If Cockpit came from your distribution, upgrades arrive with the rest of the system and there is nothing separate to track. If you use the Flatpak client, updates follow Flathub. The project does not present a self-updating mechanism in the README, and the release notes live on the project blog rather than in the repository root, so anyone running a distribution build should read those notes before a major version jump.

On licensing, the README lists five licenses: LGPL-2.1 or later, GPL-3.0 or later, BSD-3, CC-BY-SA-3.0 and MIT. That is a per-component arrangement, not a single license for the whole tree, and the LICENSES/ directory at the top level holds the texts. The repository metadata supplied here records the license as unknown, which conflicts with the README and is worth resolving against the LICENSES/ directory before you rely on any particular term. If you plan to redistribute Cockpit inside a product, or to link against its Python modules, check which files carry which license; this is a factual reading of the README, not legal advice.

Editorial conclusion

Adopt Cockpit if you administer a handful of Linux servers over SSH today and want a browser view of services, storage, networking, logs and containers without giving up the terminal. Skip it if you need fleet-wide configuration management, declarative state or audit trails, because Cockpit is an interactive session tool, not a configuration management system. Verify first that your distribution packages cockpit in the version you want and that the web port is reachable only from where you intend; the README points to the running guide and FAQ for per-system installation details rather than listing them itself.

Frequently asked questions

How do I install Cockpit on Ubuntu?

Cockpit is packaged by most distributions under the name cockpit, so on Ubuntu it comes from the distribution repository rather than from a separate download. The README points to cockpit-project.org/running.html for the installation guide and notes that some systems need extra work.

How do I install Cockpit on an Ubuntu server?

The same distribution package applies on a server install: look for the cockpit package and follow the running guide linked from the README. The README also warns that some systems need extra steps, with a link to the project FAQ section on installation.

How do I install Cockpit?

The README does not list install commands. It states that Cockpit is available in numerous Linux distributions and is usually packaged as cockpit, and it links to an installation guide at cockpit-project.org/running.html.

How do I use Cockpit on Linux?

You log in to the server through a browser and work against the real Linux session underneath. The README says a service started via Cockpit can be stopped via the terminal, and errors seen in the terminal show up in the Cockpit journal interface.

How do I use Cockpit on Fedora?

Fedora is one of the distributions where Cockpit is packaged, and the package name to look for is cockpit. The README does not give Fedora-specific steps, so use the running guide and FAQ links it provides for anything beyond the package install.

Official sources

  1. cockpit-project/cockpit on GitHub
  2. Issues
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/cockpit-project-cockpit.svg)](https://hysenlabs.com/projects/cockpit-project-cockpit)