SysDeck/THIRD_PARTY.md

17 KiB
Executable File

Third-Party Attributions

SysDeck integrates with external tools and plugins. Each integration invokes the external tool as a separate process via cockpit.spawn — no external code is bundled within the suite. The suite (MIT) and the external tools remain independent programs.

This file satisfies the attribution requirements of the licenses listed below and documents every external integration point — including the one vendored project in the master tarball (klanker-gate, below).


Vendored Project (master tarball only)

klanker-gate — the "Frosty Deno" LLM gateway (the AI Gateway module)

klanker-gate is not SysDeck's code. All credit belongs to its author, TykoDev. The master tarball vendors the upstream tree unmodified, as a sibling of the suite, under its own Apache-2.0 license; the suite's modules talk to it as a separate process over REST (same no-linking rule as every other entry in this file).

Field Value
Project klanker-gate ("Frosty Deno" LLM Gateway)
Author TykoDev
Source https://github.com/TykoDev/klanker-gate
License Apache-2.0 (full text kept at klanker-gate/LICENSE; notice kept at klanker-gate/ATTRIBUTION.md)
Vendored at klanker-gate/ in the master tarball, own version 0.9.0 (independent from SysDeck's version)
SysDeck additions klanker-gate/arch/ only (PKGBUILD, systemd unit, sysusers/tmpfiles, run wrapper, runbook) — zero upstream source changes
Modules sysdeck-klanker (cockpit edition: bridge/klanker.py + plugins/sysdeck-klanker/) and the web edition klanker bridge + AI Gateway panel — both are thin REST clients containing no upstream code
Integration REST against KLANKER_URL (default http://127.0.0.1:8080), Authorization: Bearer <KLANKER_ADMIN_TOKEN> — a separate process invoked over HTTP, never linked or embedded
License compat MIT suite + Apache-2.0 vendored tree redistributed in source form with LICENSE and notices retained — compliant; the two programs remain independent works

Bundled Dependencies (shipped with the suite itself)

None. The suite is self-contained MIT-licensed code with no vendored third-party libraries. (The master tarball separately vendors the klanker-gate project — see the section above; it is a sibling tree, not part of the suite.)


External Tool Integrations (invoked via cockpit.spawn)

These tools are called as separate processes. They must be installed on the target system for their corresponding module to function. Each module fails closed with an install hint when its tool is absent.

Prometheus — Monitoring & Log Pipeline

Field Value
Module cockpit-prometheus
Tool Prometheus server / pushgateway
License Apache-2.0
Author Prometheus Authors
Source https://github.com/prometheus/prometheus
Install pacman -S prometheus
Integration cockpit.spawn(["python3", "-m", "sysdeck.bridge.prometheus", "push-log"])
License compat MIT calling Apache-2.0 via subprocess — independent programs

Grafana — Dashboards & Visualization

Field Value
Module cockpit-grafana
Tool Grafana server
License AGPL-3.0
Author Grafana Labs
Source https://github.com/grafana/grafana
Install pacman -S grafana
Integration cockpit.spawn(["python3", "-m", "sysdeck.bridge.grafana", "dashboards"])
License compat MIT calling AGPL-3.0 via subprocess — independent programs

DB Engines — Database Control

Field Value
Module cockpit-db
Tool psql, mysql, sqlite3, and others
License PostgreSQL License (psql), GPL-2.0 (mysql), Public Domain (sqlite3)
Author PostgreSQL Global Dev Group, Oracle, SQLite Contributors
Source https://www.postgresql.org/, https://dev.mysql.com/, https://sqlite.org/
Install pacman -S postgresql mysql sqlite
Integration cockpit.spawn(["python3", "-m", "sysdeck.bridge.db", "summary"])
License compat MIT calling permissively-licensed CLIs via subprocess — independent programs

hwalert — Hardware Alert Aggregation

Field Value
Module Bridge helper only (panel integration pending)
Tool sensors, smartctl, mcelog
License MIT / LGPL-2.1+ (lm_sensors), GPL-2.0 (smartmontools), GPL-2.0 (mcelog)
Author Various
Source https://github.com/lm-sensors/lm-sensors, https://github.com/smartmontools/smartmontools
Integration cockpit.spawn(["python3", "-m", "sysdeck.bridge.hwalert", "summary"])
License compat MIT calling GPL/LGPL/MIT via subprocess — independent programs

Glances — System Monitor

Field Value
Module cockpit-glances
Tool glances CLI
License GPL-3.0
Author Nicolargo
Source https://github.com/nicolargo/glances
Install pip install glances
Integration cockpit.spawn(["python3", "-m", "sysdeck.bridge.glances", "snapshot"])
License compat MIT calling GPL-3.0 via subprocess — independent programs

lm_sensors — Hardware Sensors

Field Value
Module cockpit-sensors
Tool sensors CLI (from lm_sensors)
License MIT / LGPL-2.1+ (varies by component)
Author lm_sensors project
Source https://github.com/lm-sensors/lm-sensors
Install pacman -S lm_sensors
Integration cockpit.spawn(["python3", "-m", "sysdeck.bridge.sensors", "summary"])
License compat MIT calling MIT/LGPL — compatible

cockpit-sensors — Standalone Cockpit Plugin (reference)

Field Value
Module Referenced by cockpit-sensors (not bundled)
License MIT
Author ocristopfer
Source https://github.com/ocristopfer/cockpit-sensors
Note The suite provides its own sensor rendering panel. The standalone cockpit-sensors plugin may be installed separately via the in-suite 3rd-Party Modules panel (v0.0.46+, see plugins/sysdeck-modules/ and bridge/modules3p.py). The legacy cockpit-module-pull.sh script remains as a CLI fallback.

sysbench — System Benchmark

Field Value
Module cockpit-benchmark
Tool sysbench CLI
License GPL-2.0
Author Alexey Kopytov
Source https://github.com/akopytov/sysbench
Install pacman -S sysbench
Integration cockpit.spawn(["python3", "-m", "sysdeck.bridge.benchmark", "run-cpu"])
License compat MIT calling GPL-2.0 via subprocess — independent programs

cockpit-benchmark — Standalone Cockpit Plugin (reference)

Field Value
Module Referenced by cockpit-benchmark (not bundled)
License MIT
Author ealier
Source https://github.com/ealier/cockpit-benchmark
Note The suite provides its own benchmark panel. The standalone cockpit-benchmark plugin may be installed separately.

pacman / dnf / apt — Package Manager

Field Value
Module cockpit-packages
Tool pacman (Arch), dnf (Fedora/RHEL), apt (Debian/Ubuntu)
License GPL-2.0+ (pacman), GPL-2.0+ (dnf), GPL-2.0+ (apt)
Author Pacman Development Team, RPM project, Debian project
Source https://archlinux.org/pacman/, https://github.com/rpm-software-management/dnf, https://salsa.debian.org/apt-team/apt
Install Pre-installed on respective distros
Integration cockpit.spawn(["python3", "-m", "sysdeck.bridge.packages", "summary"])
License compat MIT calling GPL-2.0+ via subprocess — independent programs

cockpit-identities — Standalone Cockpit Plugin (reference)

Field Value
Module Referenced by cockpit-auth identities extension (not bundled)
License LGPL-2.1
Author cockpit-project
Source https://github.com/cockpit-project/cockpit-identities
Note The suite's auth identities enumeration invokes the same underlying tools (ssh-add, pkcs11-tool, klist). The standalone cockpit-identities plugin may be installed separately via the in-suite 3rd-Party Modules panel (v0.0.46+, see plugins/sysdeck-modules/ and bridge/modules3p.py).

OpenSSH — SSH Key Enumeration

Field Value
Module cockpit-auth (identities)
Tool ssh-add, ssh-keygen
License BSD-2-Clause
Author OpenBSD project
Source https://www.openssh.com/
Integration cockpit.spawn(["python3", "-m", "sysdeck.bridge.auth", "ssh-keys"])
License compat MIT calling BSD-2-Clause — compatible

MIT Kerberos — Kerberos Principal Enumeration

Field Value
Module cockpit-auth (identities)
Tool klist
License MIT (Kerberos)
Author MIT Kerberos Consortium
Source https://web.mit.edu/kerberos/
Integration cockpit.spawn(["python3", "-m", "sysdeck.bridge.auth", "kerberos"])
License compat MIT calling MIT — compatible

External Tools Used by Pre-existing Modules (v0.0.10 and earlier)

Listed for completeness. All invoked as separate processes.

Tool Module License Author Source
podman cockpit-containers Apache-2.0 containers/podman https://github.com/containers/podman
nft cockpit-firewall GPL-2.0 netfilter project https://git.netfilter.org/nftables
lynis cockpit-integrity GPL-3.0 CISOfy https://github.com/CISOfy/lynis
ss cockpit-netsec GPL-2.0 iproute2 project https://git.kernel.org/pub/scm/utils/iproute2/iproute2
kubectl cockpit-mesh Apache-2.0 Kubernetes https://github.com/kubernetes/kubernetes
lsblk cockpit-vault GPL-2.0 util-linux https://git.kernel.org/pub/scm/utils/util-linux/util-linux
fwupdmgr cockpit-firmware LGPL-2.1+ fwupd project https://github.com/fwupd/fwupd
tpm2_pcrread cockpit-firmware BSD-3-Clause tpm2-software https://github.com/tpm2-software/tpm2-tools
kata-runtime cockpit-kata Apache-2.0 kata-containers https://github.com/kata-containers/kata-containers
mkosi cockpit-builder LGPL-2.1+ systemd project https://github.com/systemd/mkosi
mkarchiso cockpit-builder GPL-3.0 Arch Linux https://gitlab.archlinux.org/archlinux/archiso
vmdb2 cockpit-builder GPL-3.0+ LVM team (Debian) https://gitlab.com/lvm-team/vmdb2
lb (live-build) cockpit-builder GPL-3.0+ Debian Live team https://salsa.debian.org/live-team/live-build
pkcs11-tool cockpit-auth MIT (OpenSC) OpenSC project https://github.com/OpenSC/OpenSC

v0.0.35 — Jellyfin, Photos, Remote FS backends

Tool Module License Author Source
jellyfin cockpit-jellyfin GPL-2.0 Jellyfin contributors https://github.com/jellyfin/jellyfin
photoprism cockpit-photos MIT PhotoPrism contributors https://github.com/photoprism/photoprism
piwigo cockpit-photos GPL-2.0 Piwigo contributors https://github.com/Piwigo/Piwigo
lychee cockpit-photos MIT LycheeOrg https://github.com/LycheeOrg/Lychee
occ (Nextcloud Memories) cockpit-photos AGPL-3.0 pulsejet (memories) + Nextcloud https://github.com/pulsejet/memories
librephotos cockpit-photos MIT LibrePhotos contributors https://github.com/LibrePhotos/librephotos
ceph cockpit-remotefs LGPL-2.1 Ceph contributors https://github.com/ceph/ceph
gluster cockpit-remotefs GPL-2.0 GlusterFS contributors https://github.com/gluster/glusterfs
moosefs-cli cockpit-remotefs GPL-2.0 MooseFS contributors https://github.com/moosefs/moosefs
beegfs-ctl cockpit-remotefs BeeGFS EULA (free) BeeGFS / NetApp https://www.beegfs.io/
pvfs2-server cockpit-remotefs BSD-3 (OrangeFS) OrangeFS / Omnibond http://www.orangefs.org/

Intentionally excluded (per v0.0.35 directive)

Tool Reason
nfsd (NFS) Kernel-builtin; no cluster; no remote-FS-as-data-store semantics. Use cockpit-nfs.
amanda (AMANDA) Backup system (Advanced Maryland Automatic Network Disk Archiver), not a remote/distributed filesystem. Use a dedicated backup solution.

License Compatibility Summary

The suite is MIT licensed. All external tools are invoked as separate programs via cockpit.spawn (subprocess). Under copyright law, communicating with a separate program via pipes or sockets does not create a combined work. The licenses of the external tools impose obligations on the tools themselves, not on the suite.

For GPL-family tools (Glances, nft, lynis, sysbench, ss, lsblk, Grafana):

  • The suite does not link against, embed, or distribute their code.
  • The suite invokes them as subprocesses, which is permitted without imposing GPL on the calling program.
  • Users who distribute the suite alongside these tools should verify their own compliance with each tool's license terms.

For MIT/LGPL/BSD/Apache tools: fully compatible with the suite's MIT license.


v0.0.46 — In-Suite 3rd-Party Module Installer

Prior to v0.0.46, the only way to install third-party Cockpit modules (45Drives Navigator, cockpit-pacman, cockpit-identities, etc.) was the side-channel cockpit-module-pull.sh shell script. That script bundled a single blanket license prompt at the top and wrote a post-install text audit log — but it did not surface per-module license / credit / install-plan disclosures BEFORE the pull, and it had no per-module opt-out.

v0.0.46 replaces that flow with a first-class 3rd-Party Modules panel (plugins/sysdeck-modules/) backed by a Python bridge helper (bridge/modules3p.py). Each catalog entry declares its license, author, source URL, and install hook. The panel renders all four fields INLINE in every row, right next to a 1-click Install button — clicking Install is the operator's acceptance of the inline-displayed license. No modal, no separate confirmation step.

The bridge itself refuses silent installs (no --accept-license=1 ⇒ license-not-accepted) as a guard against malicious callers. The JS always passes that flag because the license is rendered inline next to the button — the click IS the acceptance gesture.

Every install / uninstall is appended to /etc/cockpit/MODULE_LICENSES.log as a JSON record. Legacy plain-text lines from cockpit-module-pull.sh are preserved as {raw: ...} records, so a single audit view shows both old and new entries.

Catalog entries (v0.0.46)

Module License Author Source Kind
cockpit-machines LGPL-2.1 Cockpit Project https://github.com/cockpit-project/cockpit-machines pacman
cockpit-podman LGPL-2.1 Cockpit Project https://github.com/cockpit-project/cockpit-podman pacman
cockpit-storaged LGPL-2.1 Cockpit Project https://github.com/cockpit-project/cockpit-storaged pacman
cockpit-identities LGPL-2.1 Cockpit Project https://github.com/cockpit-project/cockpit-identities git
cockpit-navigator GPL-3.0 45Drives https://github.com/45Drives/cockpit-navigator deb-tar
cockpit-file-sharing GPL-3.0 45Drives https://github.com/45Drives/cockpit-file-sharing deb-tar
cockpit-zfs-manager GPL-3.0 45Drives https://github.com/45Drives/cockpit-zfs-manager git
cockpit-pacman GPL-3.0 pfeifferj https://github.com/pfeifferj/cockpit-pacman git
cockpit-sensors MIT ocristopfer https://github.com/ocristopfer/cockpit-sensors tarball
cockpit-benchmark MIT ealier https://github.com/ealier/cockpit-benchmark git

Adding a new module to the catalog is a single dict append to CATALOG in bridge/modules3p.py. No per-module code branches.

License compatibility

All entries are invoked as separate processes via cockpit.spawn. The suite (MIT) does not link against, embed, or distribute any of these modules. Under copyright law, communicating with a separate program via pipes or sockets does not create a combined work. The licenses of the upstream modules impose obligations on the modules themselves, not on SysDeck.

For GPL-family modules (cockpit-navigator, cockpit-file-sharing, cockpit-zfs-manager, cockpit-pacman): operators who distribute SysDeck alongside these modules should verify their own compliance with each module's license terms.

For MIT/LGPL/BSD/Apache modules: fully compatible with the suite's MIT license.