
Browse and manage Amazon S3, MinIO, Wasabi, Cloudflare R2, DigitalOcean Spaces, and other S3-compatible storage from a focused Rust and Tauri desktop app. Search bounded prefixes, preview and edit objects, use AWS SSO profiles, and transfer large files on macOS, Windows, and Linux.
A focused desktop client for Amazon S3 and S3-compatible object storage
Brows3 turns S3 prefixes and objects into a familiar desktop file-browser workflow. It supports Amazon S3, MinIO, Garage, Cloudflare R2, Wasabi, DigitalOcean Spaces, Backblaze B2, STACKIT Object Storage, and custom S3-compatible endpoints. Direct s3:// paths also work for restricted accounts without broad bucket-list permission.
Discover current and legacy SSO profiles, use AWS SDK cached credentials, and refresh sessions through a profile-scoped AWS CLI v2 sign-in action.
Files at or above 100 MiB use adaptive, retryable, bounded-memory multipart transfers with progress, cancellation, and remote abort cleanup. This includes files beyond 5 GiB.
Set a persisted text preview limit from 1 to 100 MB. Images, audio, video, and PDFs stream through presigned URLs outside that memory allowance.
Infer MIME types on upload and edit a validated custom Content-Type while preserving supported object metadata, tags, security settings, and ACL grants.
Use freedesktop Secret Service instead of the volatile kernel session keyring, with migration for live legacy entries.
Shared AWS profiles with endpoint_url now use path-style addressing and compatible checksum behavior for MinIO-style services.
Read the complete v0.2.44 release notes.
Normal folder views use S3 prefixes, delimiters, and continuation tokens instead of pre-indexing an entire bucket.
Each recursive search is capped at 100 LIST requests, 100,000 scanned objects, and 10,000 matches.
Non-default sorting orders the complete selected prefix before pagination, capped at 100 LIST requests or 100,000 entries.
Bucket discovery uses a 30-minute per-profile cache, while bounded sorted views are reused for the current session and invalidated after writes or refreshes.
Rust Core
Handles S3 networking, credentials, bounded search and previews, caching, and multipart transfers.
React + Tauri UI
Provides a native desktop shell with virtualized object listings and paginated IPC between the UI and backend.
Browse the Brows3 desktop interface across setup, bucket navigation, transfers, and settings.
Start
Profile-first startup screen for connecting S3-compatible storage.
1 / 12
Get Brows3 v0.2.44 for Windows, macOS, or Linux. These links point directly to the verified GitHub release assets. Updater archives and signatures remain available on the release page.
| Platform | Architecture | Type | Action |
|---|---|---|---|
macOS Apple Silicon (M1/M2/M3/M4) | Apple Silicon (M1/M2/M3/M4) | DMG | DownloadGet |
macOS Intel (x64) | Intel (x64) | DMG | DownloadGet |
Windows x64 | x64 | MSI | DownloadGet |
Windows x64 | x64 | EXE | DownloadGet |
Windows x64 | x64 | Portable ZIP | DownloadGet |
Linux x64 (amd64) | x64 (amd64) | AppImage | DownloadGet |
Linux x64 (amd64) | x64 (amd64) | DEB | DownloadGet |
Linux ARM64 (aarch64) | ARM64 (aarch64) | AppImage | DownloadGet |
Linux ARM64 | ARM64 | DEB | DownloadGet |
Install with Windows Package Manager
The published package identity is Brows3Team.Brows3. Microsoft's catalog can briefly lag behind a new GitHub release while its validation and indexing complete.
winget install --exact --id Brows3Team.Brows3View the public Winget package · View the v0.2.44 release manifest
System requirements
View release notes, updater signatures, and every published asset on GitHub Releases
Current capabilities and operating boundaries in Brows3 v0.2.44
Browse delimiter-based S3 folders, open direct s3:// paths, and move quickly through known prefixes.
Upload, download, copy, move, and delete files or folders with queue progress and cancellation controls.
Use adaptive multipart transfers from 100 MiB upward with bounded memory, retryable parts, progress reporting, and cleanup after cancellation or failure.
Infer MIME types from object names and edit a validated free-form Content-Type without discarding supported metadata, tags, headers, security fields, or ACL grants.
Read and update object ACL grants and apply canned ACLs recursively where the provider and bucket support ACLs.
Generate temporary object links with a configurable expiry from the bucket view.
Edit text, JSON, YAML, and code objects directly in S3 while retaining the existing Content-Type.
Choose a persisted text preview limit from 1 to 100 MB (2 MB by default). The Rust backend streams and enforces the exact bound.
Preview images, audio, video, and PDFs through presigned URLs without loading the full object into the text-preview memory allowance.
Connect with access keys, system AWS profiles, IAM Identity Center sessions, or S3-compatible endpoint credentials.
Recognize SSO profiles, resolve cached SDK credentials, and launch an exact-profile AWS CLI v2 sign-in when a session expires.
Use macOS Keychain, Windows Credential Manager, or Linux Secret Service. Portable mode and keychain failures use the documented local secrets.json fallback.
Every queued transfer retains the profile that created it, so switching accounts cannot change the credentials used by an existing job.
Custom endpoints and shared profiles with endpoint_url use path-style addressing and compatibility checksum behavior.
Normal folder listings use S3 prefixes, delimiters, and continuation tokens rather than a full-bucket background index.
Scan up to 100,000 objects with at most 100 LIST requests and return at most 10,000 matches per search.
Order non-default views before pagination, capped at 100 LIST requests or 100,000 entries.
Cache bucket discovery for 30 minutes per profile and reuse bounded sorted views during the session, with invalidation after writes and refreshes.
Render only the visible rows so large loaded listings remain responsive.
Command failures cross the Tauri boundary as human-readable messages instead of JavaScript object placeholders.
Reject traversal, absolute, rooted, drive-prefixed, and null-containing object-key paths before writing locally.
Check for updater-signed desktop releases and review available versions from Settings or startup.
Inspect request success and failure counts plus application logs when diagnosing provider behavior.
The active data paths and safety limits in Brows3 v0.2.44
| Area | Behavior | Boundary |
|---|---|---|
| Folder browsing | S3 prefix and delimiter listing with continuation-token pagination | Loads the selected prefix. No background full-bucket index |
| Current-folder filter | Filters the folder results already loaded in the UI | Does not issue a recursive bucket scan |
| Deep search | Recursively lists the selected bucket or prefix | 100 LIST requests, 100,000 scanned objects, 10,000 matches |
| Non-default sorting | Orders the complete selected prefix before pagination | 100 LIST requests or 100,000 entries |
| Caching | Caches bucket discovery and bounded complete-prefix sorted views | 30-minute bucket TTL. The sorted-view session cache is capped and invalidated after writes |
| Text preview | Streams text through the Rust backend before returning it to the WebView | User-configurable limit from 1 to 100 MB, enforced even without reliable object metadata |
| Large uploads | Uses adaptive S3 multipart upload from 100 MiB upward | One part in memory, up to the S3 10,000-part limit, with abort cleanup |
S3 LIST requests can incur provider charges. The limits above bound a single deep search or complete-prefix sort. Normal folder browsing remains paginated.
How Brows3 keeps S3 work responsive and bounded
Brows3 does not pre-index a complete bucket. It combines prefix-aware S3 requests, explicit scan limits, targeted caches, and a virtualized desktop UI.
Owns S3 networking, credential resolution, bounded search and previews, multipart transfers, local path validation, and write-side cache invalidation.
Lists the selected folder with prefixes, delimiters, and continuation tokens. Recursive search and non-default sorting have request and object caps.
Caches per-profile bucket discovery for 30 minutes and bounded complete-prefix sorted views for the current session. It never creates an unbounded full-bucket tree.
Moves structured pages between Rust and the WebView while rendering only visible table rows to avoid blocking the interface.
Packages the same desktop experience for macOS, Windows, and Linux while using each platform's native credential service when available.
Build from source for your platform
The release repository currently declares pnpm 11.2.2
Matches the toolchain used by the release validation workflow
1. Install Rust
Download and run the installer from rustup.rs or run in PowerShell:
winget install Rustlang.Rustup2. Restart your terminal
Restart your terminal to refresh the PATH
3. Select and verify the release toolchain
rustup toolchain install 1.97.1
rustup default 1.97.1
cargo --version
rustc --version4. Clone and run
git clone https://github.com/rgcsekaraa/brows3.git
cd brows3
pnpm install --frozen-lockfile
pnpm tauri dev1. Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
rustup toolchain install 1.97.1
rustup default 1.97.12. Install Xcode Command Line Tools
xcode-select --install3. Clone and run
git clone https://github.com/rgcsekaraa/brows3.git
cd brows3
pnpm install --frozen-lockfile
pnpm tauri dev1. Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
rustup toolchain install 1.97.1
rustup default 1.97.12. Install system dependencies (Debian/Ubuntu)
sudo apt update
sudo apt install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf3. Clone and run
git clone https://github.com/rgcsekaraa/brows3.git
cd brows3
pnpm install --frozen-lockfile
pnpm tauri devpnpm tauri buildJoin the open source community
We welcome contributions from the community! Whether you are a Rustacean, a React developer, or a technical writer, your help is appreciated.
Look for "good first issue" labels on GitHub
Fork → Branch → Commit → Pull Request
Ensure Rust code is formatted with cargo fmt and TS code with pnpm lint
Help us improve Brows3 by sharing your ideas
Your request will be reviewed by our development team. We may reach out to your email for additional details.