On Sat, Sep 19, 2020 at 11:56 PM Vinícius Ferrão <ferrao@versatushpc.com.br> wrote:
Hello, I’m developing an application around Cockpit with my colleagues and I was wondering if there’s a way to consume Cockpit without our application being a plugin inside the Cockpit interface.

Our application is something like an HPC Cluster Manager, so it makes total sense to use Cockpit as the basis, there’s a lot of functionality built in, and the upstream development is just awesome. But as per consumer feedback it would be better to have a separate web interface instead of it being a plugin inside the Cockpit web interface.

I’m looking through the documentation and there’s the Cockpit API:
https://cockpit-project.org/guide/latest/development.html

I see that Cockpit can be embedded entirely in an external application, but this is not what we really want to do.

We want to do a new web interface, using IBM’s Carbon design guidelines with HPC in mind and not the system being managed, which is the vision of Cockpit as is. There’s this Deep Integration on the documentation and I think what we need is just this, but the documentation is lacking.

The point is: as today, is it viable to consume Cockpit with its API’s in a totally different frontend interface? So I can use things like: authentication, performance graphs, dashboards, user creation, logging, console terminal, etc?

It certainly is possible and a number of projects have done this. I've done a number of demos of this. Here's some links:

https://cockpit-project.org/blog/sso-oauth.html
https://cockpit-project.org/guide/133/embedding.html#embedding-components

Not only is it possible, but the protocols between the different parts of Cockpit (front end, cockpit-ws, cockpit-bridge, cockpit-ssh, authentication etc.) are all stable "APIs". The project aims and guarantees (via testing) that these protocols do not change.

In particular it is possible to:

 * Embed Cockpit in another application (see Foreman)

 * Replace the authentication mechanism:
https://github.com/cockpit-project/cockpit/blob/master/doc/authentication.md

 * Display just a single component (rather than the full shell)

 * Change the components that are displayed
 
 * Add custom components (obviously as decumented)

* Replace the default "shell" ... this is the frame/menu that loads the other components

It sounds like you want to do the last one ^^, is that correct?

You can do so by setting something like in /etc/cockpit/cockpit.conf

    [WebService]
    Shell = /mycomponent/index.html

Does that work for you?

Stef

--
Stef Walter (he / his)
Linux Engineering
Red Hat