Awd DriveRouter Desktop is a powerful, cross-platform desktop application that unifies multiple cloud storage providers into a single, intelligent file management interface. Built with Wails (Go) and React/Vite (TypeScript), it acts as a smart routing layer — letting you upload, sync, browse, and share files across 17 storage options (Google Drive, OneDrive, Dropbox, Box, Yandex Disk, pCloud, MEGA, Koofr, MediaFire, 4Shared, Backblaze B2, SMB/LAN Share, FTP, SFTP, WebDAV, S3-compatible, and Telegram) — all from one seamless desktop experience.
- ✨ Key Features
- 📷 Screenshots
- ☁️ Supported Cloud Providers
- 📁 Storage & Paths
- 🚀 Getting Started & User Guide
- 🛠️ Developer Guide
- ⚙️ Troubleshooting & Logs
⚠️ Disclaimer- 📄 License
- 🔀 Multi-Cloud Router: Connect and manage multiple cloud storage accounts simultaneously. DriveRouter intelligently routes file uploads across all configured providers using selectable strategies.
- 📤 Smart Upload Strategies: Choose how your files are distributed across providers:
- Round Robin: Spreads uploads evenly across all active accounts.
- Largest Free Space: Always uploads to the account with the most available storage.
- 🔄 Folder Synchronization & Automated Backup: Set up sync tasks that link local folders to any connected cloud account.
- Upload-Only Sync: Safely mirror local folders to the cloud without touching existing remote files.
- Two-Way Sync: Keeps both local and remote folders in perfect parity, reflecting additions and deletions bidirectionally.
- Configurable Backup Intervals: Background backup runs automatically at user-defined intervals.
- 📦 Archive & Compression: Select multiple files and compress them into a
.ziparchive on the fly. The resulting archive is automatically uploaded to your chosen cloud destination. - 🔗 File Sharing: Generate and retrieve direct web URLs for files hosted on connected providers for easy sharing.
- 🔒 Encrypted Token Storage: OAuth tokens and sensitive credentials are encrypted at rest using the built-in security layer — never stored as plain text.
- 📊 Storage Allocation View: Visualize storage usage and quota across all connected accounts in one unified dashboard.
- ⭐ Starred Files: Star frequently accessed files and access them quickly from the Starred view.
- 🕒 Recent Files: Instantly view the 30 most recently modified files across all connected providers.
- 📡 Real-time Upload Progress: A dedicated WebSocket server streams live upload progress directly to the frontend.
- ⚙️ Native Windows Integration: System tray support, minimize-to-tray on close, and configurable startup behavior.
- 🌐 Multi-Language Support: Fully localized English and Bahasa Indonesia interface.
![]() Main Dashboard / File Manager |
![]() Storage Usage Analytics |
![]() Starred File |
![]() Storage Allocation View |
![]() Settings, Backup & Provider Configuration |
![]() Recent Files |
| Provider | Connection Type | Notes |
|---|---|---|
| Google Drive | OAuth 2.0 | Requires OAuth client ID & secret from Google Cloud Console |
| OneDrive | OAuth 2.0 | Uses Microsoft Entra (Azure AD) app registration |
| Dropbox | OAuth 2.0 | Requires Dropbox app key & secret |
| Box | OAuth 2.0 | Requires Box OAuth 2.0 app credentials |
| Yandex Disk | OAuth 2.0 | Requires Yandex OAuth application credentials |
| pCloud | OAuth 2.0 | Requires pCloud OAuth app credentials |
| MEGA | Direct Login | Email & password — E2EE support |
| Koofr | Direct Login | Email & App Password — 10 GB free tier |
| MediaFire | Direct Login | Email & password — 10 GB free tier |
| 4Shared | Direct Login | Email & password — 15 GB free tier |
| Backblaze B2 | Access Keys | Application Key ID & Key — 10 GB free tier |
| Windows Share (SMB) | Direct Login | Host/IP, Share Name, Username, and Password — LAN Storage |
| FTP Server | Direct Login | Host, Port (21), username, and password |
| SFTP (SSH) | Direct Login | Host, Port (22), username, and password |
| WebDAV | Direct Login | Server URL, username, and password or app token |
| S3-Compatible | Access Keys | Endpoint, bucket, access key ID, and secret key |
| Telegram Bot | Bot Token | Bot token + target chat/channel ID |
| Telegram User | MTProto | Phone number, API ID, API hash — via my.telegram.org |
Note
For OAuth providers (Google Drive, OneDrive, Dropbox, Box, Yandex Disk), you must configure the following redirect URI in your provider's developer console:
http://localhost:5998/oauth/callback
For detailed per-provider setup instructions, see docs/provider-setup.md.
All configuration, metadata, and session data are stored in the platform-specific user configuration directory (resolved via os.UserConfigDir() — %APPDATA% on Windows, ~/.config on Linux, ~/Library/Application Support on macOS):
- Application Database:
<UserConfigDir>/driverouter/driverouter.db— SQLite database holding all file records, account credentials (encrypted), sync tasks, and settings. - OAuth Callback Server: Runs locally at
http://localhost:5998/oauth/callbackduring authentication flows. - Upload WebSocket Server: A local WebSocket server streams real-time upload progress to the frontend UI.
To run the pre-built application, simply double-click the Awd-DriveRouter.exe executable. No additional runtime drivers are required beyond Windows WebView2 (included by default on Windows 10/11).
- Open the application and navigate to Cloud Accounts (or Settings for OAuth providers).
- For OAuth providers (Google Drive, OneDrive, Dropbox, Box, Yandex Disk):
- First, configure your OAuth credentials in Settings under the respective provider section.
- Then open Cloud Accounts and click Connect for the desired provider.
- A browser window will open for authentication. After login, the app automatically captures the OAuth token via the local callback server.
- For direct-login providers (pCloud, WebDAV, S3, Telegram):
- Open Cloud Accounts → Connect → select the provider.
- Fill in the required credentials and submit.
Important
OAuth tokens are encrypted at rest. However, keep your api_id, api_hash, and OAuth client secrets private and never share your application database file.
Configure how DriveRouter distributes uploads in Settings → Upload Strategy:
- Round Robin (default): Each new upload is sent to the next account in rotation, spreading data evenly.
- Largest Free Space: Each upload is routed to the account that currently has the most available quota.
- Go to the Backup / Sync tab.
- Click Add Task and select a local folder using the folder picker dialog.
- Choose the target cloud account and a destination folder within that account.
- Select the sync mode:
- Upload-Only: Local changes are mirrored to the cloud (safe, one-directional).
- Two-Way Sync: Additions and deletions are reflected on both sides.
- Set the backup interval in Settings → Backup Interval (default: 60 seconds).
- Enable the task. The background service runs automatically at the configured interval.
- Right-click or use the action menu on any file in the File Manager.
- Select Open Web URL or Share.
- The app retrieves and opens the provider's native web URL for that file.
- Select multiple files in the File Manager using checkboxes.
- Click Compress to ZIP.
- Enter an archive name. The app downloads all selected files, packages them into a
.zip, and uploads the archive to your target destination automatically.
- Go to Cloud Accounts → Connect → Telegram User.
- Enter your phone number, Telegram API ID, and API hash (obtained from my.telegram.org).
- Enter the OTP code sent to your Telegram account.
- If Two-Step Verification is enabled, enter your 2FA password.
awd-drive-router-desktop/
├── app.go # Main Wails application lifecycle, startup, and shutdown
├── app_accounts.go # Cloud account management, OAuth flows, and settings API
├── app_archive.go # ZIP compression and multi-file archive upload logic
├── app_backup.go # Folder sync task management and background backup service
├── app_files.go # Virtual file system: browse, upload, download, delete
├── app_preview.go # File preview helpers and media type detection
├── app_sharing.go # File sharing and remote web URL resolution
├── app_transfer.go # Core upload/download transfer orchestration
├── main.go # Go application entry point
├── shared_view.go # Shared file/folder view helpers
├── tray.go # Windows system tray integration (Windows-only build)
├── tray_other.go # No-op tray stub for non-Windows platforms
├── upload_ws.go # WebSocket server for real-time upload progress
├── backend/
│ ├── db/ # SQLite database layer (accounts, files, sync tasks, settings)
│ ├── provider/ # Provider client implementations (Drive, OneDrive, S3, etc.)
│ ├── router/ # Upload routing logic (round-robin, largest-free-space)
│ ├── security/ # Token encryption and decryption utilities
│ └── sync/ # Sync engine: diff computation and two-way sync execution
├── docs/
│ └── provider-setup.md # Detailed per-provider OAuth setup guide
├── go.mod # Go module dependencies
├── go.sum # Go module checksums
├── logo.png # Application logo
├── wails.json # Wails project configuration
├── build/ # Wails build assets and output binaries
└── frontend/ # React + Vite + TypeScript frontend application
To run the project locally with live-reloading:
- Install dependencies:
Make sure you have Go (1.25+), Node.js, and Wails CLI installed.
# Install Wails CLI if you haven't already go install github.com/wailsapp/wails/v2/cmd/wails@latest - Start Dev Server:
The application will launch with hot-reload enabled. The Go dev server is also accessible at
wails dev
http://localhost:34115for browser-based testing.
Awd DriveRouter Desktop is fully cross-platform and can be compiled for Windows, macOS, and Linux.
- Windows:
build/bin/Awd-DriveRouter.exe - macOS:
build/bin/Awd-DriveRouter.app(App Bundle) - Linux:
build/bin/Awd-DriveRouter
Compile an optimized, clean production binary for the current OS:
wails build -clean -ldflags "-s -w"# Build for Windows
---
## 🌐 Application Execution Modes
Awd DriveRouter supports flexible **Dual-Mode** execution:
### 1️⃣ Desktop GUI Mode (Standard Users)
- **Execution**: Double-click `Awd-DriveRouter.exe` (or run `wails dev`).
- **Interface**: Native desktop application window.
### 2️⃣ Headless Web Server Mode (Web Browser Compatible)
- **Execution on Windows**:
```powershell
.\driverouter.exe --server --port=8080 --api-key=your_secret_key- Local Web Browser Access: Open browser (Chrome / Edge / Firefox) at
http://localhost:8080. - Access from Other Devices on Internal Wi-Fi/LAN:
- The app automatically detects and prints your local LAN IP address on server startup (e.g.,
http://192.168.1.50:8080). - To check your IP manually on Windows: open PowerShell and type
ipconfig(check the IPv4 Address field). - Other devices (phones/tablets/laptops) on the same Wi-Fi can directly access
http://<YOUR-LAN-IP>:8080.
- The app automatically detects and prints your local LAN IP address on server startup (e.g.,
- Restrict Access to Local Host Only:
Run with
--host=127.0.0.1to prevent other LAN devices from reaching the server:.\driverouter.exe --server --host=127.0.0.1 --port=8080
- System Tray Integration: Clicking "Open Awd DriveRouter" on the Windows System Tray icon will automatically open your web browser at
http://localhost:8080.
To deploy Awd DriveRouter on a Linux VPS (Ubuntu / Debian / Cloud VM):
On your local PC (Windows), build a Linux binary using Go cross-compilation:
$env:GOOS="linux"; $env:GOARCH="amd64"; go build -o driverouter-server .Upload driverouter-server to your VPS and grant execution permissions:
chmod +x driverouter-serverCreate a systemd unit file at /etc/systemd/system/driverouter.service:
[Unit]
Description=Awd DriveRouter Headless Web Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/driverouter
ExecStart=/opt/driverouter/driverouter-server --server --port=8080 --api-key=your_secret_key
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetEnable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable driverouter
sudo systemctl start driverouterFor 1-command containerized deployment:
docker-compose up -d --buildAccess the web dashboard via browser at http://your-vps-ip:8080.
Caution
If you plan to expose Awd DriveRouter to the public internet, follow these critical security best practices:
-
Mandatory API Key Protection: Always specify
API_KEYin environment variables or--api-keyflag when running in server mode. Without an API Key, anyone with your IP address can access your connected cloud accounts.environment: - SERVER_MODE=true - API_KEY=StrongRandomSecretKey123!
-
Always Use HTTPS / TLS (Nginx or Caddy Reverse Proxy): Never expose raw HTTP (
:8080) directly to the public internet. Use a reverse proxy like Nginx or Caddy with free Let's Encrypt SSL certificates.Example Nginx Configuration (
/etc/nginx/sites-available/driverouter):server { listen 80; server_name drive.yourdomain.com; return 311 https://$host$request_uri; } server { listen 443 ssl http2; server_name drive.yourdomain.com; ssl_certificate /etc/letsencrypt/live/drive.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/drive.yourdomain.com/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
-
Firewall Rules: Restrict port
8080using UFW/iptables so it only listens on127.0.0.1locally, forcing all public incoming traffic through HTTPS (port443):sudo ufw default deny incoming sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 22/tcp sudo ufw enable
- WebView Errors: Ensure your Windows has the WebView2 runtime installed (included by default on Windows 10/11).
- OAuth Callback Fails: Verify that the redirect URI
http://localhost:5998/oauth/callbackexactly matches the URI configured in your provider's developer console. - Missing Credentials Error: If a provider shows "credentials not configured", open Settings and ensure the client ID and client secret for that provider are saved before connecting.
- Sync Task Not Running: Confirm the task is enabled in the Backup / Sync tab and that the local folder path still exists.
- Token Expired / Re-authentication Required: Disconnect and reconnect the affected account from Cloud Accounts.
- Reset Application State: To fully reset the app (delete all accounts, settings, and file records), delete the
%APPDATA%\driverouter\directory on Windows.
This project is an independent open-source development created solely for educational and personal productivity purposes. It is not affiliated, associated, authorized, or endorsed by Google, Microsoft, Dropbox, Box, Yandex, pCloud, Telegram, Amazon Web Services, or any other service provider whose APIs are integrated.
Users are solely responsible for ensuring their usage complies with each provider's Terms of Service and any applicable local or international laws. The developers assume no liability for misuse, data loss, service interruptions, policy violations, or any other consequences resulting from the use of this software.
This project is licensed under the MIT License. See the LICENSE file for the full license text.
Made with ❤️ by I Putu Agus Wahyu Dupayana






