Supported Platforms & System Requirements
Swarmfile ships desktop installers for macOS, Windows, and Linux, plus command-line tools with each. This page lists what runs where, what each installer includes, and the limits worth knowing before you plan a deployment.
At a glance#
| Platform | Architectures | Installer | Minimum OS |
|---|---|---|---|
| macOS | Universal (Apple Silicon + Intel) | Swarmfile.pkg (full install), Swarmfile.dmg (app only - no service or PATH setup) | macOS 11.0 |
| Windows | x64, ARM64 | Swarmfile-Setup.exe / Swarmfile-x64-Setup.exe (bundled), Swarmfile.msi / Swarmfile-x64.msi (bare, for IT) | Windows 10 or Windows 11 |
| Linux | x86_64 only | swarmfile-amd64.deb | Ubuntu 22.04+ or an equivalent current Debian-based distro |
Download them from swarmfile.com/download, or ask for the stable releases.swarmfile.com/latest/... URLs for a scripted install.
macOS#
- One universal build for Apple Silicon and Intel; macOS 11.0 or later, enforced by the installer.
- Use the
.pkg: it installs the Desktop App, the engine as a LaunchAgent, thego-nfsv4helper, and symlinks for every CLI tool into/usr/local/bin. - The
.dmginstalls the Desktop App, whose bundle carries the engine, the runner, and the CLI binaries - but it doesn't set up the engine's LaunchAgent service, thego-nfsv4mount helper, or the/usr/local/binsymlinks, so the engine isn't running as a service and the CLI isn't onPATH. On first launch the tray opens Diagnostics with the Reinstall action so one click puts them in place. - Mounting is kext-free: Swarmfile bundles a patched FUSE-T, so there is no kernel extension, no Recovery Mode step, and no system-extension approval on Apple Silicon. A legacy macFUSE build path exists in the codebase but is not what the public installer ships.
- macOS 15+ additionally requires Local Network permission for LAN discovery; the app asks for it, and headless engines running outside the app bundle need to inherit it (or run as a LaunchDaemon). See Network Requirements.
- Installers are signed with a Developer ID and notarized/stabled.
Windows#
- x64 and ARM64 builds; Windows 10 or Windows 11. Both install per-machine into
C:\Program Files\Swarmfileand add that folder to the machinePATH, so the CLI is available to every account. - Use the bundled
Setup.exefor people: it chains WinFsp, the Visual C++ Redistributable, and the WebView2 runtime, skipping whatever is already present. Windows Server/VDI images usually need those three staged by your own tooling first. - Use the bare
.msifor scripted rollouts (msiexec /i Swarmfile-x64.msi /qn /norestart): it installs only the app and expects those prerequisites to be present. It checks for WinFsp and the VC++ Redistributable during install and refuses with a message naming whichever is missing, rather than failing later with a side-by-side error; WebView2 isn't part of that gate, so stage it too. Repair and upgrade are never blocked by these checks. See Deploying to Your Team. - Two Windows-specific behaviors worth knowing:
- Symlink creation is refused on the mount. Windows needs Developer Mode (or a specific privilege) for an unprivileged process to create symlinks, so Swarmfile refuses consistently instead of failing for some users; reading, following, and listing symlinks all work.
- PowerShell's
Remove-Itemcannot delete a directory on the mount;cmd'srmdir, Explorer, and Win32RemoveDirectorywork normally. This is a known difference in what the cmdlet does on its way in, not a filesystem contract bug.
- Release builds are Authenticode-signed.
Linux#
- x86_64 only. The
.debrequireslibwebkit2gtk-4.1-0,libgtk-3-0, andlibfuse2; install it withaptand the dependencies resolve normally. - It installs per-user systemd units (
swarmfile-engine,swarmfile-tray) enabled globally, so new logins start them with no extra action; a user already logged in needs to log out and back in (or start the units) for them to take effect. The Desktop App unit is conditioned on a graphical session, so it does nothing on a headless box. - The
.debdoes not touch your firewall; on a host with a default-deny inbound policy, allow UDP from the local subnet - see Linux firewalls. .rpmis not published today. The package is built and validated internally; if you run RHEL/Fedora/OpenSUSE, talk to us about a supported.rpmpath.
Hardware and disk#
There is no formal RAM or CPU minimum: the engine is a native service, and the mount is a filesystem driver, both modest by desktop standards. The numbers that matter are disk-related:
- Local cache: 10 GiB by default (
cache_max_bytes). Files you touch are cached locally and evicted as the cache fills; it is not a copy of the project. Adjust it in the Desktop App's settings orswarmfile cache set <GiB>. - The mount reports at least 1 GiB of free space to applications even when the cache is full but evictable, so a "disk full" error from your app reflects local disk pressure, not the project's size.
- A seed/NAS node is different: it pins whole projects, so size its disk for the projects it serves. The sample seed config suggests a 100 GiB cache as a starting point and raising it to 1 TiB or more on a capable NAS.
- Project metadata, not file bytes, has a per-project limit of roughly ten million files and versions combined - very hard to reach unless you keep every version of a very large tree forever. See Project storage limit.
File and object size limits#
Content is chunked (FastCDC, 256 KiB-4 MiB chunks) and manifests are segmented once they grow past ~40,000 chunks, so a file on the mounted drive has no practical small size cap - multi-terabyte files work; the manifest structure extends rather than truncating. Two specific ceilings are worth planning around:
- git-LFS objects: 256 GiB maximum. A single LFS object beyond that is refused. Stock
git lfs pushalso runs into the provider edge's ~100 MB request cap before then, which is why large pushes need the desktop transfer agent - see git-LFS. - Hub-mediated downloads assemble up to 900 manifest segments per read; segmented manifests keep large files readable, but a very large stock
git-lfsdownload over the hub can be refused where the desktop agent would succeed.
Platform capability differences#
The filesystem semantics are the same everywhere for ordinary work (create, read, write, rename, delete, locking). A short list differs by platform:
| Capability | macOS | Linux | Windows |
|---|---|---|---|
| Symlink creation | Yes | Yes | Refused (reading/listing works) |
| Extended attributes | Kept locally, not synced (cp -p/ditto work) | Adapter implemented (unit-tested; local-only) | N/A - use streams (streams do sync) |
| Alternate data streams | N/A | N/A | Yes (rename of a stream itself is refused) |
| Filtered/wildcard directory listing | App globs client-side | App globs client-side | Native filters verified |
| ACLs at the mount | Hub-enforced; ls shows mode bits | Hub-enforced; ls shows mode bits | Hub-enforced and projected as Explorer DACLs |
ditto | Works | N/A | N/A |
PowerShell Remove-Item on a directory | N/A | N/A | Fails (use cmd rmdir/Explorer) |
The full per-operation table, including the declared gaps (hard links, fcntl advisory locks, sparse files), is in Filesystem Compatibility & Conformance.
Where to go next#
- Release Channels & Updates - how installs update, staging vs production hosts, and reinstalling.
- Deploying to Your Team - silent install and MDM/GPO rollout.
- Network Requirements - the firewall allowlist before rollout.