Secure, Versioned File Sharing Purpose-Built for Music Production
Music producers and audio engineers working in teams face a unique set of collaboration challenges that generic cloud storage tools were never designed to solve:
DAWShare was built from the ground up to address these problems with a system that understands the specific structure and workflow of DAW projects.
DAWShare is a self-hosted file sharing and version control platform designed specifically for music production teams. It provides:
| Capability | Description |
|---|---|
| Version Control | Every push creates an immutable version. Full history is preserved and any version can be restored. |
| Delta Sync | Only changed bytes transfer over the wire. A 2 GB project with a few tweaked audio files syncs in seconds. |
| Background Sync | Push operations run in the background after user confirmation; macOS delivers a success or failure notification on completion. |
| File-Level Deduplication | Identical files (samples, loops, stems) are stored once across all versions and projects in a collab. |
| Check-out / Check-in | A user can lock a project while editing, preventing others from pushing conflicting changes. |
| Encryption at Rest | All stored files are encrypted with AES-256 using per-collab keys derived via PBKDF2. |
| Audit Logging | Every sync, upload, download, and administrative action is recorded with timestamps and user attribution. |
| Automatic Backups | Before each pull overwrites local files, changed files are backed up to a timestamped folder. |
| Server-Side Mapping Recovery | Folder-to-project mappings are stored server-side and automatically recovered on new machines or data loss. |
| Smart Folder Setup | On first sync, the app offers to auto-create a local folder pre-named after the project, defaulting to the Logic Folder with the option to choose any location. |
| Moved Folder Detection | If a project folder has been moved or renamed, the app automatically locates it by scanning common music directories and sibling folders. |
| Restore Last Project | When the app launches, the browser reopens directly to the last project the user was working on. |
| Project Cover Art | Users can upload cover artwork (JPEG, PNG, GIF, WebP, SVG) for each project, displayed throughout the web UI. |
| Version Notes | Each push can include free-text session notes for context and searchability. |
| Project Finalization | Projects can be marked as final to prevent further changes. Finalization optionally records library placement metadata (library name, album, and streaming URL). |
Users are organized into Collabs (collaborative groups). Each collab has its own projects, storage quota, and encryption key. Users join collabs via invite codes and can be members of multiple collabs simultaneously. Collab owners can manage members and regenerate invite codes.
We take security seriously because we know you take your music seriously. While balancing ease of use and flexibility, we also made sure that your music stays locked up and accessible only to you and your collaborators.
Using tried and true secure technology with SSH, your projects sync directly with our servers over a secure tunnel via a local connection. The SSH tunnel creates a private, encrypted pathway between your computer and the DAWShare server — your data never travels over an unencrypted channel.
All SSH connections are non-interactive — the system uses key-based authentication with no passwords or manual intervention required. The installer generates an ed25519 SSH key pair on the user's device, registers the public key on the server, and configures macOS Keychain (or Windows Credential Manager) so the connection is fully automatic.
The server's SSH account uses a force-command wrapper that intercepts every incoming SSH connection. This wrapper:
rsync --server commands are permitted. All other commands (shell access, SCP, SFTP, etc.) are rejected../../) are blockedEach user can register multiple SSH keys for multiple devices (e.g., studio desktop, laptop, home workstation). Every registered key's SHA-256 fingerprint is stored in the database and linked to the user's account. On each rsync connection, the server verifies that the connecting key belongs to the correct user:
authorized_keys entry with an environment= prefix: environment="DAWSHARE_KEY_FP=SHA256:xxxx"DAWSHARE_KEY_FP environment variable when the user connects with that key (requires PermitUserEnvironment yes in the server's SSH configuration)/sync/verify-fingerprint API to confirm the fingerprint belongs to the same user who created the sync sessionLegacy keys registered before fingerprint tracking was introduced are allowed through with a logged warning, maintaining backward compatibility while encouraging re-registration.
ssh-add --apple-use-keychain, enabling automatic unlocking without user interactionUseKeychain yes and AddKeysToAgent yes for seamless key management across rebootsYour Login Key is your password. It is reported to you once and it is hashed on our servers so we don't know what the plain text Login Key is. This is used as your key to unlock access to sync your projects with our servers.
It is incredibly simple to register your web account with a free authenticator app like Microsoft® or Google® Authenticator. This helps to lock down your web account so only you have access. Whenever you login through the web you just enter the authenticator code on your phone and we know that it is you.
All projects are encrypted on our servers. When you upload or sync your files, they are immediately encrypted after the upload and processing is complete. This provides yet one more level of security to ensure your project files stay safe.
Every uploaded file is actively scanned for malware and viruses using ClamAV, an industry-standard open-source antivirus engine. Virus signature databases are automatically updated via the freshclam daemon to ensure protection against the latest known threats. This prevents the introduction of malicious content into shared projects and protects all collaborators who download or sync files.
In addition to antivirus scanning, uploaded archives pass through a structural security check that flags suspicious file types (executables, scripts, batch files) that would not normally appear in a DAW project.
Every action is logged: syncs, uploads, downloads, project creation/deletion, check-outs, collab management, and user authentication events. Logs include user identity, timestamp, IP address, and action-specific details. Admins can view grouped audit logs filtered by collab, project, or user.
DAW projects are highly redundant. A typical Logic Pro project shares most of its audio files between versions — a 90-second vocal take doesn't change when the mix engineer adjusts EQ settings. DAWShare exploits this with file-level content-addressable deduplication:
Storage quotas are enforced per-project (default 1 GB) and per-collab (default 10 GB), measured by actual bytes stored after deduplication.
The sync protocol is designed to minimize data transfer for large projects where only a few files change between versions:
/sync/session)rsync from the local project folder to the staging directory — only changed bytes transfer/sync/session/{id}/complete)rsync from the staging directory to the local folder with --backup to preserve overwritten filesEach sync session generates a time-limited token (default 15 minutes) that authorizes the rsync SSH connection. An SSH force-command wrapper on the server validates the token and restricts rsync to the session's staging directory, preventing unauthorized file access.
DAWShare stores folder-to-project mappings both locally and on the server. If the local configuration is lost (new machine, reinstall, accidental deletion), the system recovers automatically:
local_id (UUID) stored in a .dawshare marker filelocal_id and folder path to the serverLocalProjectMapping table keyed by (user_id, local_id)GET /me/project-mappings and rebuilds it for paths that still exist on diskIf the local project folder has been moved or renamed, the app automatically locates it before syncing rather than reporting an error. The search checks sibling directories of the last known path, as well as common music directories (~/Music/Logic, ~/Documents, ~/Desktop, ~/Music). When found, the user is shown a confirmation dialog before proceeding. The corrected path is then saved back to the server so subsequent syncs resolve correctly.
When a user syncs a project for the first time and no local folder exists, the app offers to create one automatically. A dialog pre-fills the folder name with the project name (editable), and offers two placement options: the user's Logic Folder (default) or a custom location chosen via the native folder picker. The folder picker includes a New Folder button so the user can create subdirectories without leaving the dialog.
When the desktop app launches and opens a browser window, it automatically navigates to the last project the user was viewing rather than the projects list. The last-visited project path is stored in localStorage and threaded through the auto-login URL so the redirect happens silently on every launch.
Before a pull overwrites local files, DAWShare automatically backs up changed files to a timestamped folder. Users can browse these backups directly from the project page in the web UI. Backups can be disabled per-user in profile settings.
Each project can have a custom cover image uploaded via the web UI. Raster images (JPEG, PNG, GIF, WebP) are automatically resized and optimized for display. SVG files are stored as-is and rendered natively in the browser. Cover art is displayed on the project detail page, the projects list, and anywhere the project is referenced in the UI.
When pushing a new version, users can optionally add free-text session notes describing what changed. Notes are displayed alongside each version in the version history table and are searchable and filterable, making it easy to locate a specific session across a long history.
Each project stores rich metadata editable from the web UI: musical key, BPM, DAW type, genre (with sub-genre), mood, and instrumentation tags. This metadata supports organization across large collabs and aids in locating projects by musical or technical criteria.
Projects can be marked as final, locking them against further version uploads. Finalization is an intentional milestone action and optionally captures library placement metadata:
The web UI provides autocomplete suggestions for library names and album names drawn from the user's placement history across all projects. Selecting a known library automatically populates the associated album dropdown and pre-fills the URL. Library metadata can be updated at any time after finalization without reopening the project. Finalized projects display a dedicated banner with a direct link to the placement.
The server exposes a public GET /client-version endpoint that returns the current installer version, release date, and download URL. The desktop app checks this endpoint once per day and displays an in-app update dialog when a newer version is available. The web UI shows a dismissible top banner for the same purpose. Users can dismiss the banner per-version for up to 7 days.
| Platform | Status | Components |
|---|---|---|
| Web (any browser) | Available | Full web UI: project management, upload/download, file browser, audio preview, admin panel |
| macOS | Available | Native .app with one-click installer, SSH tunnel, rsync sync, URL scheme handler |
| Windows | In Development | PowerShell sync client, installer, URL scheme handler (not yet tested) |
DAWShare is DAW-agnostic. It works with any software that stores projects as files or folders, including Logic Pro, Ableton Live, Pro Tools, FL Studio, Cubase, Studio One, REAPER, GarageBand, Reason, and Bitwig Studio. It can also sync standalone audio folders (stems, bounces, multitracks).
The macOS installer handles the complete setup process without requiring a web browser:
UseKeychain yes, and AddKeysToAgent yesdawshare:// URL scheme registeredA monitoring script runs on a configurable schedule (default: every 5 minutes) and checks system health:
Alerts are delivered via desktop notifications, server-side alert API, and direct SMTP email fallback if the server is unreachable. A 30-minute cooldown prevents alert flooding.
Automated database backups follow a Grandfather-Father-Son (GFS) rotation strategy:
Backups are created via pg_dump and stored on the NFS mount. A pre-flight check verifies the mount is available before proceeding, and rotation only runs after a successful dump.
Users can configure per-event email notification preferences from their Profile page:
Push sync operations fork to a background process immediately after the user confirms. The browser tab can be closed and work can continue while the sync completes. On macOS, a system notification is delivered on success (Glass sound) or failure (Basso sound), with a direct link to the sync result. A real-time progress page is available for users who wish to monitor the operation.