Third-Party Attributions
SysDeck integrates with external tools and plugins. Each
integration invokes the external tool as a separate process —
cockpit.spawn in the Cockpit plugin edition, fixed-argv spawns from
the web console's bridge modules — and 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.
v0.0.35 — Jellyfin, Photos, Remote FS backends
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)
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.