ZFSMgr is a full OpenZFS GUI manager built with C++17 + Qt6 for Linux, macOS, and Windows.
If you are looking for a ZFS GUI manager, OpenZFS GUI, remote ZFS manager, or a desktop ZFS administration tool, ZFSMgr is designed to cover the whole workflow from one interface:
- pools,
- datasets,
- snapshots,
- properties,
- delegated permissions,
- encryption,
- replication flows,
- and remote administration over SSH.
ZFSMgr is not a simple pool browser. It is intended to be a complete graphical manager for ZFS and OpenZFS environments, including remote pools and datasets on other machines.
This software is currently a BETA release and is provided "AS IS".
- It may contain defects, regressions, data-loss scenarios, or incomplete behaviors.
- Use it at your own risk, especially on production systems or critical data.
- The author (Eladio Linares) provides no warranty and assumes no liability for direct or indirect damage, data loss, service interruption, or any other consequence derived from use.
Legal references:
- GNU GPL v3, Section 15: Disclaimer of Warranty.
- GNU GPL v3, Section 16: Limitation of Liability.
- Current beta line: 0.9.9rc4: https://github.com/Nazari/ZFSMgr/releases
ZFSMgr is designed for users who want a real GUI for ZFS administration without giving up low-level OpenZFS functionality.
It gives you:
- a dual source/destination view for comparing and operating on two ZFS trees at once,
- remote pool and dataset management from the same desktop app,
- inline editing of dataset and pool properties directly in the treeview,
- permission delegation management with
zfs allow/zfs unallow, - snapshot-oriented workflows such as copy, clone, diff, rollback and level/sync,
- a graphical pool builder with OpenZFS-aware VDEV validation,
- encrypted dataset creation and mount flows with passphrase prompts when
keylocation=prompt, - and persistent operational logs with secret masking.
- Imported and importable pool discovery.
- Pool import/export.
- Pool creation with device selection and options.
- Device tree for available block devices, including whole disks and partitions.
- OpenZFS-aware pool layout builder:
- direct devices at pool root for implicit stripe,
mirror,raidz,raidz2,raidz3,- top-level classes such as
log,cache,special,dedup,spare.
- Live
zpool createpreview with invalid layouts highlighted in red. - macOS-specific filtering for internal APFS/synthesized system disks.
- Mount-state controls in the pool-creation dialog to unmount devices before use.
- Pool destroy with confirmation.
- Pool history view.
- Pool maintenance actions from the GUI:
zpool synczpool scrubzpool trimzpool initialize
- Pool information and feature visibility directly in the treeview.
- Create dataset, snapshot and zvol.
- Create encrypted datasets with passphrase confirmation when using:
encryption=onoraes-*,keyformat=passphrase,keylocation=prompt.
- Rename and delete datasets.
- Context-aware delete actions for:
- dataset,
- snapshot,
- zvol.
- Mount/unmount operations.
- Mount encrypted datasets by prompting for the passphrase and loading the key before mount when required.
- Snapshot rollback.
- Snapshot selection in source/destination trees.
- Snapshot holds:
- create hold,
- inspect hold timestamp,
- release hold.
- Dataset, pool and snapshot properties shown inline in the treeview.
- Visual property groups per scope:
- pool,
- dataset,
- snapshot.
- Reorder visible properties by drag and drop.
- Persist visible properties and order in configuration.
- Inline editing of property values.
- Inline inheritance controls for inheritable properties.
- Property column count configurable from the tree header context menu.
- Independent column widths for top and bottom trees, with persistence in
config.ini.
ZFSMgr includes graphical management of delegated ZFS permissions per dataset.
Current permission features include:
Permisosnode in dataset trees.- Delegation management based on:
zfs allowzfs unallow
- Support for:
- users,
- groups,
everyone,- local / descendant / local+descendant scopes,
- creation-time permissions,
- permission sets (
@setname).
- Inline permission editing in treeview grids.
- Draft-based permission editing with batch application through
Aplicar cambios. - Remote user/group enumeration on Linux, FreeBSD and macOS.
- Windows excluded from permission UI in this phase.
- Encryption submenu for encryption-root datasets.
Load key.Unload key.Change key.- Prompted password entry when
keylocation=prompt. Create datasetandMountintegrate passphrase prompts instead of expecting interactive shell input.
ZFSMgr uses a source / destination model directly in the main window.
That enables:
- snapshot copy (
zfs send/zfs recv), - snapshot clone,
zfs diffintegration,- level / sync operations,
- advanced breakdown / assemble operations,
From DirandTo Dirflows.
The Diff action includes a dedicated results window with grouped tree output for:
- added files,
- deleted files,
- modified files,
- renamed files.
- Combined in-app log.
- Persistent rotating logs.
- Secret masking (
[secret]). - Command previews and execution traces.
- Busy-state locking for unsafe concurrent actions.
- Async refresh safeguards to avoid stale refresh results being applied to the wrong connection.
ZFSMgr is designed to manage local and remote OpenZFS systems.
You can work against:
- local Linux systems,
- remote Linux systems,
- remote macOS systems,
- remote Unix-like systems,
- Windows hosts with the required OpenZFS tooling and compatible shell/runtime.
This makes ZFSMgr suitable as a remote ZFS GUI manager for homelabs, NAS hosts, backup servers and multi-machine OpenZFS administration.
For Windows targets, ZFSMgr validates runtime prerequisites so operations can run safely:
- OpenZFS tools availability (
zfs,zpool), including common install paths. - Shell/runtime availability and compatibility (PowerShell and optional MSYS64/MINGW tooling when needed).
- Command path resolution and fallback behavior for mixed Unix/Windows command flows.
- Mount semantics handling, including effective
driveletterresolution.
If required components are missing, the UI reports the situation clearly in connection status and logs.
- Left panel:
- connections,
- source/destination actions,
- global quick operations.
- Right panel:
- top tree =
Origen, - bottom tree =
Destino.
- top tree =
- Bottom area:
- combined log.
Important characteristics:
- The effective detail selection is driven by Origen / Destino checks, not by a simple row click.
- Top and bottom trees preserve their own navigation state.
- Creation dialogs stay open on execution failure so entered values can be corrected and retried.
- Tree headers include context actions for:
- resize this column,
- resize all columns,
- choose property column count.
Aplicar cambiosbatches real pending commands and shows them in a tooltip before execution.
- User config location:
~/.config/ZFSMgr/on Linux (Qt-equivalent path on macOS/Windows). - Main config file:
config.ini. - One file per connection:
conn_*.ini. - Master password used to protect credentials in configuration.
Persistent configuration includes, among other things:
- connections,
- selected source/destination trees,
- visible property groups,
- inline property order,
- tree column widths,
- UI state relevant to the dual-tree workflow.
- CMake >= 3.21
- C++17-capable compiler
- Qt6 (
Core,Gui,Widgets) - OpenSSL (especially relevant on Windows/Qt environments)
./scripts/build-linux.shExpected binary: build-linux/zfsmgr_qt
./scripts/build-linux.sh --appimageWhat it does:
- builds a Release binary,
- creates an AppDir,
- bundles Qt dependencies with
linuxdeploy+linuxdeploy-plugin-qt, - generates
ZFSMgr-0.9.9rc4-x86_64.AppImage.
Notes:
- Current script target:
x86_64. - Requires
curland a working Qt toolchain in PATH (qmake6/qmake). - The script auto-downloads
linuxdeploytools into.tools/appimage/.
./scripts/build-macos.shThe script builds the binary and can also generate an unsigned .app bundle.
.\scripts\build-windows.ps1The script auto-detects toolchain/Qt and builds under build-windows.
Installer generation is now explicit:
.\scripts\build-windows.ps1 --innoWithout --inno, the script only builds the application and skips Inno Setup packaging. This is also the behavior expected in GitHub Actions.
On Windows, zfsmgr_qt.exe is built with an embedded UAC manifest and must be started with administrator privileges.
After building, run the generated binary for your platform and unlock it with the master password.
OpenZFS GUI, ZFS GUI manager, remote ZFS manager, ZFS desktop manager, graphical ZFS administration, ZFS snapshot manager, ZFS permissions GUI, zpool GUI, dataset manager, OpenZFS remote administration.


