███████╗██╗ ██╗███████╗████████╗███████╗███╗ ███╗ ██╔════╝ ╚██╗██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║ ███████╗ ╚███╔╝ ███████╗ ██║ █████╗ ██╔████╔██║ ╚════██║ ██╔╝ ╚════██║ ██║ ██╔══╝ ██║╚██╔╝██║ ███████║ ██║ ███████║ ██║ ███████╗██║ ╚═╝ ██║ ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
The dms system update command checks for pending updates and optionally upgrades your system using the package managers actually installed on the machine. It talks to APT, DNF / DNF5, Pacman, Paru, Yay, Zypper, rpm-ostree (Atomic / Silverblue-style deployments), and Flatpak — whichever combination is available — without going through the DMS compositor daemon for normal check and upgrade flows.
Listing and applying updates runs locally against those tools. You do not need dms running as a server for dms system update or dms system update --check. The optional --interval flag is the exception: it configures how often a running DMS server polls for updates.
DMS picks one primary system backend (the first candidate that reports itself as available) plus overlay backends:
rpm-ostree indicates an ostree-booted system so the transactional backend can take over), Pacman, Paru, Yay, Zypper, or rpm-ostree, depending on what is installed and what the environment reports.flatpak CLI is present.On Arch-based systems, Paru or Yay is preferred when installed so both repository and AUR updates can be discovered and upgraded in one flow. Plain Pacman covers official repos only.
Updates from each backend are merged into a single list; upgrades run per backend in sequence, only for packages that belong to that backend.
dms system update --check # list pending updates only
dms system update # list, then prompt; upgrade if you confirm
dms system update --noconfirm # upgrade without a prompt (also -y)
dms system update --dry # simulation only (no persistent changes)
dms system update --check --json # machine-readable listing
dms system update --no-flatpak # skip Flatpak overlay
dms system update --no-aur # skip AUR targets when using Paru/Yay
dms system update --interval 3600 # set server poll interval to 3600 seconds (needs running server)
--check--noconfirm / -y--dry--json--check, print JSON (backends, packages, count, error).--no-flatpak--no-aur--interval <seconds>sysupdate.setInterval RPC and exit; does not upgrade locally by itself.If standard input is not a TTY (for example in CI or a pipe), DMS refuses to apply upgrades unless you pass --noconfirm or only --check. Use --check for inventory scripts and --noconfirm when you intend unattended upgrades.
dms operations.When the compositor-side server is running, it exposes IPC such as sysupdate.getState, sysupdate.refresh, sysupdate.upgrade, and sysupdate.setInterval so the shell UI can show update status and coordinate upgrades. The dms system update CLI is a separate entry point aimed at terminals and scripts; --interval is the bridge that adjusts the server’s polling schedule while it is online.