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-Type the server returns. list_objects_v2 doesn’t include it, so BucketDock fires batched HEAD requests 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-stream for 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.

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
  • Enter on 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