A cross-platform WebDAV client for the web and desktop.
Use it in a browser or install the native desktop app on macOS or Windows. The same Vue 3 interface runs across platforms, while the desktop app adds direct WebDAV connections, OS keychain storage, and Finder / Explorer drag & drop.
First release: Web and desktop versions are ready to use. More features are planned.
- Browse and manage files on WebDAV servers
- Web app and native desktop apps from the same codebase
- macOS and Windows support
- Direct WebDAV connections from the desktop app
- Credentials stored in the OS keychain on desktop
- Finder / Explorer drag & drop
- CLI proxy for environments where browser access to WebDAV is restricted
- Shared Vue 3 UI across platforms
- TypeScript monorepo with platform-specific adapters
- Optional embed into a host app (static assets + runtime config)
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Desktop builds are available on the GitHub Releases page.
| Platform | Download |
|---|---|
| macOS | .dmg |
| Windows | .exe installer |
| Web | Run locally or deploy the web app |
The desktop application does not require Node.js, npm, Rust, or a separate browser.
The recommended package is the NSIS installer. It installs the application and handles WebView2 if it is not already available.
The application is distributed as a .dmg.
Public macOS builds need to be signed and notarized by Apple. Unsigned builds may show a Gatekeeper warning.
Requirements: Node.js and npm.
npm install
npm run build -w @webdav-client/core
npm run build -w @webdav-client/platform-api
npm run build -w @webdav-client/proxy
npm run devOpen:
http://127.0.0.1:5173
The development server includes the /api/dav proxy.
Build a host-oriented SPA (for example WebDAV FS APK):
npm run build:embed-assets
# → apps/web/dist-embed/
npm run copy:embed-assets -- /path/to/…/assets/clientDefaults come from apps/web/embed.webdavfs.json (uiBase: /~assets~/). The host can override them at runtime via /config-js.
For a generic static deploy, edit apps/web/embed.config.json and run:
npm run build:embed -w @webdav-client/web
# → apps/web/dist/Build the web app:
npm run build -w @webdav-client/webStart the proxy:
npx tsx apps/cli/src/cli.ts serve --url http://your-webdav-server:8080/The desktop app is built with Tauri 2.
Install Rust and the required Tauri platform dependencies.
Run the desktop app with hot reload:
npm install
npm run tauri:dev -w @webdav-client/desktopBuild a production desktop package:
npm run build:desktopBuild artifacts are generated in:
apps/desktop/src-tauri/target/release/bundle/
For desktop-specific notes, see apps/desktop/README.md.
.
├── apps/
│ ├── web/ # Vite web app
│ ├── cli/ # CLI proxy
│ └── desktop/ # Tauri desktop app
│
└── packages/
├── core/ # WebDAV protocol and core logic
├── platform-api/ # Platform abstraction
├── platform-web/ # Browser implementation
├── platform-tauri/# Tauri implementation
├── proxy/ # Node.js WebDAV proxy
└── ui/ # Shared Vue 3 UI
Build all packages:
npm run buildRun the desktop app:
npm run tauri:dev -w @webdav-client/desktopThe next major feature planned is file synchronization for the desktop app.











