Skip to content

About

Native macOS S3 browser built with SwiftUI. Browse, preview, share and manage files on Amazon S3 and S3-compatible storage, with versions, share links, storage overview and one-way sync.

Topics

Resources

Contributing

Security policy

Stars

4 stars

Watchers

1 watching

Forks

Repository files navigation

Bucketdeck app icon

Bucketdeck

A native S3 browser for macOS. Browse, preview, share, and manage the objects in your buckets.

Download Bucketdeck for macOS

Website: bucketdeck.com

Latest release macOS 26+ Swift 6 GPL-3.0 license Listed on OpenMacApps

Bucketdeck is an early macOS app for Amazon S3 and S3-compatible object stores. It was formerly called OpenBucket. Every connection is read-only until you turn on Allow changes for it. It uses SwiftUI, the macOS 26 Liquid Glass appearance, and Soto behind a replaceable S3 adapter. It stays focused on S3 rather than adding unrelated file protocols.

Download

Use the Download for macOS button above: it always fetches the newest signed and notarized Bucketdeck-macOS.dmg from GitHub Releases. Open the DMG, drag Bucketdeck to Applications, and launch it from there. Bucketdeck runs on Apple silicon and Intel Macs with macOS 26 or later; every release lists its changes and a SHA-256 checksum. See how releases are prepared.

Or install it with Homebrew from Koative's tap, which follows each new release:

brew trust koative/tap
brew install --cask koative/tap/bucketdeck

See it in action

The screenshots show a real Bucketdeck window connected to a local Garage server, seeded with the fictional demo objects from docs/demo-assets.

Grid view of an outdoor brand's autumn campaign folder with photo and video thumbnails, a selected photo, and the Info panel with details and photo dimensions

List view of the same folder with name, size, modified and kind columns for its photos, videos, ZIP and PDF, a selected photo, and the Info panel

Storage Overview of a whole bucket, 13.5 GB in 3,287 objects: a treemap of its folders with backups taking 76%, the storage class, and the largest files

What works

Area Current behavior
Connections Multiple profiles; endpoint shapes for Amazon S3, Cloudflare R2, Backblaze B2, Wasabi, DigitalOcean Spaces and Hetzner Object Storage, so they need only a region or an R2 account ID; any other HTTP or HTTPS endpoint with region and addressing style; access keys with an optional session token or a named AWS CLI profile (static keys, roles, IAM Identity Center after aws sso login)
Restricted accounts Open a known bucket without account-wide ListBuckets permission; start in a chosen folder
Browsing Grid and sortable native table, breadcrumb path, folder navigation, s3:// links (also opened from other apps) and S3 console URLs in Go to Location, favorites and recent folders per connection, filter and search below the current folder, refresh, incremental ListObjectsV2 loading
Selection and commands Native multi-selection in grid and list (⌘A, ⇧-click, ⌘-click); menu commands and shortcuts for the enclosing folder (⌘↑), back and forward (⌘[ ⌘]), grid and list (⌘1 ⌘2), Find (⌘F) and the Info panel (⌥⌘I); context menus; Copy S3 URI
Media and details Image and video thumbnails with a Show Previews toggle; Quick Look with Space or ⌘Y; inline video playback; HEAD details, user metadata, tags and photo EXIF in the Info panel
Versions Version history per file with Quick Look, download and restore; Show Deleted Files (⇧⌘.) and Browse As Of a date on versioned buckets
Downloads and links File, batch and whole-folder downloads with byte progress, cancellation and failed-key reporting; several transfers at once, each moving four files at a time; drag files out to Finder; presigned share links (15 minutes to 7 days) with QR code
Changes With Allow changes on: upload files and folders (⌘U, toolbar or Finder drop; large files in multipart parts), New Folder (⇧⌘N), rename, Move To or drag items onto a folder, a parent in the path bar or a sidebar folder (hold ⌥ to copy instead), Delete (⌘⌫), restore versions and deleted files, edit content headers, metadata and tags. Existing names prompt Replace, Keep Both or Skip
Insight and sync Storage Overview: treemap of a folder by size and kind, storage classes and largest files. Compare with Local Folder: checks a local copy against S3 by size and checksum, then optionally Update S3 or Update Mac with the new and changed files; nothing is deleted on either side, and replaced local files go to the Trash
Shortcuts App Intents for opening a favorite or an s3:// location and copying a share link; favorites appear in Spotlight
Secrets Access keys and session tokens in macOS Keychain; non-secret connection settings in a user-only profile file

Continuous or two-way sync, Finder mounting, bucket management, permanent deletion of individual versions and non-S3 protocols are outside this preview. Compatibility details document endpoint paths, the S3 operations used, and provider test status; security details explain local storage, temporary files, and what changes S3.

Connect to S3

After installing the app:

  1. Choose Add Connection.
  2. Pick the Provider and enter its region (for Cloudflare R2, the account ID instead); the endpoint fills in. For anything else, choose Other S3-compatible and enter the endpoint URL and region. For a custom service such as Garage, choose Path style if its buckets live beneath the endpoint path.
  3. Enter an access key and secret. Set Known bucket when the key cannot list all buckets. Starting folder is optional and opens a folder inside that bucket.
  4. Test the connection, save it, and browse. Use the toolbar's location action to jump directly to s3://bucket/folder/. To upload or change files, edit the connection and turn on Allow changes.

The endpoint URL path and the starting folder are separate. For example, endpoint https://store.example.com/s3/, known bucket photos, and starting folder 2026/travel/ address objects under the bucket without dropping /s3/ from the signed request. A proxy must preserve the signed request path. See endpoint behavior.

Build and test

Building from source requires macOS 26 or later and Xcode 27. Open Bucketdeck.xcodeproj, select the Bucketdeck scheme, and run it on your Mac. The Xcode project is committed; XcodeGen is needed only after changing project.yml:

xcodegen generate --spec project.yml
swift format lint --strict --recursive App AppTests Packages/Bucketdeck/Sources Packages/Bucketdeck/Tests
xcodebuild test -project Bucketdeck.xcodeproj -scheme Bucketdeck -destination 'platform=macOS' -derivedDataPath DerivedData -disableAutomaticPackageResolution CODE_SIGNING_ALLOWED=NO
swift test --package-path Packages/Bucketdeck

Unit tests need no AWS account. The optional live S3 test uses an isolated bucket and environment variables documented in compatibility testing. For every change outside site/, GitHub Actions runs the format check, app tests, package tests, and a check that the committed Xcode project matches project.yml on an Xcode 27 runner.

Website

The website at bucketdeck.com lives in site/ and is built with Astro and Bun 1.4.3 or later:

cd site && bun install && bun run dev

.github/workflows/site.yml builds it and deploys it to GitHub Pages on pushes to main that touch site/ (or the screenshots and app icon it uses), and again when a release is published so the page shows the newest version.

How the code is organized

flowchart LR
    UI[SwiftUI app] --> Core[BucketdeckCore]
    UI --> Local[Profiles + Keychain]
    Core --> Port[S3Repository protocol]
    Port --> Adapter[BucketdeckS3 adapter]
    Adapter --> Soto[Soto]
    Soto --> Store[(S3 endpoint)]
Loading

BucketdeckCore owns S3 values and browsing state. BucketdeckS3 adapts Soto and keeps SDK types outside the UI. App contains SwiftUI and macOS storage; BucketdeckApp wires them together. The adapter boundary allows the SDK implementation to change without reshaping the browser.

Contributions are welcome; read CONTRIBUTING.md. Report vulnerabilities privately as described in SECURITY.md.

License

Copyright © 2026 Koative LLC. Bucketdeck is free software: you can redistribute and modify it under the terms of the GNU General Public License, version 3. Anyone who distributes a modified version must publish its source code under the same license. Releases up to and including v0.2.3 were published under the MIT License, and those releases keep it.

The Bucketdeck name and app icon identify Koative LLC's builds and are not covered by the license; a distributed fork needs its own name and icon.

Made by koative

About

Native macOS S3 browser built with SwiftUI. Browse, preview, share and manage files on Amazon S3 and S3-compatible storage, with versions, share links, storage overview and one-way sync.

Topics

Resources

Contributing

Security policy

Stars

4 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages