Docs
BucketDock is a desktop app, so all storage operations run inside the app itself. There is no service or login. You add a connection, the app talks to S3 from your Mac, and access keys are stored in the macOS Keychain.
Install
Download the latest .dmg from the
download and install page, drag
BucketDock.app into Applications, and
launch it.
Current public builds are unsigned developer previews. If macOS says BucketDock is damaged or blocks the first launch, follow the Terminal steps on the macOS install guide.
Add a connection
Click the + button in the sidebar and fill in the form.
AWS S3
Provider: AWS S3
Region: eu-central-1
Endpoint: (leave empty)
Buckets: (leave empty to auto-list, or list specific names)
Cloudflare R2
Provider: Cloudflare R2
Endpoint: https://<ACCOUNT_ID>.r2.cloudflarestorage.com
Region: auto
Buckets: your-bucket-name
Use the account endpoint, not a bucket-appended
URL. For bucket-scoped credentials, list the bucket names in the
Buckets field — comma, space, newline or semicolon
separated.
Hetzner Object Storage
Provider: Hetzner Object Storage
Endpoint: https://fsn1.your-objectstorage.com
Region: (hidden in the app)
Buckets: optional list
S3-compatible (MinIO, Backblaze B2, etc.)
Provider: Custom (S3-compatible)
Endpoint: https://your-endpoint.example.com
Region: us-east-1
Buckets: optional list
Transfer queue
Every upload, download, bucket-to-bucket copy and bulk delete is tracked in the dock at the bottom-right of the window. Each row shows live progress (multipart uploads emit per-part progress, and deletes count objects processed) and a status indicator. You can:
- Cancel a running transfer
- Retry a failed transfer in place
- Clear finished entries to keep the dock tidy
Browse, filter and preview
-
The top toolbar carries
back / forward buttons (or
⌘[/⌘]) plus the current folder name. The full clickable path bar sits at the bottom of the window — click any segment to jump straight there. The toolbar never wraps onto a second row: when the window narrows, lower-priority actions collapse into a “…” overflow menu on the right. - Folder rows have a small ">" disclosure triangle. Click it to expand the folder inline and see its contents indented under the row, without navigating into it. Click again to collapse.
- The toolbar has an inline filter box that narrows the current listing by case-insensitive substring.
- Click any column header to sort by Name, Type, Storage Class, Size or Modified. Click again to reverse the direction.
- The Name column is resizable, so long filenames and folder names stay clipped instead of forcing the table wider than needed.
-
The Type column shows the
real
Content-Typethe server returns.list_objects_v2doesn’t include it, so BucketDock fires batchedHEADrequests in the background and fills the cells in as they arrive. While the HEADs are still in flight (or for folders with no real type) you’ll see the default S3 fallback (application/octet-streamfor files,—for folders). - Selecting a connection without a bucket shows a bucket grid in the right pane.
-
The trailing
…button on each row opens the same menu as a right-click. - Double-click a file (or pick Preview from the menu) to open an inline preview for images, audio, video, PDFs and text files.
- Pick Get Info to inspect headers and user metadata read-only, or Edit Headers… to change Content-Type, Cache-Control, custom user metadata and more.
-
Folder rows also offer Folder Size in the context
menu — or just click the
—in the Size column. BucketDock walks all nested subfolders and shows the total size of every object under that prefix. - Renaming a folder or copying a folder between buckets is implemented as a recursive copy of every object below the prefix, followed by a delete of the originals on rename.
-
Renaming also moves an object inside the same
bucket — type a path with slashes (e.g.
archive/2024/photo.jpg) and the file or folder is copied to that prefix and the original removed.
macOS application menu
BucketDock installs a native menu bar with the standard macOS arrangement — File (New Connection, New Folder, Upload Files…, Upload Folder…, Refresh, Get Info), Edit (with native Cut / Copy / Paste / Find), View, Window, and Help with links to bucketdock.com, this documentation page, the GitHub repository and the issue tracker.
Copy and move between buckets
Right-click one or more files or folders and choose Copy to… or Move to…. Pick a destination connection (it can be a different provider) and a bucket. The destination is then chosen from a folder tree: click a row’s disclosure triangle to expand its children inline, click the row body to select it as the destination. The New Folder button creates a sub-folder under the current selection so you can carve out a fresh destination without leaving the dialog — the new folder is then auto-selected so the next click queues the transfer.
Each file becomes a tracked transfer that streams through the desktop and reports progress as it goes. Folders are expanded recursively and every object below the prefix is queued.
Move is implemented as copy-then-delete-source, but each individual source object is removed only after its own copy completes successfully. Folders are tracked as a group: the source prefix is wiped only when every file in the subtree copied cleanly. A partial, cancelled or failed copy leaves the original untouched so you can safely retry.
Window behaviour on macOS
BucketDock follows the standard macOS pattern: clicking the red
traffic-light button hides the window so the app
keeps running in the background. Click the BucketDock icon in the
dock to bring the window back. Use ⌘Q (or
BucketDock → Quit) to actually quit.
Keyboard shortcuts
-
Delete/Backspace— delete the current selection Enteron a single folder — open the folder⌘A— select all visible items-
⌘I— open Get Info for the selected file
Where data lives
Connection metadata is stored at:
~/Library/Application Support/BucketDock/connections.json
Secret access keys are stored separately in the macOS Keychain under
the service name com.bucketdock.app. As of the latest
build all secrets live in a
single bundled entry (account
bucketdock://secrets-v2) so macOS prompts you once per
session instead of once per connection. Legacy per-connection
entries are migrated forward on first launch and removed.
Build from source
git clone https://github.com/bucketdock/bucketdock.git
cd bucketdock
pnpm install
pnpm tauri build
Build artifacts are written under
src-tauri/target/release/bundle/.
Not yet implemented
- Object tags
- Finder reveal
- Bucket policy inspection