The official desktop client for dosya.dev - sync, upload, and manage your files.
- Bidirectional file sync - 5 sync modes: two-way, push, push-safe, pull, pull-safe
- Conflict detection - 3-way reconciliation with resolution strategies
- Dashboard - Storage usage, recent files, activity feed
- File browser - Navigate, upload, download, and manage files
- Shared links - Create and manage share links with passwords and expiry
- Team collaboration - Manage workspace members and roles
- File requests - Receive files from external users
- LAN transfer - Peer-to-peer file transfer on local networks
- Search - Full-text search across files and folders
- Auto-updates - Built-in update mechanism
- System tray - Background sync with tray icon
- macOS Quick Action -
dosya://protocol handler for direct sync setup
- Electron 34 - Cross-platform desktop framework
- React 19 - UI framework
- TypeScript 5.7 - Type safety
- TanStack React Query - Server state management
- Zustand - Client state management
- Tailwind CSS 4 - Styling
- Radix UI - Accessible UI primitives
- electron-vite - Build tooling
- Node.js >= 18
- npm
npm installnpm run dev # Start dev server with hot reload
npm run build # Build for production
npm run typecheck # Run TypeScript checksnpm run package # Build for current platform
npm run package:mac # macOS (DMG, universal binary)
npm run package:win # Windows (NSIS, x64 + ARM64)
npm run package:linux # Linux (AppImage + DEB)src/
├── main/ # Electron main process
│ ├── index.ts # App lifecycle, window management
│ ├── sync/ # Sync engine (watcher, poller, reconciler)
│ ├── tray.ts # System tray integration
│ ├── updater.ts # Auto-updater
│ └── session.ts # Session management
├── preload/ # Preload scripts (context bridge)
└── renderer/ # React SPA
├── pages/ # Application pages
├── components/ # Reusable components
└── lib/ # API client, stores, utilities
Every dosya.dev client is source-available. Your files are yours - this repository lets you verify exactly what the app sends to and receives from our servers: what gets uploaded, what metadata travels with it, and what comes back. If a claim we make about privacy or sync behavior can't be verified in this code, open an issue and call it out.
Source-available under the Dosya Source Available License 1.0:
- You can read and audit the code, build and run it with the official dosya.dev service, and contribute improvements.
- You can't redistribute it, use it with any backend other than dosya.dev, or offer it as a service.
See LICENSE for the exact terms. Versions of this code previously published under the MIT license remain MIT for those who obtained them then.
Issues and pull requests are welcome. By submitting a contribution you license it to dosya.dev under the contribution terms in LICENSE.
Found a vulnerability? Please report it privately via GitHub private vulnerability reporting rather than a public issue.
| Repository | What it is | License |
|---|---|---|
| desktop | Desktop client - sync, upload, manage | Source-available |
| cli | Command-line interface | Source-available |
| app.dosya.dev | Web application | Source-available |
| shared | Shared TypeScript types & utilities | Source-available |
| dosya-js | Official JavaScript SDK | MIT |
| dosya-java | Official Java SDK | MIT |