oysterAV
Linux security orchestrator — CLI-first backend with a thin GTK4 GUI.
ClamAV spine, pack adapters, quarantine, scheduling — without reimplementing engines.
Dashboard — posture cards, security news ticker, recent scans
Why oysterAV?
- Orchestrator, not engine — wraps ClamAV, rkhunter, Lynis, and friends (ADR-001)
- CLI owns security —
oyst-cliis the source of truth; the GUI is a client (ADR-002) - Full or Lite runtime — vendored tools under XDG, or host packages only (ADR-004)
- Host co-control — on-access blocking stays with ClamAV; oysterAV guides and responds (ADR-008)
Screenshots
| Scan | Reports |
|---|---|
| Profiles, paths, multi-pack progress | History, export, quarantine / resolve actions |
Settings — feeds, scan defaults, services, scheduling, packs
Prerequisites
- Python ≥ 3.12 and uv
- GUI: system GTK4 + libadwaita (PyGObject introspection)
Quick start
uv sync --extra all
uv run oyst-cli setup run --confirm --json
uv run oyst-cli status assess --json
uv run oyst-cli scan ~/Downloads --json
setup run can take several minutes on a cold machine (signatures / packs). Soft-failed steps (schedule, rkhunter) are non-fatal — check --json output.
Privileged helper install (install-privileged-helper) needs a root-owned
oyst_core prefix (distro package) or sudo uv run oyst-cli install-privileged-helper --dev
for a checkout. See docs/cli/reference.md.
./scripts/check.sh --quick # local validation
./scripts/check.sh --format # also enforce ruff format
GUI
uv sync --extra gui --extra dev
uv run oysterav
The GUI talks only through OystClient / oyst-cli serve — never runs security tools itself. See ADR-007 and the GUI↔CLI contract.
Architecture
| Package | Role |
|---|---|
oyst_core |
Packs, orchestrator, quarantine, RPC serve |
oyst_cli |
Full CLI (oyst-cli) |
oysterav |
Thin GTK4 / libadwaita client |
Decision log: docs/adr/README.md.
Pack runtime (Full mode, default)
Vendored upstream tools live under ~/.local/share/oysterav/runtime/:
uv run oyst-cli runtime status
uv run oyst-cli runtime install --all
uv run oyst-cli runtime update # ClamAV CDIFF updates
Lite mode uses host packages only (packaging/lite/README.md):
uv run oyst-cli config set runtime.mode lite
Packs
| Tier | Packs |
|---|---|
| Required | clamav, freshclam |
| Recommended | rkhunter, chkrootkit, lynis, clamonacc, firewall |
| Optional | maldet, unhide, fail2ban, fangfrisch |
Host package examples (Lite / clamd on the host):
# Debian/Ubuntu
sudo apt install clamav clamav-daemon rkhunter chkrootkit lynis
# Arch / CachyOS
sudo pacman -S clamav rkhunter chkrootkit lynis
# Fedora
sudo dnf install clamav clamav-update rkhunter chkrootkit lynis
On-access prevention with the host: operator guide.
Install from GitHub Releases
Prefer a system package so the privileged helper is root-owned under /usr
(getting started). Current install path:
assets on each GitHub Release.
| Channel | Status | Install |
|---|---|---|
| Debian/Ubuntu (.deb) | Available | Download oysterav_*_amd64.deb, then sudo apt install ./oysterav_*_amd64.deb |
| Fedora/RHEL (.rpm) | Available | Download oysterav-*-1.x86_64.rpm, then sudo dnf install ./oysterav-*.rpm |
| Flatpak (GitHub bundle) | Available | flatpak install --user ./oysterAV-*-x86_64.flatpak — also install a host .deb/.rpm for Polkit helper elevation |
| Wheel / uv (dev) | Available | Download the .whl or clone and uv sync --extra all |
| AUR (Arch / CachyOS) | Pending listing | Packaging prepared — see distro submit status |
| Fedora COPR | Pending listing | Spec prepared — see distro submit status |
| Flathub | Pending listing | Offline manifest prepared — see distro submit status |
| PyPI (CLI) | Pending publish | CLI discoverability only; not recommended for the privileged helper |
After install, verify freshness against GitHub Releases:
oyst-cli version --check
Full packaging notes: docs/packaging/release.md. Storefront status: docs/packaging/distro-submit.md.
Health / debug
uv run oyst-cli doctor --json
uv run oyst-cli status assess --json
uv run oyst-cli serve --foreground # RPC for the GUI
Docs
License
GPL-3.0-or-later — GNU General Public License v3 or later.
Metadata
Release files for oysterav 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| oysterav-0.2.2.tar.gz | 1.7 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oysterav-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.1 MB
Release files / oysterav-0.2.2.tar.gz
| Download URL | oysterav-0.2.2.tar.gz |
|---|---|
| Size | 1.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1d7707842bca1dc74bba5832a957d04305c5dd15275bc6083b2729d4d1c4ba6
|
|
BLAKE2b-256 checksum How to use checksums |
59ceec44df76c31da98cfa9633719e32256f75c641ba22b6b4593b0a6eac36b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / oysterav-0.2.2-py3-none-any.whl
| Download URL | oysterav-0.2.2-py3-none-any.whl |
|---|---|
| Size | 438.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eaa6129f1558f8236f444144977280311b4ef7716d09ba6c5ef6d907ebbc2d7d
|
|
BLAKE2b-256 checksum How to use checksums |
f87caf2de6742e368b96bbdd3905049538101126c86b8471ab1e50bc932fb782
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency log